git + awk + xargs + flake8 實現在提交代碼前自動進行 Python 代碼規範檢查

前言

當前的項目配置了 CI 流程,每次提交代碼後都會觸發代碼規範檢查

當前項目使用 Python 開發,代碼檢查自然就是基於flake8 了。

許多時候修改了代碼後,都會懶得在本地對修改的文件手動執行下 flake8。一個個複製文件名,不想,不願意。然後提交代碼後 CI 機器人就會報規範提醒,膈應。

所以就設置了個命令縮寫來處理這種問題。在這裏記錄下,也方便有同樣需要的同志。

命令

具體的命令:git status --porcelain | awk '{print $2}' | xargs flake8

使用方法:

  1. 安裝 flake8: pip install flake8
  2. 在項目根目錄下執行該語句

解釋

這個命令一共由三個部分組成。

實際上就是通過 git 命令拿到本次修改或新增的文件,然後通過 awk 精準拿到對應的文件名,最後通過 xargs 將文件名轉化爲命令行參數傳遞給 flake8 處理。

下面分別簡單說下。

git

git status --porcelain 用於返回簡略模式的修改信息。具體可見下圖。
M 代表該文件被修改了。 ?? 代表該文件是新建的。
git

awk

awk '{print $2}' 輸出每行中被空格分隔出的第二個字段。具體可見下圖。
在上圖中就是 .gitignorerun.pytest.py
awk

xargs

xargs flake8awk 的輸出轉化爲命令行參數傳遞給 flake8
如果想知道實際執行的命令,可以將這裏替換爲 xargs -t flake8。這樣就會打印出每個被執行的命令。具體可見下圖。紅框中爲實際執行的命令。
xargs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章