此翻译可能已过时。

报告与修复选项

mago lintmago analyzemago ast 共用一组参数,用来控制问题如何被报告、修复如何被应用。本页是这些参数的中心参考,这样我们就不必在每个命令页里重复它们。

自动修复

大多数 linter 规则以及若干分析器检查都附带了自动修复。下列参数控制如何应用修复,以及哪些类别可被修复。

参数说明
--fix对发现的问题应用所有安全修复。
--fixable-only, -f把输出过滤到具有自动修复的问题上。
--unsafe应用被标记为 unsafe 的修复。这些修复可能改变行为,需要审阅。
--potentially-unsafe应用被标记为 potentially-unsafe 的修复。比 unsafe 风险低,但仍值得简单审阅。
--format-after-fix, fmt在每个被 --fix 修改过的文件上运行格式化器。
--dry-run, -d, diff以统一 diff 的形式预览修复,不写入任何内容。

报告

Mago 如何呈现它发现的问题。

参数说明
--sort按级别、code、位置依次排序报告中的问题。
--reporting-target <TARGET>报告写入的目标。可选值:stdout(默认)、stderr
--reporting-format <FORMAT>输出格式。详见下文;默认自动检测。
--minimum-fail-level <LEVEL>, -m触发非零退出的最低级别。可选值:notehelpwarningerror。默认采用配置文件中的值,若无则为 error
--minimum-report-level <LEVEL>报告中包含的最低级别。低于此值的问题在打印前被过滤掉。
--retain-code <CODE>仅保留指定 code 的问题。这是报告过滤,不是执行过滤。可重复使用。

--retain-code--only(只有 mago lint 接受)不同:

  • mago lint --only <RULE> 仅运行指定的规则。其他规则被完全跳过,因此更快。
  • mago lint --retain-code <CODE> 运行所有规则,然后把输出过滤到你列出的 code。
mago lint --only no-unused-variable                                  # only run that rule
mago lint --retain-code no-unused-variable                           # run everything, show only this code
mago lint --retain-code no-unused-variable --retain-code semantics   # multiple codes
mago analyze --retain-code invalid-argument --retain-code type-mismatch

当你想对某条具体规则做快速反馈时,使用 --only。当你想全面覆盖但聚焦报告时,使用 --retain-code

报告格式

--reporting-format 显式选择:

  • 人类可读:richmediumshortariadneemacs
  • CI / 机器可读:githubgitlabjsoncheckstylesarif
  • 摘要:countcode-count

自动检测

未设置 --reporting-format 时,Mago 会根据环境选择一种格式:

环境通过什么检测默认格式
GitHub ActionsGITHUB_ACTIONSgithub
GitLab CIGITLAB_CIgitlab
AI 编码助手CLAUDECODEGEMINI_CLICODEX_SANDBOXOPENCODE_CLIENTmedium
其他(无)rich

因此 CI 流水线得到原生注解,AI 助手得到一种节省 token 的格式,不需要任何配置。显式传入 --reporting-format 可覆盖。

自动检测自 Mago 1.18 起可用。在 1.17 及更早版本中,请显式设置 --reporting-format=github--reporting-format=gitlab

Baseline

用于管理 baseline 文件的参数。完整指南在 baseline 页面

参数说明
--generate-baseline生成一份新的 baseline 文件,记录当前所有问题。
--baseline <PATH>使用给定路径的 baseline。
--backup-baseline重新生成时,在覆盖前把旧 baseline 复制为 <file>.bkp
--ignore-baseline忽略任何已配置或指定的 baseline,报告所有问题。

↳ 编辑此页 →