Python 代碼靜態(tài)檢查

Python 是一門(mén)動(dòng)態(tài)語(yǔ)言有决, 在編寫(xiě)程序時(shí)埂软,往往只有在執(zhí)行的時(shí)候才能發(fā)現(xiàn)隱藏的錯(cuò)誤剩失, 所以需要一套靜態(tài)檢查工具腰素。

Pyflakes -- 錯(cuò)誤檢查

一個(gè)用于檢查Python源文件錯(cuò)誤的簡(jiǎn)單程序。
Pyflakes 可以分析程序并且檢查各種錯(cuò)誤轰豆。它是通過(guò)解析源文件實(shí)現(xiàn)胰伍,運(yùn)行相當(dāng)快,但是它不會(huì)檢查文件的代碼風(fēng)格酸休。

安裝命令pip install --upgrade pyflakes
使用方法

  • 命令行 pyflakes [ file name or directory name]骂租, 簡(jiǎn)單運(yùn)行結(jié)果如下:
parser.py:1: 'os' imported but unused
client.py:1: 'sys' imported but unused

pycodestyle -- 代碼規(guī)范檢查

原名為pep8,后來(lái)改成了pycodestyle斑司, 中間有段有趣的小故事渗饮,大家可以查找看看。
pycodestyle 檢查代碼是否符合 PEP 8 規(guī)范宿刮, PEP 8 是一種 Python 代碼規(guī)范指南互站。

安裝命令pip install pycodestyle
使用方法
命令行 pycodestyle [file name or directory name], 簡(jiǎn)單運(yùn)行結(jié)果如下:

client.py:107:55: E231 missing whitespace after ','
server.py:22:80: E501 line too long (89 > 79 characters)
  • --statistics -qq: 對(duì)結(jié)果進(jìn)行匯總
  • --show-source: 更詳細(xì)的輸出
  • --select E501: 忽略指定輸出

flake8

Flake8 是由 Python 官方發(fā)布的一款輔助檢測(cè) Python 代碼是否規(guī)范的工具僵缺。Flake8 檢查規(guī)則靈活胡桃,支持集成額外插件,擴(kuò)展性強(qiáng)磕潮。

Flake8 是對(duì)下面三個(gè)工具的封裝翠胰, 即該工具可以同時(shí)檢查以下的功能范圍容贝, 但運(yùn)行相對(duì)較慢。

  • PyFlakes:靜態(tài)檢查 Python 代碼邏輯錯(cuò)誤的工具之景。
  • Pep8: 靜態(tài)檢查 PEP8 編碼風(fēng)格的工具斤富。
  • NedBatchelder’s McCabe :靜態(tài)分析 Python 代碼復(fù)雜度的工具。

安裝命令pip install flake8
使用方法
命令行 flake8 [ file name or directory name] --max-complexity=12锻狗, 簡(jiǎn)單運(yùn)行結(jié)果如下:

parser.py:1: 'os' imported but unused
nbs/handler.py:15:80: E501 line too long (87 > 79 characters)
client:67:1: C901 'If 67' is too complex (14)
  • --max-complexity=12 : 檢查代碼代碼復(fù)雜度满力, 官網(wǎng)建議值為12, 該參數(shù)可不寫(xiě)
  • --ignore E501,E203: 忽略指定風(fēng)格檢查
  • --select E501: 指定風(fēng)格檢查

Pylint -- 推薦

Pylint是Python源代碼分析器轻纪,查找不符合代碼風(fēng)格標(biāo)準(zhǔn)和有潛在問(wèn)題的代碼油额,具有高度可配置性, 還會(huì)給你代碼打分桐磁。
安裝命令pip install pylint
使用方法
命令行 pylint [options] module_or_package悔耘, 簡(jiǎn)單運(yùn)行結(jié)果如下:

client.py:51:0: R0904: Too many public methods (28/20) (too-many-public-methods)
client.py:327:0: C0103: Constant name "NetAct" doesn't conform to UPPER_CASE naming style (invalid-name)

-----------------------------------
Your code has been rated at 6.79/10

生成report 格式可用pylint --help 查詢讲岁。

錯(cuò)誤代碼含義

  • C:慣例我擂,違反了編碼風(fēng)格標(biāo)準(zhǔn)
  • R:重構(gòu),代碼非常糟糕
  • W:警告缓艳,某些 Python 特定的問(wèn)題
  • E:錯(cuò)誤校摩,很可能是代碼中的錯(cuò)誤
  • F:致命錯(cuò)誤,阻止 Pylint 進(jìn)一步運(yùn)行的錯(cuò)誤
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阶淘,一起剝皮案震驚了整個(gè)濱河市衙吩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溪窒,老刑警劉巖坤塞,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異澈蚌,居然都是意外死亡摹芙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)宛瞄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)浮禾,“玉大人,你說(shuō)我怎么就攤上這事份汗∮纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵杯活,是天一觀的道長(zhǎng)匆帚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)旁钧,這世上最難降的妖魔是什么卷扮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任荡澎,我火速辦了婚禮,結(jié)果婚禮上晤锹,老公的妹妹穿的比我還像新娘摩幔。我一直安慰自己,他們只是感情好鞭铆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布或衡。 她就那樣靜靜地躺著,像睡著了一般车遂。 火紅的嫁衣襯著肌膚如雪封断。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天舶担,我揣著相機(jī)與錄音坡疼,去河邊找鬼。 笑死衣陶,一個(gè)胖子當(dāng)著我的面吹牛柄瑰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剪况,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼教沾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了译断?” 一聲冷哼從身側(cè)響起授翻,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孙咪,沒(méi)想到半個(gè)月后堪唐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翎蹈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年淮菠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杨蛋。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兜材,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逞力,到底是詐尸還是另有隱情曙寡,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布寇荧,位于F島的核電站举庶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏揩抡。R本人自食惡果不足惜户侥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一镀琉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蕊唐,春花似錦屋摔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至副瀑,卻和暖如春弓熏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糠睡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工挽鞠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狈孔。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓信认,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親除抛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狮杨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348