python代碼檢查

    實際參與過項目開發後就能夠深深體會到代碼的規範對項目的重要性,這中間不僅關係着你對代碼bug的修正還包括有後來的夥伴們拜讀你的源碼時,如果代碼不規範,亂七八糟的,被小夥伴打死或者熬夜找bug事小,影響項目進度或者破壞項目結構就完蛋了

    通常我們的python代碼都是遵循PEP8的規範化格式,目的是爲了保持代碼的一致性、可讀性。,這裏給大家推薦幾個常用的靜態代碼檢查工具,大家可以酌情選擇使用

1. pylint

    Pylint是一個Python靜態代碼分析工具,它可以查找編程錯誤,幫助強制執行編碼標準,嗅探代碼異味並提供簡單的重構建議。

    它具有高度可配置性,具有特殊的編譯指示來控制代碼中的錯誤和警告,以及廣泛的配置文件。也可以編寫自己的插件來添加自己的檢查或以某種方式擴展pylint。

    缺省情況下,PyLint 啓用許多規則。它具有高度可配置性,從代碼內部處理程序控制它。另外,編寫插件添加到自己的檢查中是可能的。

安裝

pip install pylint

#如果您使用的是Python 3.6+,請升級以獲得對您的版本的完全支持:
pip install pylint --upgrade

#如果要從源分發版安裝,請解壓縮tarball並運行以下命令
python setup.py install

文檔

    該文檔位於http://pylint.pycqa.org/

Pylint附帶以下附加命令:

  • pyreverse:一個UML圖生成器
  • symilar:一個獨立的相似性檢查器
  • epylint:Emacs和Flymake兼容的Pylint

使用

    pylint的各種引用以及使用方式都可以去文檔查找,這裏僅介紹一下比較基礎簡單的示例

pylint [options] modules_or_packages

命令行選項

參數 含義
--version 顯示程序的版本號並退出
-h, --help 顯示有關命令行選項的幫助
--ignore=<file[,file...]> 將文件或目錄添加到黑名單。它們應該是基本名稱,而不是路徑。
--output-format=<format> 選擇輸出格式(文本,json,自定義)。
--list-msgs 生成pylint的消息。

錯誤代碼含義

  • C:慣例,違反了編碼風格標準

  • R:重構,代碼非常糟糕

  • W:警告,某些 Python 特定的問題

  • E:錯誤,很可能是代碼中的錯誤

  • F:致命錯誤,阻止 Pylint 進一步運行的錯誤

  • 更多pylint相關可參考文檔

2. yapf:

    Python的大多數當前格式化程序 - 例如,autopep8和pep8ify ---用於從代碼中刪除lint錯誤。這有一些明顯的侷限性。例如,符合PEP 8指南的代碼可能無法重新格式化。但這並不意味着代碼看起來很好。

    YAPF採用不同的方法。它基於由Daniel Jasper開發的'clang-format'。從本質上講,算法會獲取代碼並將其重新格式化爲符合樣式指南的最佳格式,即使原始代碼沒有違反樣式指南。這個想法也類似於Go編程語言的'gofmt'工具:結束所有關於格式化的神聖戰爭

  • 如果項目的整個代碼庫只是通過YAPF進行修改,只要進行修改,樣式在整個項目中保持一致,並且沒有必要在每次代碼審查中爭論風格。

    最終目標是YAPF生成的代碼與程序員在遵循樣式指南時編寫的代碼一樣好。它消除了維護代碼的一些苦差事。

安裝

pip install yapf

使用

yapf [-h] [-v] [-d | -i] [-r | -l START-END] [-e PATTERN]
            [--style STYLE] [--style-help] [--no-local-style] [-p]
            [-vv]
            [files [files ...]]

同上,一樣也可以直接跟文件進行操作

參數 參數說明
-h, --help 顯示此幫助消息並退出
-v, --version 顯示版本號並退出
-d, --diff 比較差異
-i, --in-place 對文件進行更改
-r, --recursive 以遞歸方式運行目錄

示例

#直接跟文件名(並不修改文件)
yapf <python file>

#格式化前後對比
 yapf -d <python file>

#直接修改源文件
yapf -i <python file>

#導出配置文件
yapf --style-help > style.cfg

#併發格式化多個文件,需要futures模塊支持
yapf -pi *.py
  • 更多yapf相關可參考yapf

  • 其他的此類工具還有Pyflakes,flake8等等,小編直接出到這兩個常用的,更多內容大家在項目實戰中應該會有更多接觸

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章