开发集成工具pre-commit详解介绍

开发集成工具pre-commit详解介绍_第1张图片

文章目录

  • pre-commit
    • 简介
    • 安装
    • 使用
    • 安装pre-commit脚本
    • 配置信息
      • 1. python
      • 2. C++
      • 3. 通用

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

你可能感兴趣的:(#,C,C++,tools,数据库)