本文档涵盖了 TheAlgorithms/Python 仓库中的代码质量强制执行基础设施,重点介绍 pre-commit hooks、代码检查(linting)、格式化和自动化质量检查。该系统通过本地和 CI/CD 流水线中运行的自动化工具,确保所有贡献的代码质量一致。
有关更广泛的 CI/CD 工作流和 GitHub Actions 的信息,请参阅GitHub Actions 工作流。有关构建系统和依赖管理器的详细信息,请参阅构建系统与依赖。
该仓库使用 pre-commit hooks 作为主要的强制机制,实现了一个全面的代码质量系统。该系统在每次提交前自动运行多项质量检查,确保代码符合项目标准,无需手动干预。
来源:.pre-commit-config.yaml1-65
| 工具 | 目的 | 配置位置 | 自动修复 | 范围 |
|---|---|---|---|---|
ruff | 代码检查与格式化 | pyproject.toml | 是 | Python 文件 |
mypy | 类型检查 | pre-commit 中的 CLI 参数 | 否 | Python 文件 |
codespell | 拼写检查 | pyproject.toml | 否 | 所有文本文件 |
prettier | YAML/TOML 格式化 | 默认配置 | 是 | .toml, .yaml 文件 |
auto-walrus | Walrus 操作符转换 | 默认配置 | 是 | Python 文件 |
pyproject-fmt | pyproject.toml 格式化 | 默认配置 | 是 | pyproject.toml |
来源:.pre-commit-config.yaml1-65 pyproject.toml49-158
该仓库使用 ruff 作为主要的 linting 和格式化工具,并进行了广泛的规则配置。
pre-commit 工具与 GitHub Actions 工作流集成,以确保 CI/CD 中的质量
来源:.github/workflows/build.yml1-38 .github/workflows/ruff.yml1-17
拼写检查系统具有特定的配置,以处理技术术语和项目专用词汇
通过 mypy 强制执行类型检查,并针对项目需求进行了特定配置
来源:.pre-commit-config.yaml49-58
该仓库包含超出标准工具范围的自定义验证
来源:.pre-commit-config.yaml36-47
质量系统通过 pytest 配置与测试框架集成