java-coding-qualitylisted
Install: claude install-skill BaixuanZhu/skills
# Java 质量门禁
面向 Java 代码**交付前验证**的工具门禁助手。用 JVM 插件链(PMD 7 + 自带规则集、SpotBugs + FindSecBugs)实跑扫描并按严重级修复,直到 **Blocker/Critical 清零**才算交付。
## 三条铁律
1. **工具兜底,不再造规范**:约束靠实跑的静态扫描(PMD 7 + SpotBugs),不重复堆砌编码规则;发现的告警若属编码手法问题,用本技能 references 速查表修复。
2. **零侵入优先**:默认在项目根建 `.qualitygate/` 包装工程扫描,**项目自身 pom 零改动**;通过一次后才**询问一次**是否持久化进项目 pom,拒绝则不再问。
3. **安全告警不自行豁免**:误报抑制必须附注释理由并经用户确认;FindSecBugs 安全类告警 Agent 一律不得擅自 suppress。
## 工具链
| 层 | 工具 | 坐标(已实跑核实 2026-07) | 作用 |
|---|---|---|---|
| 规范层 | maven-pmd-plugin(PMD 7 内核) | `org.apache.maven.plugins:maven-pmd-plugin:3.27.0`(默认 PMD 7.14.0) | 源码级规范:空 catch、魔法值、命名、线程池、BigDecimal 等 |
| 规则集 | 技能自带 `assets/pmd7-ruleset.xml` | 随技能分发,无外部依赖 | 编码强制项(内置规则调参 + XPath 自定义) |
| bug/安全 | SpotBugs + FindSecBugs | `com.github.spotbugs:spotbugs-maven-plugin:4.9.6.0` + `com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0` | 字节码级 bug 模式 + 138 类安全漏洞 |
## 第 0 步:环境探测(激活时先执行)
读 `pom.xml` / `build.gradle` 一次性探测(读不到则一次问全,勿分多轮):
1. **构建工具**:Maven(有 `pom.xml`)还是 Gradle;`mvn -v` / `gradle -v` 是否可用。
2. **目标 JDK**:`maven.compiler.release` / `<source>` / `sourceCompatibility`——决定 PMD 的 `targetJdk` 与编译参数(SpotBugs 需先编译)。
3. **项目是否已配质量插件**:pom/gradle 中是否已有 `maven-pmd-plugin` / `spotbugs-maven-plugin` / `checkstyle` / `sonar`——
- **已配 → 直接复用项目自己的配置与规则集**,不引入技能默认规则集(尊重团队既有基线);仅在项目无规则集时才用技能自带的。
- **未配 → 走「接入方式」用技能自带规则集扫描**。
4. **无 Maven/Gradle 或不可用** → 告知无法实跑门禁,降级为「按 references 做人工对照检查」,并如实说明未做运行时验证。
## 接入方式(零侵入优先)
**默认(零侵入)**:在项目根建 `.qualitygate/` 目录,写入包装 pom + 从技能 `assets/`