Skip to content

[2.0.x→3.0.x] fix(jaxrs): 3 bugs + surefire argLine + CodeGraph docs + bilingual README - #2

Open
loong10k wants to merge 58 commits into
feature/3.0.xfrom
feature/2.0.x
Open

[2.0.x→3.0.x] fix(jaxrs): 3 bugs + surefire argLine + CodeGraph docs + bilingual README#2
loong10k wants to merge 58 commits into
feature/3.0.xfrom
feature/2.0.x

Conversation

@loong10k

Copy link
Copy Markdown
Collaborator

修复概述

使用 CodeGraph 语义代码审查(6 维:数据流 / 符号执行 / 构造器全字段赋值 / 字节码常量池 / Builder 对称设计 / True Negative SOAP 侧交叉排除)在 feature/1.0.x / feature/2.0.x / feature/3.0.x / main 四条分支同时识别并修复 3 个真实 Bug + 1 个构建静默失效 Bug,反向同步 2 处测试断言(保证旧"坏值匹配"的测试在修复后仍然 PASS),新增 2 份 BuilderTest +450LOC 覆盖率提升,并补充完整 CodeGraph 审查证据技术方案与双语 README。

3+1 Bug 清单(CodeGraph 真阳性)

# 模块 现象 根因
Bug 1 RestParam(Class, String, HttpParamEnum) 三参构造器 用户显式 HttpParamEnum.PATH/HEADER/FORM/COOKIE 全部退化为 QUERY 漏写 this.from = from
Bug 2 RestParam(Class, String, HttpParamEnum, String) 四参构造器 from 字段退化 QUERY + this.name = name 被复制粘贴写两遍 this.from = from 且重复 name 赋值
Bug 3 JaxrsEndpointApiUtils.annotParams() defAnnot 回填 生成字节码 [@QueryParam, @QueryParam] 重复引用,@DefaultValue 永不生效 → 下游 NPE/0 paramArrays[i][1] = paramAnnot → 应为 = defAnnot
Build 1 pom.xml surefire <argLine> 前缀 jacoco.exec 0 字节 → 覆盖率 0% 但 CI BUILD SUCCESS,极易漏过 @{argLine} 惰性占位符前缀,JaCoCo prepare-agent 无法注入 -javaagent:jacocoagent.jar

构建差异化(JDK 线分档)

  • JDK 17/21 线(main / feature/2.0.x / feature/3.0.x)@{argLine} 后追加
    • --add-opens java.base/java.lang=ALL-UNNAMED
    • --add-opens java.base/java.lang.reflect=ALL-UNNAMED
      让 Javassist 绕过 JPMS 强封装写入 jdk.internal.reflect.*
  • JDK 8 线(feature/1.0.x)不加任何 --add-opens(否则 JVM 直接 Unrecognized option 导致 Surefire 退出)

测试反向断言修复(RestParamTest)

修复前两处断言匹配的是已知坏值(Green-on-Bug,测试因匹配错误值才 PASS):

  1. shouldCreateParamWithExplicitFromassertEquals(QUERY, param.getFrom()) → 改为 assertEquals(PATH, param.getFrom())
  2. shouldCreateParamWithFromAndDefault:末尾新增 assertEquals(PATH, param.getFrom())(此前对 from 字段零断言)

4 分支本地实测(全部 PASS)

分支 JDK Tests 失败 跳过 关键指标
feature/1.0.x Corretto 8u502 202 0 0 Surefire @{argLine} 生效
feature/2.0.x Corretto 17u20 202 0 0 RestParamTest 8 + 26 Jaxrs + 13 Jaxws 抽样全绿
main Corretto 17u20 202 0 0 同上
feature/3.0.x Corretto 21 224 0 0 JaCoCo BUNDLE INSTRUCTION 90% 达标,新增 Jaxrs/Jaxws BuilderTest

新增 / 更新文档(4 分支各一份,共 12 个 md 文件)

  • TECHNICAL-DESIGN.md — 技术方案(含 CodeGraph 6 维审查方法 + 3+1 真阳性代码对比证据 + True Negative SOAP 侧免疫说明 + ADR-001~005
  • README.md — 英文默认入口(§4.2 Builder 对称表 §7.1 构造器全字段赋值表 §9 worktree 目录 §10 FAQ add-opens / commons 锁版对照表)
  • README.zh-CN.md — 中文逐段对齐英文版

Commons 三件套 JDK 8 兼容锁版

四分支已全部使用 JDK 8 线的最终版本

  • commons-lang3 = 3.20.0(3.21+ 需 JDK 11,禁止升级)
  • commons-io = 2.22.0(2.23+ 需 JDK 11,禁止升级)
  • commons-beanutils = 1.11.0(1.x 线最终版)

关联 CI Status

  • feature/1.0.x push CI: ✅ success
  • feature/2.0.x push CI: ✅ success
  • main push CI: ✅ success
  • feature/3.0.x push CI: ⚠️ failure(与本 PR 无关:pom L3 <modelVersion>4.1.0</modelVersion> 的 Maven 4 语法与 Actions 默认 Maven 版本不兼容,属于独立的 Maven 版本升级议题)

📎 详细 CodeGraph 符号执行证据链请查阅仓库根目录 TECHNICAL-DESIGN.md §3 CodeGraph 审查维度与 §4 Bug 根因代码对比。

loong10k added 30 commits July 9, 2026 16:20
loong10k and others added 27 commits August 7, 2026 23:54
- Remove source/target, use release only
- Fix maven.version per branch
- Fix enforcer requireMavenVersion for Maven 4 (3.0.x)
- Fix java.version values
- Fix maven-wrapper.properties
- Add properties 3-part comments
- Remove source/target, use release only
- Fix maven.version per branch
- Fix enforcer requireMavenVersion for Maven 4 (3.0.x)
- Fix java.version values
- Fix maven-wrapper.properties
- Add properties 3-part comments
@loong10k loong10k added bug Something isn't working enhancement New feature or request labels Aug 20, 2026
… into feature/2.0.x

- Resolve merge conflict in pom.xml: keep feature/2.0.x JDK baseline (java.version=17, add-opens for JDK 17)
- Keep feature/1.0.x code: 3 bugfixes (RestParam from=from×3 / defAnnot write / RestParamTest PATH assertions×2) + 3 bilingual docs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant