此翻译可能已过时。

配置参考

linter 在 mago.toml 中由两个表配置:[linter] 用于工具级设置,[linter.rules] 用于逐规则的设置。

[linter]
integrations = ["symfony", "phpunit"]
excludes = ["src/Generated/"]
baseline = "linter-baseline.toml"

[linter.rules]
# Disable a rule completely
ambiguous-function-call = { enabled = false }

# Change a rule's severity level
no-else-clause = { level = "warning" }

# Configure a rule's specific options
cyclomatic-complexity = { threshold = 20 }

# Exclude specific paths from one rule
prefer-static-closure = { exclude = ["tests/"] }

[linter]

选项类型默认值说明
excludes字符串列表[]linter 跳过的路径或 glob。叠加在全局 source.excludes 之上。
integrations字符串列表[]要启用的框架集成。完整列表见集成页面
baseline字符串baseline 文件路径。设置后,linter 会将其作为默认 baseline,你不必每次都传 --baseline。CLI 的 --baseline 会覆盖该值。
baseline-variant字符串"loose"新生成的 baseline 所用的变体。可选 "loose"(基于计数,具备容错性)或 "strict"(精确到行)。参见 baseline 变体
minimum-fail-level字符串"error"触发非零退出码的最低严重等级。取值:"note""help""warning""error"。CLI 的 --minimum-fail-level 会覆盖该值。

这里的 excludes 是在全局列表之上叠加。被全局匹配到的文件总是会被排除;此选项只能让你额外为 linter 排除一些文件。

[source]
excludes = ["cache/**"]              # excluded from every tool

[linter]
excludes = ["database/migrations/**"]  # additionally excluded from the linter only

[linter.rules]

此表下的每个键都是一条规则的代码,以 kebab-case 书写。每条规则都接受下面的通用选项;部分规则还接受自身的选项。

通用选项

选项类型默认值说明
enabled布尔值视规则而定启用或禁用该规则。
level字符串视规则而定严重等级。取值:"error""warning""help""note"
exclude字符串列表[]该规则跳过的路径或 glob。其他规则仍会作用于这些文件。

逐规则的 excludes

当一条规则总体上有价值,但不适用于代码库的某一部分(例如生成代码或测试夹具)时,exclude 就很有用。

[linter.rules]
prefer-static-closure = { enabled = true, exclude = ["tests/"] }
no-goto              = { exclude = ["src/Legacy/"] }
no-eval              = { exclude = ["src/Templating/Compiler.php"] }
no-global            = { exclude = ["**/*Test.php"] }

每个条目可以是普通路径或 glob:

  • 普通路径("tests""tests/""src/Foo.php")以前缀匹配的方式针对项目根目录的相对路径进行匹配。
  • glob 模式(任何包含 *?[{ 的条目)使用与全局 source.excludes 相同的 glob 引擎,匹配完整的相对路径,并应用 [source.glob] 设置。

逐规则 exclude 中使用 glob 模式需要 Mago 1.20 或更高版本。早期版本仅接受普通前缀路径。

逐规则 exclude[linter].excludes 不同:

  • [linter].excludes 会从所有规则中移除文件。
  • 规则自身的 exclude 只会从这一条规则中移除文件,其他规则仍然作用于该文件。

规则专属选项

部分规则接受额外选项。cyclomatic-complexity 是一个典型例子:

[linter.rules]
cyclomatic-complexity = { level = "error", threshold = 15 }

要查看某条规则的专属选项,可询问 Mago:

mago lint --explain cyclomatic-complexity

完整的逐规则参考见规则页面

↳ 编辑此页 →