前言

  代码质量在研发过程中是一个很重要的因素,更好的代码质量能产生更少的 BUG,也能降低代码的维护成本使开发人员更不容易犯错,从而使产品的质量得到提升。所以,如何定义代码质量,如何测量并可视化的展现就成了我们探索的方向。
  今年下半年,我们在团队内部引入了代码健康度评测指标及对应 Smart Code 的平台,它是一个自动化的代码质量评测系统,能够给开发者提供多个维度的分析结果及对应的报告,帮助开发者更好的发现潜在问题,提升代码质量。目前,我们的这套系统已经不断迭代并在团队内部运行了 2 个多月,大家积极响应,利用个人时间结合平台所发现的问题进行了多轮优化和重构,通过指标及结果来看,很多项目的代码规范性和代码质量相比过去有了明显的提升,取得了不错的效果。
  我们打算在这里简单介绍一下我们的 Smart Code 代码质量评测平台。一方面是对过去在代码质量保障方面的回顾和思考,另一方面也希望能起到抛砖引玉的作用,让大家分享更多、更好的方案。
 

背景

  原先我们团队在代码质量评测方面的手段不多,也存在诸多痛点,如:

  针对上述的问题和痛点,我们希望有这样一套代码质量评测体系:

  因此,我们引入了代码健康度指标及 Smart Code 平台
 

代码健康度指标说明

  目前代码健康度主要包含以下 3 个维度,通过一定的权重综合计算得出最终的代码健康度:

  1. 代码规范性得分:通过 Sonar、ESLint 及我们自研的工具对代码进行扫描,根据最终发现的问题数量及对应的严重级别、代码总量加权系数综合计算得到一个代码规范性得分;
  2. 代码复杂度得分:较低复杂度的代码能提高可读性、降低维护成本,避免一些不可控的问题出现。我们通过统计项目的整体圈复杂度,结合代码总行数,得到千行代码圈复杂度,然后按照一定的标准计算得到代码复杂度得分(代码圈复杂度的介绍及优化方式可以参考下这篇文章
  3. 代码重复率得分:重复率较高的代码,一来增加代码体积、二来可能会出现代码漏改导致出现问题的情况。我们通过统计项目代码的整体重复比例,然后按照一定的标准计算得到代码重复率得分。  

Smart Code 平台简介

  我们平台目前主要还是采用定时扫描的策略(每周定时扫描 + 夜间针对当天有代码提交的项目进行扫描),同时结合我们内部的服务治理平台获取每个项目预先设置好的配置信息进行检查,最终将每次的检查结果落地并进行平台化的展示。
  平台部分截图如下:

                        dashboard


                        项目列表


                        项目详情

未来的计划

  经过一段时间的实际使用之后,我们收到了不少的反馈,发现目前的指标维度其实是不够完善的,平台的交互体验也有提升空间,后续我们打算从以下这几个方面进行优化改进:

  以上就是我们团队在代码质量评测方面所进行的探索,目标是打造一套完善的代码质量评测体系,希望能提供给大家一些有益的参考,如果大家有更好的想法和方案,也欢迎一起探讨和分享。


↙↙↙阅读原文可查看相关链接,并与作者交流