開源最前線(ID:OpenSourceTop) 編譯
連結:https://opensource.com/article/18/7/7-python-libraries-more-maintainable-code
當軟體專案進入“維護樣式”時,對程式碼的可讀性和編碼標準經常就忽略了(甚至從一開始就沒有建立起這些標準。)但是,在程式碼庫中保持一致的風格和測試標準是減少維護負擔的重要因素,它能確保未來的開發人員能夠快速瞭解新的專案情況 – 並保持專案的良好執行
保護專案未來可維護性的一個好方法就是使用外部庫來檢查你的程式碼執行狀況。以下是我們最喜歡的一些用於檢查程式碼的庫(包含檢查PEP 8和其他樣式錯誤),讓程式碼風格保持一致,並確保在專案成熟時的測試改寫率保持在可接受範圍。
檢查你的程式碼風格
PEP 8是Python程式碼風格規範,它對行長度,縮排,多行運算式和命名約定等內容有明確的規範。你的團隊可能也有自己的程式碼規則,可能與PEP 8略有不同。但是,任何程式碼風格都是為了在程式碼庫中強制實施一致的標準,使其更具可讀性,從而更易於維護。這裡有三個庫來幫助美化你的程式碼。
1、 Pylint
Pylint 是一個 Python 程式碼分析工具,它分析 Python 程式碼中的錯誤,查詢不符合程式碼風格標準(Pylint 預設使用的程式碼風格是 PEP 8)和有潛在問題的程式碼。 。它與幾個流行的編輯器和IDE很好地整合,也可以從命令列執行。
要安裝,請執行 pip install pylint。
要從命令列執行 Pylint,請執行 pylint [options] path/to/dir 或 pylint [options] path/to/module.py。Pylint 會向控制檯輸出不符合程式碼風格標準以及錯誤程式碼的地方
你還可以呼叫 pylintrc 配置檔案來自定義 Pylint 檢查的錯誤。(專案地址:https://www.pylint.org/)
2、Flake8
Flake8是一個“Python工具,它將PEP8,Pyflakes(類似於Pylint),McCabe(程式碼複雜性檢查器)和第三方外掛集合在一起,以檢查某些Python程式碼的風格和質量。”
要使用Flake8,要先執行 pip install flake8。然後執行 flake8 [options] path/to/dir 或 flake8 [options] path/to/module.py 檢視其錯誤和警告。
與Pylint一樣,Flake8允許對配置檔案檢查的內容進行一些自定義。它有非常清晰的檔案,包括一些有用的Commit,可以作為開發工作流程的一部分自動檢查程式碼。
Flake8能夠與流行的編輯器和IDE整合,但這些指令通常在檔案中並沒有說明。要將Flake8與你喜歡的編輯器或IDE整合,可以線上搜尋外掛(例如 Sublime Text的Flake8外掛)。(專案地址:http://flake8.pycqa.org/en/latest/)
3、Isort
isort 可自動對 Python的 import陳述句進行排序和分段。可將大量的 import結構轉成非常適合閱讀的排版。(例如,標準庫匯入,第三方庫匯入,從你自己的專案匯入等),這樣可以提高可讀性,而且如果你匯入的庫較多,還能快速找到各個庫
安裝 isort pip install isort,然後執行 isort path/to/module.py。檔案中提供了許多配置選項。例如,你可以配置 isort如何處理.isort.cfg檔案來執行一個庫的多行匯入。
與Flake8和Pylint一樣,isort還提供了將其與流行的編輯器和IDE整合的外掛。(專案地址:https://github.com/timothycrosley/isort)
分享你的程式碼風格
記住從命令列手動為每個檔案執行linters是一件很痛苦的事情,你可能也不太喜歡透過執行 IDE 中某個外掛來實現這個功能。另外,您的同事可能更喜歡別的方式,或者可能他們最喜歡的編輯器的沒有這個外掛,或者你檢查程式碼不夠細緻,久而久之,你們共享的程式碼庫將變得混亂並且難以閱讀。
一個很好的解決方案是使用一個庫,自動將程式碼重新按照PEP 8規範進行格式化。我們推薦的三個庫都有不同的自定義級別來控制如何格式化程式碼,像pylint的和Flake8,你要先測試,看看它是否存在你接受不了卻無法更改的預設配置。
4、 Autopep8
Autopep8可以自動格式化你指定的模組中的程式碼。它將重新縮排行,修複縮排,刪除無關的空白,並重構常見的比較錯誤(如布林和None值)。你可以在它的檔案中檢視完整的更改串列
安裝Autopep8,需要先執行 pip install –upgrade autopep8。要重新格式化程式碼,請執行 pip install –upgrade autopep8 。然後執行 autopep8 –in-place –aggressive –aggressive
5、 Yapf
Yapf是重新格式化程式碼的另一種選擇,它帶有自己的配置選項串列。它與autopep8的不同之處在於它不僅僅解決了違反PEP 8規範的問題。它還重新格式化了沒有違反PEP 8規範的程式碼,但沒有一致地設定樣式,可能是為了可讀性而格式化得更好。
要安裝Yapf,需要執行 pip install yapf。要重新格式化程式碼,要執行 yapf [options] path/to/dir 或 yapf [options] path/to/module.py。(專案地址:https://github.com/google/yapf)
6、 Black
在所有的程式碼檢查工具中,Black算是比較新的一個。它與autopep8和Yapf類似,但限制比較多,它很少有自定義選項,這是重點,這意味著你無法自定義程式碼風格。
Black支援Python 3.6+以上的版本,但可以格式化Python 2程式碼。要使用Black,請執行 pip install black。要美化您的程式碼,請執行:black path/to/dir或black path/to/module.py。(專案地址:https://github.com/ambv/black)
檢查程式碼的測試改寫率
假如你正在編寫測試,你需要確保對程式碼庫提交的新程式碼進行測試,並且不會降低程式碼的測試改寫率。雖然測試改寫率的百分比不是衡量測試有效性和充分性的唯一指標,但它是確保專案中遵循基本測試標準的一種方法。為了測量測試改寫率,我們有一個建議:使用 Coverage 這個庫。
7、Coverage
Coverage有多種向你報告測試改寫率的方式,包括將結果輸出到控制檯或HTML頁面,並提示哪些行號沒有改寫到。你可以設定配置檔案以自定義Coverage檢查的內容並使其更便於執行。
要安裝Coverage,請執行 pip install coverage。要執行程式並檢視其輸出,請執行 coverage run [path/to/module.py] [args],接著你將看到程式的輸出。要檢視哪些程式碼行沒有被改寫,請執行 coverage report -m。(專案地址:https://coverage.readthedocs.io/en/latest/)
持續整合工具
持續整合(CI)是在合併和部署程式碼之前,自動檢查程式碼風格錯誤和測試最小改寫率的一系列過程。有許多免費或付費的工具可以自動化這個過程,本文這裡就不詳細介紹了。但是,由於設定CI過程是將程式碼塊刪除為更易於閱讀和維護的重要步驟,因此,你不得不重視。
●編號523,輸入編號直達本文
●輸入m獲取文章目錄