Python程式碼規範性檢測

Yabea發表於2020-07-31

一定要注重程式碼規範,按照平時的程式碼管理,可以將Python程式碼規範檢測分為兩種:

  1. 靜態本地檢測:可以藉助靜態檢查工具,比如:Flake8,Pylint等,調研了一下,用Flake8的相對較多,功能滿足,本文將使用Flake8
  2. git:可藉助git hooks,本文推薦使用pre-commit。

靜態本地檢測

Flake8包裝了Pyflakes、Pycodestyle和McCabe,也可以自定義外掛。功能包括:

  1. 檢查程式碼是否符合PEP8
  2. 檢查是否包含語法錯誤和未使用的變數和匯入
  3. 檢查程式碼的複雜度

安裝

pip install flake8

配置

推薦在pycharm中配置flake8:

引數說明:

  1. Program中填寫Flake可執行檔案的具體路徑
  2. arguments中可新增自定義引數,比如設定每行的最大字元數,過濾某些檔案(夾)等。

安裝完了之後單擊就可以檢測了:

執行檢測之後,如果出現 exit code 0 就說明程式碼規範,否則可按照提示進行整改。

pre-commit

官網https://pre-commit.com/

介紹

使用git的話,可以使用pre-commit鉤子,在呼叫git commit 命令時會自動執行指令碼進行檢測,若程式碼出錯,則不會commit成功。

作用

  1. git commit命令之前對程式碼進行規範性檢測
  2. 按照配置,對一些不符合規範的程式碼自動更新為規範的(比如:填充空格、更新import等)
  3. 提示更新之後仍不符合規範的程式碼

安裝

pip install pre-commit

Linux中安裝完成即可執行pre-commit命令,Windows中需將.exe的路徑新增至環境變數,方可執行pre-commit命令。

配置

在專案根目錄下新增.pre-commit-config.yaml檔案。

可參考官網樣例,:

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

具體的配置可結合官網或github中的說明文件進行相關配置更新。

安裝
執行pre-commit install命令,會在.git/hook路徑下生成pre-commit檔案,這樣就保證了pre-commit安裝成功,可以正常使用了。

然後執行:

更新配置檔案只需要執行pre-commit install即可。

使用

配置完成之後,在git commit之前都會執行剛才的配置,可根據執行的結果來更新或者提交程式碼。

以上。

相關文章