代码质量指标汇总
衡量软件质量的常用指标
-
源代码行数(SLOC) :
它主要体现了软件的规模,并为项目的发展和规划提供了有用的信息。比如,如果我们每月计算一次源代码行数,那么就可以绘制一个项目成长图。当然,这种方式并太不可靠,原因是重构和设计阶段等因素会对此产生影响,但是至少可以为项目描绘一个趋势。
个人观点:这个指标只能描述一个项目发展趋势,绝对不能用来支撑项目代码质量。 -
代码段/模块/时间段内的Bug数:
通过缺陷跟踪,我们可以利用报告工具(如 Mantis )计算出每个代码段、模块或者特定时间段内的bug数量。凭借这些数据,我们可以尽早的查出和解决缺陷起因。
个人观点:本人曾经在公司内部,写了一套analysis工具,提取了commit message,在通过各种维度划分,diff,在结合圈复杂度等指标与开发周期产生的bug-list做出映射,最终过滤出了一小部分bug-task与代码的特征关系。但是由于研发在建立task和提交commit之间的时间出入,很难映射出强特征关系......(个人其实很无语,毕竟是国内头部互联网公司) -
代码覆盖率:
代码覆盖率反映了程序当中源代码被测试的程度。有许多自动化工具可以完成该功能,比如 Cobertura 。代码覆盖率不能完全代表单元测试的整体质量,但是可以反映出测试覆盖率的问题。它可以和其他测试指标一起作为软件质量的指标。同时,单元测试代码、集成测试场景和结果应该经常地被审查。
个人观点:TMD真扯淡,这不是加大研发成本吗,虽然这个可以有效避免bug,但是在敏捷的时代这会拖累需求上线的... -
设计/开发约束:
本人没话说,也懒得定义啥了,就静态代码扫描那一套,code style什么的,难的不是工具,是去写合适的校验规则,在检测和编码找到折中的平衡点... -
圈复杂度:
上过学的都知道,确实是一个衡量代码逻辑复杂度的较好标准,高圈复杂度的代码确实难以维护,但是rd不管你这一套啊。上百圈复杂度的痛点代码就是不解耦重构...