mcpField
M
megalinter-fix

megalinter-fix

github.com/oxsecurity测试与质量2.6k87 次安装今天更新
代码仓库

关于 megalinter-fix

面向编码 Agent 的 MegaLinter 修复技能,根据检查输出处理错误,并通过各 Linter 的指南指导自动或手动修复。

主要功能

  1. 01按 Linter 和优先级归类错误
  2. 02仅加载失败 Linter 的指南
  3. 03运行或应用支持的自动修复
  4. 04指导手动修复与验证
  5. 05禁用规则前须获确认

适用场景

  1. 01修复报告中的 MegaLinter 错误
  2. 02通过定向复查验证修复
  3. 03处理不确定错误或拟议的抑制

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oxsecurity/megalinter --skill megalinter-fix

安装后在 Claude Code 中输入/megalinter-fix确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

linters/
action_actionlint.md
action_zizmor.md
ansible_ansible_lint.md
api_spectral.md
arm_arm_ttk.md
bash_exec.md
bash_shellcheck.md
bash_shfmt.md
bicep_bicep_linter.md
c_clang_format.md
c_cppcheck.md
c_cpplint.md
clojure_clj_kondo.md
clojure_cljstyle.md
cloudformation_cfn_lint.md
copypaste_jscpd.md
cpp_clang_format.md
cpp_cppcheck.md
cpp_cpplint.md
csharp_csharpier.md
csharp_dotnet_format.md
csharp_roslynator.md
css_biome.md
css_stylelint.md
dart_dartanalyzer.md
dockerfile_hadolint.md
editorconfig_editorconfig_checker.md
env_dotenv_linter.md
gherkin_gherkin_lint.md
go_golangci_lint.md

详细介绍

MegaLinter 修复

修复收到的 MegaLinter 错误(megalinter-check 的输出约定:检查器键、错误数量、文件、错误示例行)。

1. 准备

  • 如果当前分支是默认分支(main/master),请先创建一个分支:git checkout -b megalinter/fix-<topic>。
  • 按检查器键对错误分组。先处理阻塞检查器(❌);将非阻塞检查器(⚠️)告知用户,但除非用户要求,否则不要修复。

2. 按需加载修复指南

对于每个报错的检查器,只读取此技能目录中的修复指南:linters/<linter_key_lower>.md(例如 linters/python_ruff.md)。索引位于 linters/README.md。

每份指南都包含一个生成的区块(自动修复支持、配置/忽略文件、规则文档 URL、调整变量、已知的非 lint 失败模式)以及经过调研的修复说明。不要加载没有错误的检查器的指南。

3. 修复

按以下顺序处理:

  1. 可自动修复的检查器(指南说明支持自动修复):如果有可用的容器引擎,请运行 npx mega-linter-runner --linter <KEY> --fix [failing files...](使用 podman 时添加 --container-engine podman;如果 .mega-linter.yml 固定使用 MEGALINTER_VERSION: beta,则使用 npx mega-linter-runner@beta——参见 megalinter-check 中的版本规则)。否则,按照底层工具文档中的修复方法手动处理。如果没有安装或运行容器引擎,先询问用户,然后遵循 megalinter-check 技能目录中的 container-engine.md。
  2. 手动修复:遵循指南,逐个文件修复剩余错误。如不确定规则的含义,请查阅规则文档 URL。
  3. 指南未涵盖的错误(未知规则、指南缺失或过时):在决定如何修复前先浏览网页——从指南生成区块中的 URL 开始,获取规则的官方文档,或搜索确切的错误消息。切勿猜测修复方法或抑制语法。
  4. 有歧义的情况(修复会改变行为、存在多种有效方案、怀疑是误报):询问用户并说明可选方案——按此方式修复、添加带理由的行内禁用,或忽略。

4. 禁用(始终先征得用户确认)

当修复并不适用时(误报、规则与项目风格冲突、检查器不适用):

  • 从范围最小的方式开始:在该行添加行内禁用注释 → 在检查器配置文件中排除规则 → <KEY>_FILTER_REGEX_EXCLUDE → <KEY>_DISABLE_ERRORS: true(设为非阻塞)→ DISABLE_LINTERS(最后手段)。
  • 指南提供每个级别的确切语法。未经用户明确确认,绝不禁用任何内容。
  • 如果项目模式检查器因排除项或配置解析而报告意外结果,请查看其控制台日志中的 [Excluded directories] 行:MegaLinter 会通过额外 CLI 参数或生成的忽略/配置文件自动转发排除目录。对该检查器禁用此转发(<LINTER_KEY>_FORWARD_EXCLUDED_DIRECTORIES: false)可恢复工具的原生行为——当仓库自带的忽略/配置文件已完整时,这种方法很有用。

5. 验证并完成

  1. 使用 megalinter-check 技能重新检查(定向复查模式:仅检查已修复的检查器/文件)。总共最多迭代 3 次。
  2. 向用户展示摘要:已修复 / 已禁用(附理由)/ 剩余问题。
  3. 在工作分支上以清晰的提交消息创建提交。推送前先询问;绝不要推送到默认分支。
  4. 如果推送触发 CI 运行,且仓库会自动应用修复(APPLY_FIXES_MODE: commit),MegaLinter 可能会在你的提交之上推送一个 [MegaLinter] Apply linters fixes 提交:使用 megalinter-check 监控运行,该技能会处理此类提交(参见其中的 “MegaLinter auto-fix commits” 部分)——继续编辑前务必先拉取。

优化:子 Agent(Claude Code 和兼容的 Agent)

如果可用子 Agent,且已安装 megalinter-fixer(参见 megalinter-setup),则为每个未通过的 linter 并行分派一个 megalinter-fixer,并向每个 fixer 提供:linter 键、错误列表和修复指南内容。每个 fixer 会返回修复数量、已修改的文件和 unresolved 列表(其中可能包含 proposed_disable 抑制项——fixer 不会自行应用禁用设置)。汇总结果,就每个未解决项和建议禁用项逐一询问用户,并自行应用用户确认的项目,然后运行针对性复查(如果有可用的 megalinter-runner Agent,则通过这些 Agent 运行)。

将 MegaLinter 安装为 Agent 插件时,定义会带有命名空间(megalinter:megalinter-watcher、megalinter:megalinter-runner、megalinter:megalinter-fixer);安装为技能时则保留原有名称。使用平台列出的形式。

如果没有子 Agent,则按顺序逐个在线修复 linter。

评论

支持 Markdown