Pylint:更高層級的 Python 樣式強制程式
當你想要爭論程式碼複雜性時,Pylint 是你的朋友。Pylint 是更高層級的 Python 樣式強制程式。而 flake8 和 black 檢查的是“本地”樣式:換行位置、註釋的格式、發現註釋掉的程式碼或日誌格式中的錯誤做法之類的問題。 |
預設情況下,Pylint 非常激進。它將對每樣東西都提供嚴厲的意見,從檢查是否實際實現宣告的介面到重構重複程式碼的可能性,這對新使用者來說可能會很多。一種溫和地將其引入專案或團隊的方法是先關閉所有檢查器,然後逐個啟用檢查器。如果你已經在使用 flake8、black 和 mypy,這尤其有用:Pylint 有相當多的檢查器和它們在功能上重疊。
但是,Pylint 獨有之處之一是能夠強制執行更高階別的問題:例如,函式的行數或者類中方法的數量。
這些數字可能因專案而異,並且可能取決於開發團隊的偏好。但是,一旦團隊就引數達成一致,使用自動工具強制化這些引數非常有用。這是 Pylint 閃耀的地方。
要以空配置開始,請將 .pylintrc 設定為
[MESSAGES CONTROL] disable=all
這將禁用所有 Pylint 訊息。由於其中許多是冗餘的,這是有道理的。在 Pylint 中,message 是一種特定的警告。
你可以透過執行 pylint 來確認所有訊息都已關閉:
$ pylint
通常,向 pylint 行新增引數並不是一個好主意:配置 pylint 的最佳位置是 .pylintrc。為了使它做一些有用的事,我們需要啟用一些訊息。
要啟用訊息,在 .pylintrc 中的 [MESSAGES CONTROL] 下新增
enable=, ...
對於看起來有用的“訊息”(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 新增到你的持續整合配置中,並且只需要對專案複雜性準則的爭論一次就行。
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2665802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python 程式碼的質量控制之 flake8 & PylintPython
- Pylint:讓你的 Python 程式碼保持一致Python
- 【轉】css樣式自動換行(強制換行)CSS
- 分頁如何變成強制路由模式樣式呢?路由模式
- a002-pylint 程式碼分析
- 從函式到包的Python程式碼層次函式Python
- 讓按鈕強制失焦,變回點選之前的樣式
- 利用css var函式讓你的元件樣式輸出規範樣式API,可定製性更高;CSS函式元件API
- CSS:層疊樣式表—positionCSS
- 使用PyLint分析評估程式碼質量
- CSS指層疊樣式表(CascadingStyleSheets)CSS
- C#強制殺程式C#
- 【selenium】強制等待,隱式等待,顯式等待
- 你不知道的 CSS - 層疊樣式表CSS
- 如何在Python退出時強制執行一段程式碼Python
- 程式碼樣式
- 帶你入門比Python更高效的Numpy(附程式碼)Python
- Python如何強制結束迴圈?Python
- AWS RDS強制升級的應對之道——版本升級的最佳實踐
- CSS樣式表的繼承性和層疊性CSS繼承
- 更強、更穩、更高效:解讀 etcd 技術升級的三駕馬車
- Python強制結束迴圈的5種方法!Python
- Java中各程式碼層級的關係Java
- selenium(7)強制等待,顯式等待和隱式等待。
- 深入解析CSS樣式層疊權重值CSS
- CSS基礎之層疊樣式筆記CSS筆記
- ui設計怎樣做出有效果的視覺層級?UI視覺
- Google Play強制所有手遊分級,廣告也要分級Go
- Python函式用法和底層分析Python函式
- 小程式無限層級路由方案路由
- 微信小程式echarts層級太高微信小程式Echarts
- win10如何禁用驅動程式強制簽名 win10禁用驅動程式強制簽名的方法Win10
- 測試開發之前端篇-CSS層疊式樣式表前端CSS
- WordPress模板層次05:style.css樣式表CSS
- Web前端開發——CSS層疊樣式表(3)Web前端CSS
- win10禁用驅動程式強制簽名的方法_win10怎麼禁用驅動程式強制簽名Win10
- 微信小程式樣式微信小程式
- 程式碼樣式檢查