1. 背景

2. 方案一:提供代码检查表、交叉验收

2.1 优势

  1. 提供代码检查表,每个检查点可能更符合部门实际代码编写规范。
  2. 项目成员交叉验收,一来可以熟悉项目整体情况;二来不管代码好坏,都可以从中学习,外加更多沟通,有利于后续的协助。

2.2 劣势

  1. 人工维护检查点,可能都是拷贝网上现有的代码规范,最多就是根据部门实际情况微调下,可能存在检查点不够全面的问题。
  2. 人工代码评审,一来要看个人的素养和责任心;二来人工总会有疏忽的时候,可能会漏掉一些问题。
  3. 不管是维护检查点文档还是基于这个文档进行人工代码评审,工作量都不会小,通常都会是一整个源码文件对照这个文档进行。如果有 200 个检查点,5 个源码文件,一个文件 1000 多行代码,估计会花费不少时间,加上整理完全部的问题和反馈,等修复完,还要一一验证。

3. 方案二:基于 SonarQube 实现代码评审

3.1 优势

  1. 代码检查点其实,就是 SonarQube 上的代码规则,已经有满足前后端编程语言的规则校验,将近 8000 多个,覆盖前后端,相对于人工整理的更为全面。
  2. 开发人员每次推送分支,都会经过 SonarQube 进行代码评审和校验,每次需要把反馈的问题修复,才能正常推送成功。
  3. 完全基于 SonarQube 实现代码评审流程,无人工参与,减少很大工作量。
  4. 至于代码学习,实际上 SonarQube 的代码规则都会说明问题的原因,以及如何修正,这个也可以是一种学习方式。

3.2 劣势

没有办法提供一个代码检查点表格和代码评审输出文档,但如果对此进行说明,外加项目分支检查结果的截图,我觉得应该是可以理解的,我们的最终目的是代码的质量得到保障,而不是因为要有这个流程和形式。比如,提交给测试的代码评审报告,Test 分支(下图使用 dev 分支举例),质量门禁必须是正常的,并且新问题必须为 0 。

4. 方案三:基于 AI 实现代码评审

4.1 优势

  1. 与 SonarQube 对比,在代码评审上更为智能,能补充 SonarQube 对逻辑以及功能实现方式优化方面不足的能力。
  2. 开发人员每次推送分支,都会有 AI 进行代码评审,然后反馈代码存在的问题,并给出建议,以及提供修正后的代码。而且,全程无需人工参与,减少很大工作量。
  3. 至于学习与交流,通过查看 AI 对代码进行评审并提供的报告,也是可以学到很多东西的。

4.2 劣势

  1. 与 SonarQube 一样,可能无法提供一个很正式的代码评审报告,只能是这个版本,全部分支都推送完成之后,截图输出的报告,该报告必须显示已经没有任何问题了。
  2. AI 代码评审,费用颇高。

5. 总结

  1. 基于对代码质量的有效管理,结合云平台部门当前情况,建议使用方案二。
  2. 待 AI 代码评审能真正落实,再使用方案三。
  3. 至于方案一,起到的效果,可能不会很理想,对比其他方案,没有很大的优势,最后,事情一多,执行没有到位,监管没有到位,可能会流于形式。