深入淺析Python代碼規(guī)范性檢測(cè)
一定要注重代碼規(guī)范,按照平時(shí)的代碼管理,可以將Python代碼規(guī)范檢測(cè)分為兩種:
- 靜態(tài)本地檢測(cè):可以借助靜態(tài)檢查工具,比如:Flake8,Pylint等,調(diào)研了一下,用Flake8的相對(duì)較多,功能滿足,本文將使用Flake8
- git:可借助git hooks,本文推薦使用pre-commit。
靜態(tài)本地檢測(cè)
Flake8包裝了Pyflakes、Pycodestyle和McCabe,也可以自定義插件。功能包括:
- 檢查代碼是否符合PEP8
- 檢查是否包含語法錯(cuò)誤和未使用的變量和導(dǎo)入
- 檢查代碼的復(fù)雜度
pip install flake8
配置
推薦在pycharm中配置flake8:

參數(shù)說明:
- Program中填寫Flake可執(zhí)行文件的具體路徑
- arguments中可添加自定義參數(shù),比如設(shè)置每行的最大字符數(shù),過濾某些文件(夾)等。
安裝完了之后單擊就可以檢測(cè)了:

執(zhí)行檢測(cè)之后,如果出現(xiàn) exit code 0 就說明代碼規(guī)范,否則可按照提示進(jìn)行整改。
pre-commit
官網(wǎng): https://pre-commit.com/
介紹:
使用git的話,可以使用pre-commit鉤子,在調(diào)用 git commit 命令時(shí)會(huì)自動(dòng)執(zhí)行腳本進(jìn)行檢測(cè),若代碼出錯(cuò),則不會(huì)commit成功。
作用:
- 在
git commit命令之前對(duì)代碼進(jìn)行規(guī)范性檢測(cè) - 按照配置,對(duì)一些不符合規(guī)范的代碼自動(dòng)更新為規(guī)范的(比如:填充空格、更新import等)
- 提示更新之后仍不符合規(guī)范的代碼
安裝
pip install pre-commit
Linux中安裝完成即可執(zhí)行pre-commit命令,Windows中需將.exe的路徑添加至環(huán)境變量,方可執(zhí)行pre-commit命令。
配置
在項(xiàng)目根目錄下添加.pre-commit-config.yaml文件。
可參考官網(wǎng)樣例,:
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.3.0 hooks: - id: check-yaml - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/psf/black rev: 19.3b0 hooks: - id: black - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.3.0 hooks: - id: flake8 args: - --max-line-length=120
具體的配置可結(jié)合官網(wǎng)或github中的說明文檔進(jìn)行相關(guān)配置更新。
安裝
執(zhí)行 pre-commit install 命令,會(huì)在.git/hook路徑下生成pre-commit文件,這樣就保證了pre-commit安裝成功,可以正常使用了。
然后執(zhí)行:
更新配置文件只需要執(zhí)行 pre-commit install 即可。
使用
配置完成之后,在 git commit 之前都會(huì)執(zhí)行剛才的配置,可根據(jù)執(zhí)行的結(jié)果來更新或者提交代碼。
到此這篇關(guān)于Python代碼規(guī)范性檢測(cè)的文章就介紹到這了,更多相關(guān)Python代碼規(guī)范性檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用C++,通過Pybind11制作Python接口
今天小編就為大家分享一篇關(guān)于Python調(diào)用C++,通過Pybind11制作Python接口,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10
23個(gè)很棒的Python腳本集合分享(迷你項(xiàng)目)
這篇文章主要為大家詳細(xì)介紹了23個(gè)很棒的Python腳本的集合(迷你項(xiàng)目),文中的示例代碼講解詳細(xì),對(duì)我們了解Python有一定幫助,感興趣的可以了解一下2022-11-11
Python數(shù)據(jù)持久化shelve模塊用法分析
這篇文章主要介紹了Python數(shù)據(jù)持久化shelve模塊用法,結(jié)合實(shí)例形式較為詳細(xì)的總結(jié)分析了shelve模塊的功能、原理及簡(jiǎn)單使用方法,需要的朋友可以參考下2018-06-06
Python實(shí)現(xiàn)EM算法實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)EM算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Django drf使用Django自帶的用戶系統(tǒng)的注冊(cè)功能
本文主要介紹了Django drf使用Django自帶的用戶系統(tǒng)的注冊(cè)功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn)
這篇文章主要介紹了Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

