Pylint:讓你的 Python 程式碼保持一致
當你想要爭論程式碼複雜性時,Pylint 是你的朋友。
Pylint 是更高層級的 Python 樣式強制程式。而 flake8 和 black 檢查的是“本地”樣式:換行位置、註釋的格式、發現註釋掉的程式碼或日誌格式中的錯誤做法之類的問題。
預設情況下,Pylint 非常激進。它將對每樣東西都提供嚴厲的意見,從檢查是否實際實現宣告的介面到重構重複程式碼的可能性,這對新使用者來說可能會很多。一種溫和地將其引入專案或團隊的方法是先關閉所有檢查器,然後逐個啟用檢查器。如果你已經在使用 flake8、black 和 mypy,這尤其有用:Pylint 有相當多的檢查器和它們在功能上重疊。
但是,Pylint 獨有之處之一是能夠強制執行更高階別的問題:例如,函式的行數或者類中方法的數量。
這些數字可能因專案而異,並且可能取決於開發團隊的偏好。但是,一旦團隊就引數達成一致,使用自動工具強制化這些引數非常有用。這是 Pylint 閃耀的地方。
配置 Pylint
要以空配置開始,請將 .pylintrc
設定為
[MESSAGES CONTROL]
disable=all
這將禁用所有 Pylint 訊息。由於其中許多是冗餘的,這是有道理的。在 Pylint 中,message
是一種特定的警告。
你可以通過執行 pylint
來確認所有訊息都已關閉:
$ pylint <my package>
通常,向 pylint
命令列新增引數並不是一個好主意:配置 pylint
的最佳位置是 .pylintrc
。為了使它做一些有用的事,我們需要啟用一些訊息。
要啟用訊息,在 .pylintrc
中的 [MESSAGES CONTROL]
下新增
enable=<message>,
...
對於看起來有用的“訊息”(Pylint 稱之為不同型別的警告)。我最喜歡的包括 too-many-lines
、too-many-arguments
和 too-many-branches
。所有這些會限制模組或函式的複雜性,並且無需進行人工操作即可客觀地進行程式碼複雜度測量。
檢查器是訊息的來源:每條訊息只屬於一個檢查器。許多最有用的訊息都在設計檢查器下。預設數字通常都不錯,但要調整最大值也很簡單:我們可以在 .pylintrc
中新增一個名為 DESIGN
的段。
[DESIGN]
max-args=7
max-locals=15
另一個有用的訊息來源是“重構”檢查器。我已啟用一些最喜歡的訊息有 consider-using-dict-comprehension
、stop-iteration-return
(它會查詢正確的停止迭代的方式是 return
而使用了 raise StopIteration
的迭代器)和 chained-comparison
,它將建議使用如 1 <= x < 5
,而不是不太明顯的 1 <= x && 5 > 5
的語法。
最後是一個在效能方面消耗很大的檢查器,但它非常有用,就是 similarities
。它會查詢不同部分程式碼之間的複製貼上來強制執行“不要重複自己”(DRY 原則)。它只啟用一條訊息:duplicate-code
。預設的 “最小相似行數” 設定為 4。可以使用 .pylintrc
將其設定為不同的值。
[SIMILARITIES]
min-similarity-lines=3
Pylint 使程式碼評審變得簡單
如果你厭倦了需要指出一個類太複雜,或者兩個不同的函式基本相同的程式碼評審,請將 Pylint 新增到你的持續整合配置中,並且只需要對專案複雜性準則的爭論一次就行。
via: https://opensource.com/article/19/10/python-pylint-introduction
作者:Moshe Zadka 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- Python 程式碼的質量控制之 flake8 & PylintPython
- a002-pylint 程式碼分析
- 用 PyPy 讓你的 Python 程式碼執行得更快!Python
- Pylint:更高層級的 Python 樣式強制程式Python
- 使用PyLint分析評估程式碼質量
- 讓你的Python程式碼更乾淨只需簡單一步Python
- 帶引數的 Python 裝飾器讓你的程式碼更優雅Python
- 如何快速讓你的程式碼支援Cocoapods!
- 如何讓你的程式碼整潔漂亮
- 七個不一樣的Python程式碼寫法,讓你寫出一手漂亮的程式碼Python
- 11個Python Pandas小技巧讓你的工作更高效(附程式碼例項)Python
- git 更新原生代碼(和遠端程式碼保持一致)Git
- 三行Python程式碼,讓你的資料處理指令碼快別人4倍Python指令碼
- DSL-讓你的 Ruby 程式碼更加優雅
- 讓 Python 程式碼更易維護的七種武器Python
- 7個Python實戰專案程式碼,讓你分分鐘晉級大神!Python
- 想讓你的程式碼變得更加優雅嗎?
- DRF類檢視讓你的程式碼DRY起來
- 7個Python實戰專案程式碼,讓你感受下大神是如何起飛的!Python
- 別讓程式碼愁白頭髮!15 個 Python 函式拯救你的開發生活Python函式
- 讓你的程式更可讀
- 替代 for 迴圈,讓 Python 程式碼更 pythonic !Python
- Java11正式釋出了,讓你的程式碼更完美?Java
- 一些技巧讓你的 Laravel 程式碼更優雅Laravel
- IDEA 外掛推薦 —— 讓你寫出好程式碼的神器!Idea
- 幾個步驟,讓你的 iOS 程式碼容易閱讀iOS
- 使用Async,讓你的Node.js程式碼更優雅Node.js
- 20行Python程式碼教你讓影片字元化Python字元
- 如何讓Java編譯器幫你寫程式碼Java編譯
- Python讓你成為AI繪畫大師,簡直太驚豔了!(附程式碼)PythonAI
- 十幾行程式碼就可以讓你的微信小程式掛掉行程微信小程式
- 如何讓 python 處理速度翻倍?內含程式碼Python
- 七種方法讓 Python 程式碼更容易維護Python
- CSS 程式碼線上生成工具,讓你少寫幾百行程式碼~CSS行程
- @程式設計師,一文讓你掌握Python爬蟲!程式設計師Python爬蟲
- 封裝DataBinding讓你少寫萬行程式碼封裝行程
- [譯] 9 個 VSCode 擴充套件,讓你的程式碼敲的飛起?VSCode套件
- Android Annotation-讓你的程式碼和設計更加優雅(一)Android