Checkstyle Fixer
本技能用于在代码提交前,基于当前 git diff 中涉及的文件运行 Checkstyle 规范检查,生成带时间戳的报告,并根据问题清单给出修复计划,支持自动修复部分问题。
能力范围
- •Diff 分析:识别本次变更中涉及的文件(包含 staged 与 unstaged)。
- •规范检查:使用本 Skill 内置的 Checkstyle 工具对变更文件进行检查。
- •报告生成:在
checkstyle_results目录下生成带时间戳命名的摘要报告和问题清单。 - •修复计划:基于问题清单生成可执行的修复方案。
- •交互式修复:由研发人员确认后,自动对可修复问题进行代码修改。
使用说明
触发时机示例(研发可直接输入的提示词)
- •“检查本次 diff 的 checkstyle”
- •“提交前帮我跑一下 checkstyle 并生成报告”
- •“根据 google_checks 规则检查并自动修复能修的”
- •”调用csf技能“
当本技能被调用时:
步骤 1:分析变更文件
- •运行
git diff --name-only(以及git diff --cached --name-only)获取本次变更涉及的文件列表。 - •过滤出需要进行 Checkstyle 检查的源码文件(例如
.java)。 - •在分析和后续检查过程中,应遵守
.gitignore中的忽略规则,对被 git 忽略的目录和文件不做检查。
步骤 2:运行 Checkstyle
- •使用本 Skill 所在目录下的
tools子目录(例如.trae/skills/checkstyle-fixer/tools),该目录对外部调用方透明,由 Skill 自行管理。- •Checkstyle JAR:
tools/checkstyle-9.3-all.jar - •规则配置:
tools/google_checks.xml
- •Checkstyle JAR:
- •需要检查步骤1中筛选出的全部变更文件,切记不要遗漏。
- •针对变更文件执行类似命令(示意):
- •
java -jar tools/checkstyle-9.3-all.jar -c tools/google_checks.xml <file1> <file2> ...
- •
步骤 3:生成报告(带时间戳)
- •在项目根目录下创建
checkstyle_results目录(若不存在)。 - •如果是首次创建该目录,应同时将
checkstyle_results/加入项目根目录下的.gitignore,避免报告文件在后续提交中成为脏数据。 - •解析 Checkstyle 输出,构建问题数据。
- •生成带时间戳命名的报告文件,例如:
- •摘要报告:
checkstyle_results/YYYYMMDD_HHMMSS_summary_report.md - •问题清单:
checkstyle_results/YYYYMMDD_HHMMSS_issue_list.md,(注意,这里的问题清单要包括全部问题,而不是一部分问题)
- •摘要报告:
- •摘要报告包含:检查的文件总数、问题总数、按严重级别的统计等信息,报告正文使用中文描述(除代码片段与路径外)。
- •问题清单包含:文件路径、行号、严重级别、问题描述等信息,问题文案和说明同样使用中文表述(除规则名、代码片段等保留英文外)。
步骤 4:生成修复计划
- •基于最新生成的
issue_list_YYYYMMDD_HHMMSS.md分析问题。 - •识别可自动修复的问题类型,例如:
- •简单格式问题(缩进、空格等)。
- •未使用的 import。
- •明显可重命名的标识符(若能安全推断)。
- •生成修复计划,包含:
- •可自动修复的问题列表(按文件/行号列出)。
- •需要人工判断或复杂修改的问题列表。
- •向研发人员展示修复计划,并询问:
- •“请确认要自动修复的项(按文件/规则/全部等维度)。”
- •修复计划中的所有描述性文字和清单说明需使用中文(除代码与规则标识外),并尽量引用 Checkstyle 报告中的规则名和约束含义,避免主观想象式的修改建议。
步骤 5:执行自动修复
- •在收到研发人员确认后,对选中的可自动修复问题:
- •使用代码编辑能力对相关文件进行精准修改(例如删除未使用 import、调整格式等)。
- •自动修复时应严格依据
tools/google_checks.xml中的规则和约束,只做为满足对应 Checkstyle 规则所必需的最小修改,避免与规则无关的“天马行空”式重构或风格改动。 - •修改完成后,可选择性地对受影响文件重新运行 Checkstyle:
- •再次生成一组带时间戳的报告,用于对比修复前后结果。
- •所有报告均保留在
checkstyle_results目录下,方便审计与回溯。