Python 第三方庫:Flake8(輕量級靜態分析工具)
Flake8 是一款輕量級 Python 靜態代碼分析工具,融合了多種檢查器,可快速發現代碼中的風格違規、語法問題和潛在錯誤,適合開發初期與持續集成場景使用。
安裝 :
安裝完成後,即可通過命令行工具 flake8 使用。
常見應用場景:
(1)日常開發階段:在保存文件時快速檢測編碼風格或拼寫問題。
(2)團隊協作階段:統一代碼風格標準,減少審查歧義。
(3)持續集成流程:集成於 GitHub Actions、GitLab CI 等平臺自動分析每次提交。
(4)教學與學習階段:輔助新手遵循 PEP 8 編碼規範。
(5)發佈前審查階段:確保無明顯風格問題或未定義變量。
◆◆ ◆
核心概念
1、輕量化分析框架
Flake8 是對多個工具的封裝,核心包括:
PyFlakes:是一個 linter,與 相似,旨在更快地工作並避免誤報。它還忽略了由下一個工具處理的樣式規則。
pycodestyle:是一個風格檢查器,檢查代碼風格是否符合 PEP 8。
McCabe:用於檢查分析函數/模塊的圈複雜度。其本質就是在你的代碼結構過於複雜時警告你。
2、只檢查、不評分
與 Pylint 不同,Flake8 不對代碼打分,而是專注於問題檢測和報告。
3、插件機制
支持擴展插件(如 flake8-docstrings, flake8-import-order)以適應不同項目需求。
4、易集成性
支持集成於 VSCode、PyCharm、CI 工具鏈等開發或部署環境。
◆◆ ◆
基本用法
創建一個文件 example.py:
運行命令:
若沒有錯誤或風格問題,不會有任何輸出。
若修改代碼爲:
則可能輸出:
◆◆ ◆
應用舉例
例 1: 忽略某些檢查項
可以通過命令行或配置文件忽略指定規則。
或者在代碼文件頂部統一聲明:
也可忽略單行檢查:
提示:
如果省略了錯誤代碼, noqa 將導致 flake8 忽略該行的所有錯誤。
例 2:配置 .flake8 文件
在項目根目錄創建 .flake8 配置文件:
運行時將自動讀取此配置。
例 3:與 VSCode 集成
在 settings.json 中添加:
保存文件後可自動檢測。
例 4:複雜度分析
默認最大複雜度爲 10,可通過參數修改限制。
默認情況下,Flake8 只運行 PyFlakes 和 pycodestyle。若要分析代碼的複雜度,則還需要傳遞參數 --max-complexity。
◆◆ ◆
常用命令參數解釋
--ignore=錯誤代碼列表
忽略指定的檢查規則。例如:--ignore=E203,W503。
--select=錯誤代碼列表
僅啓用指定的檢查規則。例如:--select=E9,F63。
--max-line-length=數字
設置每行代碼的最大字符數,默認 79,常見設爲 88(與 Black 保持一致)。
--exclude=路徑列表
排除不檢查的目錄或文件,如虛擬環境或緩存目錄。
--max-complexity=數字
設置 McCabe 圈複雜度上限,函數結構越複雜,值越高。
--count
顯示問題數量統計。
--statistics
顯示每種問題的統計信息。
--config=路徑
指定自定義配置文件路徑,覆蓋默認 .flake8 設置。
◆◆ ◆
補充說明
1、Flake8 檢查範圍不包含類型註解,如需類型檢查可結合 mypy 使用。
2、Flake8 與 Black 衝突項可通過 ignore=E203,W503 在 .flake8 中規避。
3、常見組合:Black + Flake8 + isort 可實現高效、規範的開發流程。
4、Flake8 不檢查文檔字符串(docstring)或導入順序,需手動安裝對應插件如:
flake8-docstrings
flake8-import-order
5、Flake8 相對於 Pylint 的優勢之一是文檔,它有警告、錯誤、選項等完整列表。
“點贊有美意,讚賞是鼓勵”