文档 / 质量与治理

与 N−1 对比度量

Yuli 如何度量质量、始终与上一版本进行比较,并要求智能体在测试前做出改进。

Yuli 持续度量代码质量,并始终将其与上一版本 N−1 进行比较。规则很简单:绝不倒退,只能向前。

一切都会自动度量:打开项目时、每次构建、测试或验证之后、每次新提交时,以及你在编辑器中输入时。

质量面板

从状态栏中的指示器(例如 A · σ 4,5 ▲)或底部面板打开。

标签页 用途
概览 总体评分、sigma、技术债、整洁代码、智能体最近一次度量、下一步改进以及与 N−1 的对比。
实践 14 项整洁代码实践、它们的收益以及应优先着手的地方。
度量 智能体的度量阶段:结论、检查项、前 → 后对比以及轮次。
决策 重构还是演进?标准、矩阵和经济性判断。
可维护性 可维护性指数、认知复杂度、重复、耦合和技术债。
预防 安全、性能、健壮性和无障碍方面的发现项。
架构 项目的架构规则。
测试健康度 测试套件的状态。
质量 圈复杂度、缺陷帕累托图、覆盖率和测试。
规模 行数、语言、组件和功能点。
性能 上一次性能分析中每个方法的开销,以及 REST 客户端的延迟。
统计 概率、分布和趋势。
六西格玛 DMAIC、DPMO、西格玛水平、FPY/RTY、Cpk 和控制图。
历史 每项指标的序列以及相对 N−1 的变化。
指南 用通俗语言解释一切,并带有搜索功能。

每个部分都有一个 “?” 按钮,用不含术语的方式进行解释。“无数据”绝不是凭空捏造的零:它会说明还缺什么才能度量。

工具栏按钮

  • 刷新:重新度量。
  • 记录版本:将本次度量保存为当前版本。之前的版本成为 N−1。
  • 打开报告:写入 docs/quality/reporte-calidad.md 并在编辑器中打开。

什么是 N−1

Yuli 只保存两个版本:当前版本和上一版本。使用 Git 时,每次在工作区干净的状态下产生新提交,就是一个新版本。点击 记录版本 时以及智能体进行度量时,也会产生新版本。

每项指标都会显示 ▲(变好)、▼(变差)或 =(持平)。只要有一项指标变差,结论就是“已变差”。

评级

总体评级从 A 到 E,综合了 ISO/IEC 25010 的十个属性:功能性、效率、可靠性、健壮性、安全性、可维护性、易理解性、易用性、可移植性和兼容性。

评级 分数 含义
A ≥ 80 优秀
B ≥ 65 良好
C ≥ 50 可接受
D ≥ 35 欠佳
E < 35 严重

一个严重漏洞会将安全性上限限制为 59(D),一个高危漏洞会限制为 79(B)。严重问题绝不会显示为绿色。

14 项整洁代码实践

每项实践都是一个带目标值的数字,适用于任何语言。

实践 度量方式 目标
描述性 描述性命名,以及每 KLOC 的魔法数字 ≥ 95 %
小函数 不超过 60 行的方法 ≥ 95 %
避免重复 位于 6 行及以上重复块中的行 ≤ 3 %
可读代码 认知复杂度 ≤ 15 的方法 ≥ 95 %
错误处理 每 KLOC 的健壮性发现项 0
简单结构 圈复杂度 ≤ 10 且嵌套深度 ≤ 4 ≥ 95 %
风格一致 缩进、行长和命名约定 ≥ 90
有意义的命名 非噪声变量(tmp、aux、data2) ≥ 98 %
参数少 参数不超过 5 个的方法 100 %
组合优于继承 继承深度 ≤ 3 100 %
小类 ≤ 300 行且 ≤ 20 个方法 100 %
无死代码 被注释掉、不可达或未使用的代码 0
编写测试 含逻辑且有对应测试的文件 100 %
持续重构 相对 N−1 的倒退 0

整洁代码得分是所有有数据的实践的平均值。80 分及以上即达标。

六西格玛与缺陷密度

指标 含义
缺陷密度 每千行代码(KLOC)的缺陷数,附带 95 % 置信区间。
DPMO 每百万机会缺陷数(每一行代码就是一次机会)。
西格玛水平(σ) 以经典刻度表示的 DPMO:6σ = 3.4 DPMO;4σ ≈ 6,210。4.5σ 起为绿色。
Cpk 将圈复杂度保持在 ≤ 10 的能力:≥ 1.33 即为具备能力。
FPY / RTY 一次性通过的构建、测试和验证。

中等及以上严重级别的发现项计为缺陷。

智能体的度量阶段

这是 8 个阶段中的第五个,位于“实现”和“测试”之间。它只度量任务改动过的代码,并与起始版本进行比较。

三个时间点

阶段 时机 作用
baseline 修改代码之前 记录任务的起始版本(N−1)。
measure 实现完成后 将改动的代码与 N−1 比较,并给出结论。
after 测试通过后 与 N−1 比较,并重写报告。

何时通过

必须满足以下所有检查:

  1. 没有任何指标比 N−1 更差。
  2. **至少修复了一个缺陷(或本来就没有)。**缺陷密度保持不变是不够的。
  3. 整洁代码有所改善,针对的是低于验收水平的文件。
  4. 新代码从一开始就是整洁的。
  5. 逻辑有测试。

如果一个文件有 0 个缺陷且整洁代码得分在 90 分及以上,它就是已接受的。对已接受的文件,只要求不变差。

结论

结论 结果
通过 任务自动进入“测试”阶段。
需迭代 退回“实现”阶段,并附上需要修正的确切清单,包含文件和行号。
已达轮次上限 轮次已用完:继续进入“测试”,未完成的事项记录在任务中。
没有可度量的代码 该任务没有改动代码。

度量不可跳过。如果智能体试图带着未度量的代码进入“测试”“评审”或“交付”,Yuli 会拒绝。这一点对 Claude Code、Kiro、Codex 和 Antigravity 同样适用。

改进绝不会改变软件的行为:用例相同,输入和输出也相同。

在哪里查看结果

绝不在聊天中。智能体只用一行文字给出结论以及前 → 后对比。详细信息位于 度量 标签页和任务栏中,并附有 在“质量”中查看 按钮。

设置

在度量标签页或 .ai/quality.json 中:

设置 默认值 范围
测试前必须进行度量 是 —
实现 ↔ 度量的最大轮次 3 1 到 10
验收水平(整洁代码) 90 50 到 100

如果存在质量契约,则以契约中的验收值和轮次为准。

在编辑器中

  • 每个方法上方:CC · CoG · MI · líneas · cobertura · costo。
  • 第一行:文件的评级、整洁代码得分及其相对 N−1 的变化。
  • 提示:无意义的命名、魔法数字或死代码,精确到具体的行。

报告

一份唯一的文档 docs/quality/reporte-calidad.md,在每次记录版本时重写。其中包含“智能体度量”部分。工作数据保存在 .ai/state/quality/ 中,绝不会上传到仓库。

坦诚说明局限

  • 复杂度和预防性规则基于文本模式计算,可能存在误报。Java 和 JSP 还会额外使用语法树。
  • 估算(上市时间、成本)采用公认的模型,假设条件可编辑。它们用于辅助决策,而非作为合同预算。