pre-commit
简介
pre-commit:帮助你提高代码质量的工具
pre-commit是一个帮助开发人员提高代码质量的工具。它通过在提交代码之前运行一系列检查来实现这一点。这些检查可以包括格式检查、静态分析和 linting。
pre-commit可以帮助你发现并修复代码中的错误,从而提高代码的质量和可维护性。它还可以帮助你遵循代码风格指南,并确保你的代码符合特定的标准。
pre-commit会在你提交代码之前运行你指定的检查。如果检查发现任何错误,它会阻止你提交代码。你需要修复错误后才能提交代码。
pre-commit是一个非常有用的工具,可以帮助你提高代码质量。如果你正在寻找一种提高代码质量的方法,我建议你使用pre-commit。
以下是一些使用pre-commit的优势:
- 提高代码质量:pre-commit可以帮助你发现并修复代码中的错误,从而提高代码的质量和可维护性。
- 遵循代码风格指南:pre-commit可以帮助你遵循代码风格指南,从而使你的代码更易于阅读和维护。
- 确保代码符合特定的标准:pre-commit可以帮助你确保你的代码符合特定的标准,例如PEP8或Google风格指南。
- 节省时间:pre-commit可以帮助你节省时间,因为它可以自动执行检查,而你不需要手动检查代码。
如果你正在寻找一种提高代码质量的方法,我建议你使用pre-commit。它是一个非常有用的工具,可以帮助你提高代码质量,节省时间。
安装
pip install pre-commit
使用
手动在项目根路径常见文件: .pre-commit-config.yaml
可以使用 pre-commit sample-config
生成一个简单的配置格式
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
安装pre-commit脚本
pre-commit install
如果是新增的钩子,可以将全部的文件都跑一次,一般后续则默认只会对修改的文件进行检查。
pre-commit run --all-files
寻找可用的钩子工具: 官网-可使用的钩子列表
配置信息
1. python
python pre-commit配置信息: black
- repo: https://github.com/psf/black
rev: 23.7.0
hooks:
- id: black
# It is recommended to specify the latest version of Python
# supported by your project here, or alternatively use
# pre-commit's default_language_version, see
# https://pre-commit.com/#top_level-default_language_version
language_version: python3.10
- id: black-jupyter
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
- repo: https://github.com/pycqa/flake8
rev: 6.0.0
hooks:
- id: flake8
additional_dependencies:
- flake8-bugbear
- flake8-comprehensions
- flake8-simplify
exclude: ^src/blib2to3/
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.4.1
hooks:
- id: mypy
exclude: ^docs/conf.py
additional_dependencies:
- types-PyYAML
- tomli >= 0.2.6, < 2.0.0
- click >= 8.1.0, != 8.1.4, != 8.1.5
- packaging >= 22.0
- platformdirs >= 2.1.0
- pytest
- hypothesis
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.0.0
hooks:
- id: prettier
exclude: \.github/workflows/diff_shades\.yml
2. C++
- repo: https://github.com/pocc/pre-commit-hooks
rev: master
hooks:
- id: clang-format
args: [-i, --style=file]
# - id: clang-tidy
# - id: oclint
# - id: uncrustify
# - id: cppcheck
# - id: cpplint
3. 通用
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0 # Use the ref you want to point at
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-merge-conflict
- id: check-ast
- id: double-quote-string-fixer
- id: debug-statements
- id: check-toml
- id: check-json
- id: check-xml