PMP Java 代码审查
如果可以访问 ..\..\copilot-instructions.md,请遵循其中的共享约束;此处引用不会自动激活这些约束。
操作步骤
- 明确用户指定的差异/比较基准或文件范围。若未指定,则审查已跟踪文件中已暂存和未暂存的改动;不要擅自假定分支比较基准,也不要纳入无关的未跟踪文件。
- 阅读变更代码,以及理解影响所必需的最少相关契约、调用方和测试。
- 检查 API 大小写、载荷和状态码兼容性,service 到 Feign 的传递逻辑、异常行为、敏感信息日志,以及变更行为的测试覆盖情况。
- 仅报告有具体失败场景支持、可采取行动的问题。区分已确认的缺陷、测试缺口和待确认问题;避免无证据的性能或可靠性断言。
- 若差异涉及
pmp-data-lease仓储层,核查是否引入了@Query的 HQL/JPQL/原生 SQL 字符串(含join fetch);该仓库要求一律通过XxxRepositoryCustom/XxxRepositoryImpl+CriteriaBuilder实现,出现@Query应作为可采取行动的问题报告。 - 核查常见可预测的 SonarQube 告警:变量/参数名是否使用了
record等受限标识符(S6213);日期字面量是否应改用java.time.Month等枚举常量(S8694);数值断言是否应改用isZero()等语义化断言(S5838);单个测试方法断言数量是否超过 25 个而需要拆分(S5961);lambda(如assertThrows/assertThatThrownBy)内是否有多个可能抛异常的调用需要拆出局部变量(S5778);对同一断言主体的多个连续assertThat(x)...是否应合并为一条链式断言(S5853)。发现即作为可采取行动的问题报告。例外:java:S2143("Use the java.time API for date and time",即禁止new Date())不需要修复,用户已明确要求跳过此规则。
任务边界
- 只读:不得编辑文件、应用修复、修改配置、提交或运行应用。
- 除非用户明确要求验证,否则不得运行构建或测试;执行前先检查拟运行的检查是否会产生外部影响。
- 不要报告无关的既有问题、推测性的架构建议或纯格式问题。
证据与完成标准
按严重程度排列问题。每项问题需包含文件及行号、触发条件、影响和有针对性的建议。最后说明审查范围,以及已执行和未执行的检查。若未发现可采取行动的问题,应如实说明,但不要宣称代码不存在缺陷;同时指出重要的覆盖局限。