SuperAPI AI 工具集

code-quality-scoring

测试与质量

查看项目

更新于 10-15 14:48

技能介绍

用途

Code Quality Scoring 是一个厂商中立的框架,用于在应用和组合(portfolio)层面量化并沟通软件质量。多数质量类技能告诉你如何修复单个问题,而这个技能告诉你如何给整个代码库打分、估算其债务成本,并向不读代码的人解释这两者。

适用场景包括:

  • 接手不熟悉的代码库,需要一份健康基线。
  • 决定是重构、重写还是淘汰某个应用。
  • 在多个应用(组合)之间排定修复优先级。
  • 估算一批质量缺陷积压所代表的工作量/成本。
  • 向经理、产品负责人或高管汇报质量/债务状况。

不适用于修复单个缺陷——那应使用语言特定的质量技能(Python/Java/PHP/TS 质量反模式)和 code-review-standards。

来源说明:以下评分框架源自 CAST Highlight 的代码质量指标与方法论(https://doc.casthighlight.com/),经改写为厂商中立模型。阈值区间与债务密度数字是 CAST 基于其 AppMarq 基准数据集的专有校准,此处作为带署名的参考区间呈现,而非通用标准。凡 CAST 引用开放标准之处(工作量用 COCOMO II、许可证用 SPDX/choosealicense、安全用 CWE/CVE),应引用那些一手来源。

核心概念 1 — 软件健康度是复合指标

将整体代码健康度视为三个独立维度的算术平均,每个维度 0–100 分。这一分解(源自 CAST Highlight)之所以有用,是因为每个维度对应不同类别的修复和不同利益相关者的关切:

维度 别名 衡量内容 对应检查清单族
韧性/健壮性 Software Resiliency 会在生产环境崩溃吗?错误处理、防御性编码、可靠性 健壮性、安全
敏捷性/可变更性 Software Agility 团队能否快速理解并修改它?文档、可读性、命名 可变更性、可迁移性
优雅性/效率 Software Elegance 是否精简?复杂度、死代码、算法/数据访问效率 效率

软件健康度 = avg(韧性, 敏捷性, 优雅性)

阈值区间(署名 CAST 校准——作为指导而非铁律):

区间 健康度 敏捷性(各维度切点不同)
🔴 低/红 低于约 53 低于约 54
🟠 中/橙 约 53–75 约 54–69
🟢 高/绿 高于约 75 高于约 69

关键洞见不在于具体数字,而在于每个维度有自己的分布和修复策略,因此单一混合评分会掩盖真相。一个代码库可能在韧性上是绿色(很少崩溃),但在敏捷性上是红色(没人能安全地修改它)。详见 software-health-framework.md。

核心概念 2 — 技术债务是修复工作量估算

将债务表达为估算的修复工作量,由违规密度乘以按语言区分的每行代码债务因子推导。更高级/冗长的语言(Java、JavaScript、PHP)每行代码往往比简洁的脚本语言(Python、shell)承载更多债务。始终以带署名的区间呈现(“按行业基准,Java 的债务密度中位数约为 Python 的 3–4 倍”),而非照抄精确数字,并且只有在明确陈述假设时才换算成金钱/时间。CAST 的维护工作量模型本身建立在 COCOMO II 之上。详见 technical-debt-estimation.md。

核心概念 3 — 云就绪度是扫描 + 调研

云成熟度是代码扫描分(源码中检测到的阻碍项和促进项——例如硬编码文件路径和主机名是阻碍项;无状态性和外置配置是促进项)与调研分(代码无法揭示的团队/运营因素)的平均。详见 cloud-maturity.md。

核心概念 4 — 开源安全是三部分指数

第三方风险是安全(按严重性加权的 CVE 数量)、许可证合规(低/中/高风险许可证的占比)和过时程度(与最新版本的版本差距)三者的平均。这与 Phase 1 的 OSS Safety 工作交叉引用——不要重复。详见 open-source-safety.md;修复机制请使用 universal/security/security-scanning 和 toolchains/universal/dependency/dependency-audit,它们已包含许可证风险层级和 CVE 加权框架。

核心概念 5 — 按业务影响排优先级

一个没人依赖但缺陷密集的应用,优先级低于一个中等缺陷但关乎收入的应用。将技术风险分与业务影响分(故障后果、受众规模、发布/维护工作量)混合,使修复按对业务的风险排序,而非按原始缺陷数。CAST 将此形式化为 ROAR 式指数(按业务影响加权的风险)。详见 quality-communication-guide.md。

如何应用(快速工作流)

  1. 从现有 linter/扫描器为三个健康维度打分——将每个工具的发现映射到韧性/敏捷性/优雅性,取平均得出健康分,定位到红/橙/绿区间。
  2. 估算债务——将违规密度乘以该语言的债务因子(作为带署名的区间),以工作量(小时/FTE)表达并陈述假设。
  3. 若与决策相关,评估 OSS 安全性和云就绪度。
  4. 按业务影响加权,对应用/模块排序。
  5. 使用利益相关者框架沟通——以风险和金钱开头,而非规则名称。

反模式

  • 只报告单一混合评分,隐藏实际为红色的维度。
  • 引用精确美元债务数字却不说明 LOC、时薪和密度假设——应呈现区间和假设。
  • 把 CAST 的阈值数字当作通用法则——它们只是一家厂商的校准;应作为参考背景引用。
  • 按缺陷数而非业务加权风险排序修复。
  • 在此重复 OSS 许可证层级——应交叉引用 Phase 1 参考。

导航

  • Software Health Framework — 韧性/敏捷性/优雅性分解、区间,以及如何将 linter 输出映射到其上。
  • Technical Debt Estimation — 修复工作量模型、按语言的债务密度区间(带署名)、COCOMO II 关联、示例。
  • Cloud Maturity — 扫描 vs 调研、代码阻碍项和促进项、如何解读云就绪分。
  • Open Source Safety — 安全/许可证/过时指数;交叉引用 dependency-audit 和 security-scanning 技能。
  • Quality Communication Guide — 业务影响框架、ROAR 式优先级、向非技术利益相关者呈现评分。

相关技能

  • code-review-standards — 逐项检查清单,含效率 + 可迁移性维度(Phase 1);本技能将这些族聚合为评分。
  • security-scanning / dependency-audit — OSS 安全修复机制。
  • software-patterns — 低优雅性/敏捷性评分所指向的架构信号。