1. 传统代码度量(圈复杂度、覆盖率、代码重复率)在 AI 时代的局限性中 AI 生成代码可能"高覆盖低质量"
传统代码度量(圈复杂度、覆盖率、代码重复率)在 AI 时代有何局限性?为什么 AI 生成代码可能"高覆盖低质量"?
- 传统度量的指标与含义
- AI 生成代码"高覆盖低质量"的成因
- 传统度量的盲区
传统代码度量(圈复杂度、覆盖率、重复率)衡量的是"代码的结构与验证程度",在 AI 时代存在局限。局限在于:这些指标衡量"形式"而非"实质"——覆盖率只反映"测试执行了多少行",不反映"断言是否有效、语义是否正确";AI 生成的代码可以轻松达到高覆盖率却低质量,因为 AI 会生成"表面测试"(执行了代码但断言薄弱),或生成大量样板代码拉升覆盖率,而真实业务语义、边界、错误处理仍可能缺失。圈复杂度低也可能只是因为代码被拆成大量无意义的小函数,重复率低也可能因 AI 生成大量"相似但不相同"的代码。核心局限是:传统度量无法捕捉"语义正确性、意图符合性、可维护性的真实质量",而 AI 恰恰最擅长"形式上达标、实质上存疑"。
AI 生成代码是"形式达标"的高手——可以故意写测试来提升覆盖率、拆分函数来降低复杂度。因此传统度量容易被"刷"出好看但虚假的数字。AI 时代需要补充"语义性"度量(变异得分、Spec 符合度、缺陷逃逸)来揭露"高覆盖低质量"。