代码检查与测试

Aider 能够在每次修改代码后自动执行代码检查(linting)和测试。 这有助于发现并修复由 AI 编辑引入的问题。

代码检查

Aider 内置了对大多数流行语言的检查器, 会自动对这些语言的代码进行检查。

您也可以通过 --lint-cmd <cmd> 参数指定自己喜欢的检查工具。 该检查命令应能接受待检查文件的文件名作为参数。 如果存在检查错误,aider 期望该命令能在 stdout/stderr 输出错误信息, 并返回非零退出码。这是大多数检查工具的正常工作方式。

默认情况下,aider 会检查所有它编辑过的文件。 您可以使用 --no-auto-lint 参数禁用此功能。

按语言指定检查器

要为不同编程语言指定不同的检查器,可使用 --lint "语言: 命令" 格式。

代码格式化”检查器”

很多人会将代码格式化工具作为检查器使用,用于美化代码格式。 这些工具在修改代码后有时会返回非零退出码, 这会误导 aider 认为存在需要修复的实际检查错误。

您可以通过将格式化工具封装在如下 shell 脚本中, 并将该脚本设为检查器来使用格式化功能。

#!/bin/bash


# 运行两次
#

# 第一次运行可能会重新格式化/修改文件,因此会以非零状态退出
#

# 第二次运行时,除非存在超出已完成代码格式化的实际问题,
# 否则不会执行任何操作并以0退出

pre-commit run --files "$@" >/dev/null \
    || pre-commit run --files "$@"

测试

您可以通过 /test <测试命令> 来运行测试。 Aider 会不带任何参数地运行测试命令。 如果测试出现错误,aider 期望该命令 能将错误信息打印到 stdout/stderr 并返回非零的退出码。

当命令返回非零退出码时, aider 会尝试修复这些错误。

您可以通过 --test-cmd <测试命令>--auto-test 开关来配置 aider, 使其在每次 AI 编辑代码后自动运行测试套件。

编译型语言

如果您希望 aider 在每次编辑后编译代码, 可以使用 lint 和 test 命令来实现。

  • 您可能希望重新编译每个被修改的文件 以检查编译错误。 为此, 可以提供一个既能进行代码检查又能编译文件的 --lint-cmd。 您可以为此创建一个小型 shell 脚本。
  • 您可能希望在文件编辑后重新构建整个项目 以检查构建错误。 为此, 可以提供一个既能构建又能测试项目的 --test-cmd。 您可以为此创建一个小型 shell 脚本, 或者简单地使用类似 --test-cmd "dotnet build && dotnet test" 的命令。

手动运行代码

您可以在聊天中使用 /run 命令来运行代码, 并选择性地将输出分享给 aider。 这在分享错误信息或向 aider 展示代码输出 以请求修改或更正时非常有用。

Aider v0.43.5-dev

/run python myscript.py

Traceback (most recent call last):  
 File "myscript.py", line 22, in \<module\ 
   raise ValueError("something bad happened")  
ValueError: something bad happened  

将输出添加到聊天中? y


目录