為了保證 Python 的代碼規範,在使用 `git commit` 提交代碼之前,需要使用 blake、isort 工具對提交的文件進行格式化,如果提交的代碼符合規法則 commit 成功,否則自動格式化文件,然後重新 commit整個工作流大概是這樣子:
其中 black 是代碼格式化工具,可以通過 pip install black 後直接使用,使用方法如下:
black {source_file_or_directory}...同時也支持配置文件自定義規則,詳細內容可以參考官方文檔 The uncompromising code formatter — Black
isort 則是用來規範 python 庫的引入的,按字母順序對 packages 進行排序,並自動分為不同的部分和類型,同樣可以通過 pip install isort 後直接使用,使用方法如下:
isort mypythonfile.py mypython file2.py和 black 一樣也支持配置文件自定義規則,具體內容參考官網 isort (pycqa.github.io)
pre-commit 是整個工作流最重要的一環,pre-commit 是 git-hooks 中的一個重要的鉤子,它在鍵入提交信息前運行。可以用於檢查即將提交的快照,例如,檢查是否有所遺漏,確保測試運行,以及核查代碼。如果該鉤子以非零值退出,Git 將放棄此次提交。 上面提到的機制是整個工作流可以進行的關鍵。
完全可以自定義 pre-commit 鉤子的,但是如果只是為了檢驗的話,可以使用現成的方案 pre-commit/pre-commit,用 Python 構建,支持多語言的管理器。通過 pre-commit 這個庫,簡單地幾步就可以實現自動化工作流。
pip install pre-commit然後通過 pre-commit --version 確定是否安裝成功
$ pre-commit --version
pre-commit 2.16.0
添加 .pre-commit-config.yaml 的配置文件可以通過 pre-commit sample-config 生成一個默認的配置文件,這裡貼一下關於 black 和 isort 的配置文件
repos:
- repo: https://github.com/psf/black
rev: 21.12b0
hooks:
- id: black
- repo: https://github.com/PyCQA/isort
rev: 5.10.1
hooks:
- id: isort支持的配置項很多,具體參考 plugins
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit然後就就大功告成了
點擊閱讀原文,閱讀體驗更好
聽說好看比讚賞更有意義哦