Pylint:讓你的 Python 代碼保持一致
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 中國: https://github.com/Linux-CN/archive