Java 代码质量门禁
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 安装 @user_a36dc51e/java-coding-quality 技能,安装完成后可基于该技能执行 Java 代码交付前的质量门禁检查。
技能介绍
交付前的Java质量检查困境
Java项目交付前常面临两难:人工对照编码规范效率低,难以覆盖空catch、魔法值、线程池误用等隐蔽问题;临时引入质量工具又需修改pom.xml,可能破坏团队既有构建流程;安全告警处理不当(如自行抑制误报)还会埋下合规风险。
技能的核心工作逻辑
该技能以实跑工具链替代规则堆砌,核心能力分三层:
- 规范层用
maven-pmd-plugin(PMD 7内核)做源码级扫描,配合自带pmd7-ruleset.xml(41条内置规则+2条XPath自定义),覆盖命名、BigDecimal使用等高频问题 - bug与安全层通过
SpotBugs-maven-plugin+findsecbugs-plugin做字节码级扫描,识别138类安全漏洞及NP、EI系列bug模式
关键步骤遵循零侵入原则:
- 先探测项目的构建工具(Maven/Gradle)、目标JDK及是否已有质量插件配置,已配则复用团队基线
- 默认在项目根创建
.qualitygate/目录,用包装pom指向../src/main/java(PMD)和../target/classes(SpotBugs),项目自身pom零改动 - 按
Blocker→Critical→Major顺序修复,安全类告警仅上报给建议,同一告警2轮未消则停止重试
适用边界与注意点
- 依赖Maven或Gradle环境,无构建工具时降级为人工对照
references检查,无法做运行时验证 - 误报抑制需附注释理由并经用户确认,Agent不得擅自豁免FindSecBugs的SECURITY类别告警
- 持久化写入项目pom需先通过一次扫描并询问用户,拒绝后不再重复询问
使用场景
- Java 交付前不改 pom 跑 PMD 与 SpotBugs 扫描,确认 Blocker 和 Critical 告警清零。
- 项目已配置 PMD 或 SpotBugs,改动代码后复用团队既有规则集扫描,确认没引入新的高危告警。
- 需要排查 FindSecBugs 报出的 SQL 注入、硬编码密钥等安全告警,按严重级给出修复方案并处理误报。
- 对多模块 Maven 项目用包装工程跑门禁扫描,不改各模块 pom,需要确认接入方式和报告路径。
适合人员
- 后端 Java 工程师:想在代码合并进主干前确认没有 Blocker 与 Critical 级静态扫描告警。
- 平台或 DevOps 负责人:想给团队统一一套不侵入构建流程的 PMD 与 SpotBugs 质量基线。
- 安全审计人员:需要定位 FindSecBugs 报出的 SQL 注入、路径穿越等告警并核对修复方式。
- 开源维护者:项目没配质量插件,想在不改 pom 的前提下跑一次规范与安全扫描并收敛告警。