代码质量衡量指标
1 代码质量衡量指标
SQALE(Software Quality Assessment based on Lifecycle Expectations)方法整合了ISO-25010标准与代码规范,其目标是:以客观、准确、可复制和自动化的方式为评估软件应用程序的源代码提供支持;为管理技术债务提供一种有效的方法。SQALE是目前众多主流代码分析工具的参照标准,包括我们熟知的SonarQube,和CoderGears, SQUORE等商用代码扫描分析工具。
-
编码规范:是否遵守了编码规范,遵循了最佳实践。
[强制]等级规约必须遵守 -
潜在问题:可能在最坏情况下出现问题的代码,以及存在安全漏洞的代码。
数量小于10,安全风险类潜在Bug必须修复 -
文档和注释:过少(缺少必要信息)、过多(没有信息量)、过时的文档或注释。
-
重复代码:违反了Don’t Repeat Yourself原则.
重复代码不超过20% -
复杂度:代码结构太复杂(如圈复杂度高),难以理解、测试和维护.
圈复杂度超过20的代码必须重构
圈复杂度 | 代码状况 | 可测性 | 维护成本 |
---|---|---|---|
1-10 | 清晰、结构化 | 高 | 低 |
10-20 | 复杂 | 中 | 中 |
20-30 | 非常复杂 | 低 | 高 |
>30 | 不可读 | 不可测 | 非常高 |
-
单元测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够。
达到70% -
技术债:偿还债务所需耗费的资源/重写所有代码预估耗费的资源
SonarQube中- [0, 5%] -> A , 默认需要达到的等级
- (5%, 10%] -> B
- (10%,20%] -> C
- (20%, 50%] -> D
- 高于50% -> E
达到100%时,即债务开始超过资产,资不抵债,这时就称这种情况为“技术破产”。
负债等级达到B或负债比率小于等于10%