质量评分
功能介绍
如何客观地量化代码质量一直是一个业界难题,但根据代码扫描中暴露的问题,逆向推导仓库的量化得分的方案不失为一项可行的方案。基于此逻辑,质量评分用于帮助开发团队更加直观的评估项目中的代码质量正在稳步提升还是逐渐下滑。
使用功能
您可以在在已执行的扫描任务中查看代码质量分数。
由于扫描自身可评估维度以及启用不同规则所产生的限制,评分较低的代码并非劣于评分较高的,但评分较低的代码一定会在当前扫描的度量维度下拥有更大的改进空间。
我们也更推荐您使用评分来度量同一份代码在不同阶段的质量情况,而不建议对不同仓库进行横向对比(尤其是所启用的规则集合都不一致的情况下)。质量评分为根据扫描结果自动计算得出,为了方便您解读评分与及时修复问题,下文给出了评分的计算机制。
计算机制
质量评分主要从代码规范、代码安全 & 缺陷、重复代码、圈复杂度四个主要维度度量代码质量情况。根据实践数据拟合,得到不同维度下的「问题 - 质量评分」关联函数。
质量评分为百分制,通过对不同维度下的单项评分加权求和得到。
若在扫描方案中关闭重复代码或圈复杂度扫描能力,则使用启用中维度按原有比例加权计算。在重复代码关闭的情况下,计算公式如下:
代码规范评分
根据代码风格类型的问题数据,评估当前代码规范程度。在扫描方案中可以直接开启 CODING 内置的代码规范规则包,或根据团队自身所需从已有规则库中挑选。下图计算公式中的问题特指代码风格类型问题。
非规范类维度
根据非代码风格类型问题数据,评估代码在安全风险、可用性、性能等方面的可靠程度。您可以直接在扫描方案中按需使用内置的基础、功能、安全等分类下的规则包。
重复代码维度
根据代码中重复代码段的数据,评估代码的可读性和可维护性。系统的每一个功能都应该有唯一的实现代码。代码扫描默认对超过 120 个变量或操作符重复判定为重复代码。相关的判定标准可以在「扫描方案」->「度量规则」中进行灵活调整。
重复代码行计算示例:当前代码中共有两个文件 A 和 B,其中 A 和 B 文件有 50 行重复,A 有 100 行,B 有 200 行,则重复率= (50+50)/(100+200)。
圈复杂度维度
根据圈复杂度超标方法的数据,评估代码的可维护性和可测试性。CODING 默认将圈复杂度超过 20 的方法判定为超标方法。相关的判定标准可以在「扫描方案」->「度量规则」中进行灵活调整。
以上不同维度的问题评分与质量评分的关联函数,由实践数据进行函数拟合得到。
推荐的实践方式
设立 owner 和修复计划:每个仓库确定一个负责人,由负责人按照当前情况制定修复周期并监督仓库评分变化,并按照问题严重级别逐步推进团队的质量评分的提升。
优先非规范类问题,相对于代码规范类问题影响的代码可读性,非规范类问题的解决无论从评分提升的激励效果到对服务稳定性和安全性效果都更加明显。
制定激励体系,奖励评分提升较大以及评分较高的仓库成员。
后续更新规划
不同语言制定不同常量,每种语言有自己不同的实现特性,使用统一的千行缺陷做为度量标准并不具备普适性。
增加质量评分趋势,便于团队掌握一段时间代码质量的走势。
代码分析维度更加细化,将非规范维度进一步拆分为:安全漏洞、代码缺陷等。
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。