python如何實(shí)現(xiàn)代碼檢查
前言
通常我們的python代碼都是遵循PEP8的規(guī)范化格式,目的是為了保持代碼的一致性、可讀性。,這里給大家推薦幾個常用的靜態(tài)代碼檢查工具,大家可以酌情選擇使用
1. pylint
Pylint是一個Python靜態(tài)代碼分析工具,它可以查找編程錯誤,幫助強(qiáng)制執(zhí)行編碼標(biāo)準(zhǔn),嗅探代碼異味并提供簡單的重構(gòu)建議。
它具有高度可配置性,具有特殊的編譯指示來控制代碼中的錯誤和警告,以及廣泛的配置文件。也可以編寫自己的插件來添加自己的檢查或以某種方式擴(kuò)展pylint。
缺省情況下,PyLint 啟用許多規(guī)則。它具有高度可配置性,從代碼內(nèi)部處理程序控制它。另外,編寫插件添加到自己的檢查中是可能的。
安裝
pip install pylint #如果您使用的是Python 3.6+,請升級以獲得對您的版本的完全支持: pip install pylint --upgrade #如果要從源分發(fā)版安裝,請解壓縮tarball并運(yùn)行以下命令 python setup.py install
Pylint附帶以下附加命令:
- pyreverse:一個UML圖生成器
- symilar:一個獨(dú)立的相似性檢查器
- epylint:Emacs和Flymake兼容的Pylint
使用
pylint的各種引用以及使用方式都可以去文檔查找,這里僅介紹一下比較基礎(chǔ)簡單的示例
pylint [options] modules_or_packages
命令行選項(xiàng)
| 參數(shù) | 含義 |
|---|---|
| --version | 顯示程序的版本號并退出 |
| -h, --help | 顯示有關(guān)命令行選項(xiàng)的幫助 |
| --ignore=<file[,file...]> | 將文件或目錄添加到黑名單。它們應(yīng)該是基本名稱,而不是路徑。 |
| --output-format=<format> | 選擇輸出格式(文本,json,自定義)。 |
| --list-msgs | 生成pylint的消息。 |
錯誤代碼含義
- C:慣例,違反了編碼風(fēng)格標(biāo)準(zhǔn)
- R:重構(gòu),代碼非常糟糕
- W:警告,某些 Python 特定的問題
- E:錯誤,很可能是代碼中的錯誤
- F:致命錯誤,阻止 Pylint 進(jìn)一步運(yùn)行的錯誤
更多pylint相關(guān)可參考文檔
2. yapf:
Python的大多數(shù)當(dāng)前格式化程序 - 例如,autopep8和pep8ify ---用于從代碼中刪除lint錯誤。這有一些明顯的局限性。例如,符合PEP 8指南的代碼可能無法重新格式化。但這并不意味著代碼看起來很好。
YAPF采用不同的方法。它基于由Daniel Jasper開發(fā)的'clang-format'。從本質(zhì)上講,算法會獲取代碼并將其重新格式化為符合樣式指南的最佳格式,即使原始代碼沒有違反樣式指南。這個想法也類似于Go編程語言的'gofmt'工具:結(jié)束所有關(guān)于格式化的神圣戰(zhàn)爭
如果項(xiàng)目的整個代碼庫只是通過YAPF進(jìn)行修改,只要進(jìn)行修改,樣式在整個項(xiàng)目中保持一致,并且沒有必要在每次代碼審查中爭論風(fēng)格。
最終目標(biāo)是YAPF生成的代碼與程序員在遵循樣式指南時(shí)編寫的代碼一樣好。它消除了維護(hù)代碼的一些苦差事。
安裝
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 ...]]
同上,一樣也可以直接跟文件進(jìn)行操作
| 參數(shù) | 參數(shù)說明 |
|---|---|
| -h, --help | 顯示此幫助消息并退出 |
| -v, --version | 顯示版本號并退出 |
| -d, --diff | 比較差異 |
| -i, --in-place | 對文件進(jìn)行更改 |
| -r, --recursive | 以遞歸方式運(yùn)行目錄 |
示例
#直接跟文件名(并不修改文件) yapf <python file> #格式化前后對比 yapf -d <python file> #直接修改源文件 yapf -i <python file> #導(dǎo)出配置文件 yapf --style-help > style.cfg #并發(fā)格式化多個文件,需要futures模塊支持 yapf -pi *.py
更多yapf相關(guān)可參考yapf
其他的此類工具還有Pyflakes,flake8等等,小編直接出到這兩個常用的,更多內(nèi)容大家在項(xiàng)目實(shí)戰(zhàn)中應(yīng)該會有更多接觸
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pandas 數(shù)據(jù)結(jié)構(gòu)之Series的使用方法
這篇文章主要介紹了pandas 數(shù)據(jù)結(jié)構(gòu)之Series的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python json 錯誤xx is not JSON serializable解決辦法
這篇文章主要介紹了Python json 錯誤xx is not JSON serializable解決辦法的相關(guān)資料,需要的朋友可以參考下2017-03-03
python使用自定義user-agent抓取網(wǎng)頁的方法
這篇文章主要介紹了python使用自定義user-agent抓取網(wǎng)頁的方法,涉及Python使用urllib2模塊操作網(wǎng)頁的技巧,需要的朋友可以參考下2015-04-04
使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
今天小編就為大家分享一篇使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
關(guān)于vscode?默認(rèn)添加python項(xiàng)目的源目錄路徑到執(zhí)行環(huán)境的問題
這篇文章主要介紹了vscode?默認(rèn)添加python項(xiàng)目的源目錄路徑到執(zhí)行環(huán)境,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
Python簡單實(shí)現(xiàn)查找一個字符串中最長不重復(fù)子串的方法
這篇文章主要介紹了Python簡單實(shí)現(xiàn)查找一個字符串中最長不重復(fù)子串的方法,涉及Python針對字符串的簡單遍歷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
python實(shí)現(xiàn)圖片加文字水印OPenCV和PIL庫
本文來為大家介紹一下,使用python中的庫實(shí)現(xiàn)給圖片添加文字水印,openCV可以給圖片添加水印,如果要添加漢字水印那就要使用PIL庫2021-09-09
python中csv文件數(shù)據(jù)顏色設(shè)置方式
這篇文章主要介紹了python中csv文件數(shù)據(jù)顏色設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

