代码格式化与静态检查

简介

代码格式化指南为代码布局设定了标准,包括换行符和空格等风格元素。格式不会影响代码的运行方式,但采用一致的风格能使代码更易读,也更容易被复用。

代码检查工具会检测代码中的错误,例如缺少括号或行缩进问题。这可以节省时间并减少挫败感,因为您可以在运行代码之前提前发现错误。

随着项目不断发展和经历各个开发阶段,保持代码质量变得至关重要。采用一致的格式并对代码进行静态检查,可以确保代码的一致性、可读性,并便于调试和维护。

设置Python工具

有多种Python工具可与您的Kedro项目配合使用。本指南将向您展示如何使用ruff

ruff 是一个快速代码检查与格式化工具,可替代 flake8pylintpyupgradeisortblack 以及 更多工具。

  • 它有助于使你的代码符合PEP 8规范。

  • 它会重新格式化代码,并按字母顺序自动排序导入项,同时根据类型将它们自动分组到不同的部分。

安装工具

要安装 ruff,请将以下部分添加到项目根目录下的 pyproject.toml 文件中:

[project.optional-dependencies]
dev = ["ruff"]

要安装您的项目,包括所有项目特定的依赖项和代码检查工具,请导航至项目的根目录并运行:

pip install ."[dev]"

或者,您可以使用以下shell命令单独安装代码检查工具:

pip install ruff

配置 ruff

ruff 会从项目根目录下的 pyproject.toml 读取配置。你可以在 [tool.ruff] 部分启用不同的规则集。例如,规则集 F 等同于 Pyflakes

要开始使用ruff,我们建议添加此部分以启用一些基本规则集。

[tool.ruff]
select = [
    "F",  # Pyflakes
    "E",  # Pycodestyle
    "W",  # Pycodestyle
    "UP",  # pyupgrade
    "I",  # isort
    "PL", # Pylint
]

注意

当一行代码过长时,进行换行分割是良好的编程实践,这样即使在小型屏幕上也能轻松阅读。ruff对此的处理方式与black略有不同,当同时使用时建议禁用该规则(即E501)以避免冲突。

运行工具

使用以下命令运行代码规范检查:

ruff format --check <project_root>
ruff check <project_root>

你也可以通过省略--check标志,让ruff format自动格式化你的代码。

使用pre-commit钩子实现自动化格式化和代码检查

你可以使用pre-commit钩子来自动化代码格式化和静态检查的过程。 这些钩子会在代码提交到代码库之前运行,自动指出格式问题, 使代码审查更轻松且更省时。

安装 pre-commit

您可以通过在Kedro项目的requirements.txt文件中添加以下行来安装pre-commit以及其他依赖项:

pre-commit

你也可以使用以下命令安装 pre-commit

pip install pre-commit

添加 pre-commit 配置文件

在您的Kedro项目根目录下创建一个名为.pre-commit-config.yaml的文件。您可以添加希望在每次commit前运行的钩子配置。 以下是一个包含ruff配置项的示例YAML文件:

repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    # Ruff version.
    rev: '' # Replace with latest version, for example 'v0.1.8'
    hooks:
      - id: ruff
        args: [--fix]
      - id: ruff-format

请查看GitHub上的ruff预提交的最新配置

安装git钩子脚本

运行以下命令完成安装:

pre-commit install

这能让pre-commit钩子每次执行git commit时自动运行。