代码格式化与静态检查¶
简介¶
代码格式化指南为代码布局设定了标准,包括换行符和空格等风格元素。格式不会影响代码的运行方式,但采用一致的风格能使代码更易读,也更容易被复用。
代码检查工具会检测代码中的错误,例如缺少括号或行缩进问题。这可以节省时间并减少挫败感,因为您可以在运行代码之前提前发现错误。
随着项目不断发展和经历各个开发阶段,保持代码质量变得至关重要。采用一致的格式并对代码进行静态检查,可以确保代码的一致性、可读性,并便于调试和维护。
设置Python工具¶
有多种Python工具可与您的Kedro项目配合使用。本指南将向您展示如何使用ruff。
ruff 是一个快速代码检查与格式化工具,可替代 flake8、pylint、pyupgrade、isort、black 以及 更多工具。
它有助于使你的代码符合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时自动运行。