检视方式:按「软件研发小组」五角色工作流,由产品经理、软件架构师、研发工程师、全栈代码质检官联合检视,研发小组长验收。
检视基线:2026-09-25,本地仓库 /home/user/suretool,远端 github.com/TASure/suretool,已发布 v1.0.0 至 Maven Central。
对标对象:Apache Commons、Google Guava、Hutool、Eclipse Collections(领域库 Jackson/OkHttp/Caffeine/POI 为辅)。
一、检视基线(客观数据)
| 维度 |
实测值 |
| 模块数 |
17(13 业务模块 + benchmark / examples / spring-boot-starter / bom / all) |
| sure-core 主类 |
84 个工具类 |
| public 方法(主要模块) |
1596+ 个 public 声明 |
| 测试用例 |
749 个 @Test(测试类约 100 个) |
| sure-core 行覆盖率 |
89.70%(covered 25391/28308) |
| 覆盖率门禁 |
根 pom 0.70 / sure-core 0.71(与公开承诺 0.90 不符) |
| CI |
GitHub Actions:JDK 25+25 双跑、仅 ubuntu-latest、verify + JaCoCo artifact |
| 供应链 |
dependabot.yml(maven + actions,每周一)✅;无 CodeQL、无 OSV-Scanner ❌ |
| 工程文件 |
LICENSE / NOTICE / CONTRIBUTING / CODE_OF_CONDUCT / SECURITY / CHANGELOG / ROADMAP / README.en ✅ |
| 协作模板 |
ISSUE_TEMPLATE(bug/feature)、PULL_REQUEST_TEMPLATE ✅ |
| 发布 |
v1.0.0 已上 Central;release.yml 自动化(GPG 签名 + Portal upload + repo1 轮询 + gh release)✅ |
| 文档 |
docs/ 13+ 文件、文档站 GitHub Pages ✅、benchmark-report ✅ |
| 模块化 |
module-info.java:0 个 ❌ |
| 可复现构建 |
project.build.outputTimestamp:未配置 ❌ |
| 性能基准 |
JMH 报告一次生成,无 CI 回归门禁 ⚠️ |
| README |
8 个徽章(CI/覆盖率/发布等)✅ |
| 维度 |
Guava / Commons(标杆) |
Hutool(中文对标) |
suretool 现状 |
差距结论 |
| 产品能力 |
覆盖广、API 稳定 20 年 |
45 个能力域、中文文档 |
13 业务模块、高频子集 |
覆盖度够用(聚焦策略正确),但能力边界未文档化(缺”不做清单”) |
| 架构 |
模块化 + JPMS(module-info) |
模块化聚合 |
17 模块 + BOM + all |
缺 JPMS 模块化,缺 SPI 扩展点,第三方依赖版本未全部进 BOM |
| 代码质量 |
覆盖率 80-90%+、API 审查制、reproducible build |
门禁 + 长期迭代 |
门禁 0.71、SpotBugs、Checkstyle 0 违规 |
门禁强度与承诺不符;缺供应链漏洞扫描(CodeQL/OSV) |
| 测试回归 |
数千用例、OSS-Fuzz、跨平台 CI |
覆盖中上 |
749 用例、89.70% 行覆盖 |
方法级覆盖未审计;CI 仅 Linux;无属性/模糊测试 |
| 文档生态 |
官方 wiki、javadoc 站点 |
教程体系 + 文档站 |
README + Pages 文档站 |
缺 javadoc 发布、教程/示例内容不足(第 14 项未启动) |
| 发布治理 |
ASF 发布签名/校验、兼容承诺 |
中央仓库稳定发布 |
Central + GPG + 自动化流水线 |
单点:缺可复现构建、无 semver 破坏性变更策略文档 |
三、问题清单(分级)
P0 —— 影响”安全、优秀、可靠被引用”目标,必须尽快整改
| 编号 |
问题 |
证据 |
影响 |
| P0-1 |
覆盖率门禁与公开承诺不符:sure-core 门禁 0.71,公开宣称 ≥90%,实测 89.70% |
sure-core/pom.xml jacoco.line.min=0.71;README/ROADMAP 承诺 90% |
引用方信任受损;”优秀可靠”承诺未兑现 |
| P0-2 |
无供应链漏洞扫描:缺 OSV-Scanner(依赖漏洞)与 CodeQL(源码安全) |
workflows 无 codeql/osv job;曾有 security code-scanning 修复历史但未固化为 CI |
作为被引用组件,依赖 CVE 无人盯防,安全红线 |
| P0-3 |
无 JPMS 模块化:JDK 25 项目零 module-info.java |
find . -name module-info.java = 0 |
Guava/Commons 均提供 module-info;无模块化影响强封装与 jlink 场景引用 |
| P0-4 |
无可复现构建:未配置 project.build.outputTimestamp |
pom.xml 无 outputTimestamp |
Reproducible Builds 是开源信任标准;同一 tag 不同机器产物哈希不一致 |
P1 —— 影响工程质量与长期可维护性,纳入下一迭代
| 编号 |
问题 |
证据 |
建议方向 |
| P1-1 |
方法级测试覆盖未审计:1596+ public 方法 / 749 用例,无法回答”每个方法是否都有测试” |
统计对比 |
生成方法-用例映射审计(基于 jacoco.xml 行级缺口),按类补测 |
| P1-2 |
CI 仅 ubuntu-latest:无 macOS / Windows |
ci.yml runs-on: ubuntu-latest |
补平台矩阵;文件路径、换行、字体渲染类方法需跨平台回归 |
| P1-3 |
无 javadoc 发布:文档站缺 API 文档 |
pages.yml 无 javadoc 步骤 |
maven-javadoc-plugin + 发布到 Pages api/ |
| P1-4 |
无 CodeQL 安全扫描 |
同上 P0-2 |
加 codeql-analysis.yml(每周 + push) |
| P1-5 |
benchmark 无 CI 回归门禁:JMH 报告一次生成后过期 |
docs/benchmark-report.md 静态 |
关键基准纳入 CI 阈值(如 join 性能波动 ±30% 报警) |
| P1-6 |
第三方依赖版本未全部集中治理:jakarta.mail / commons-net / zxing / angus-mail 版本仅存于 sure-extra/pom.xml |
对比 sure-bom/pom.xml |
移入根 pom / sure-bom 的 dependencyManagement,统一升级 |
| P1-7 |
无版本策略文档:semver、破坏性变更声明缺失 |
无 docs/versioning.md |
定义 semver 承诺与破坏性变更流程(对标 Commons 兼容承诺) |
| P1-8 |
sure-spring-boot-starter 无独立测试与示例 |
模块测试数 0(starter 未在统计) |
补 starter 冒烟测试 + examples 用法 |
P2 —— 锦上添花,长期社区建设
| 编号 |
问题 |
建议方向 |
| P2-1 |
无属性/模糊测试:边界全靠手写 |
引入 jqwik 或 junit-quickcheck,对 StrUtil/ArrayUtil 等生成式测试 |
| P2-2 |
教程与示例不足(第 14 项未启动) |
文章 / 教程 / Awesome Java 提交 / 示例项目 |
| P2-3 |
双 CI 一致性:本地脚本(scripts/)与 Actions 职责边界未文档化 |
文档化发布/检查入口,避免漂移 |
| P2-4 |
社区可见性:缺下载量/star 激励 |
shields 加 “Maven Central downloads” 徽章;CONTRIBUTING 加 good-first-issue 指引 |
四、整改方向(按问题分组)
- 信任工程(P0 全部):覆盖率达标并锁门禁 0.90 → 供应链扫描(OSV + CodeQL)→ JPMS module-info → Reproducible Build。这四项完成后,suretool 在”安全、可靠”维度具备对标 Guava/Commons 的硬证据。
- 质量纵深(P1):方法级测试审计补测 → 跨平台 CI → javadoc 发布 → benchmark 门禁 → 依赖版本集中治理 → 版本策略文档。
- 生态建设(P2):属性测试 → 内容与示例(对接第 14 项)→ 社区指标。
五、整改任务清单(软件研发小组五步闭环)
每项任务含:负责人角色 / 输入 / 产出 / 验收标准 / 依赖。按序执行,P0 优先。
| # |
优先级 |
任务 |
负责人 |
产出 |
验收标准 |
依赖 |
| T1 |
P0-1 |
完成 sure-core 覆盖率 ≥90%,门禁 0.71→0.90 |
研发工程师 + 质检官 |
补测代码 + pom 门禁 |
mvn -pl sure-core verify 全绿且覆盖率 ≥90% |
第 13 项存量补测 |
| T2 |
P0-2 |
接入 OSV-Scanner(依赖漏洞) |
质检官 |
CI job + 报告 |
push/PR 自动扫描,漏洞阻断合并 |
T1 后并行 |
| T3 |
P0-2 |
接入 CodeQL(源码安全) |
质检官 |
codeql-analysis.yml |
push 自动分析,高危阻断 |
独立 |
| T4 |
P0-3 |
各模块加 module-info.java(JPMS) |
架构师 + 工程师 |
13 个 module-info |
jdeps/mvn package 通过;module 名规范 |
T1 后 |
| T5 |
P0-4 |
配置可复现构建 |
架构师 |
pom outputTimestamp |
同 tag 两次构建 jar 哈希一致 |
独立 |
| T6 |
P1-1 |
方法-用例映射审计并按类补测 |
工程师 + 质检官 |
审计报告 + 补测 |
sure-core 每 public 方法至少 1 用例命中 |
T1 |
| T7 |
P1-2 |
CI 补 macOS / Windows 平台 |
质检官 |
ci.yml 矩阵 |
三平台 verify 全绿 |
独立 |
| T8 |
P1-3 |
javadoc 发布到文档站 |
质检官 |
pages.yml api/ 目录 |
文档站可访问 javadoc 首页 |
独立 |
| T9 |
P1-5 |
benchmark 纳入 CI 回归门禁 |
架构师 + 工程师 |
基准 CI job + 阈值 |
join/parse 等关键项波动超阈值报警 |
独立 |
| T10 |
P1-6 |
第三方依赖版本集中到 BOM |
架构师 |
sure-bom dependencyManagement |
各模块版本单点维护 |
独立 |
| T11 |
P1-7 |
版本策略文档(semver + 破坏性变更) |
产品经理 |
docs/versioning.md |
含兼容承诺与变更流程 |
独立 |
| T12 |
P1-8 |
starter 冒烟测试与示例 |
工程师 |
starter 测试 + examples |
starter 上下文加载/属性绑定测试通过 |
独立 |
| T13 |
P2-1 |
引入属性测试覆盖核心工具 |
工程师 |
jqwik 用例 |
StrUtil/ArrayUtil/CollUtil 生成式测试并入 verify |
T6 |
| T14 |
P2-2 |
影响力内容与示例项目(第 14 项) |
产品经理 + 工程师 |
文章/教程/Awesome Java/示例 |
文档站教程 ≥5 篇、示例仓库可用 |
T1-T12 分批 |
执行建议:T1-T5(P0)为一期,建议本迭代优先完成;T6-T12 为二期;T13-T14 为三期(T14 即 ROADMAP 第 14 项)。每批完成按团队流程 commit + push + CHANGELOG 登记。