基于 SonarQube7.4 实现代码规范自动化检测解决方案
2020-11-03 本文已影响0人
夹胡碰
解决方案说明
- 概述
代码规范检测,是对代码的可靠性、安全性、可维护性、代码重复率、代码量大小进行检测和评判,生成质量报告,反馈给开发人员进行代码优化。
- 检测闭环
该解决方案使用SonarQube作为核心检测工具,通过1
开发人员push/merge代码=》2
执行SonarQube代码规范检测=》3
企业微信通知=》4
反馈开发人员代码检测结果,形成闭环。
- 拒绝策略
整个解决方案刚刚实施,使用软校验的形式进行代码检测,对不规范的代码不强制限制提交,起督促监督作用。后期可针对重点项合理划分检测阈值,逐步提升至硬校验。
检测流程
后端开发人员push/merge代码到dev
分支时,触发gitlab-ci,启动gitlab-runner执行gitlab-ci.yml脚本,执行sonar-scanner代码规范扫描命令,扫描结果推送至SonarQube(可在Web-UI界面查看检测结果详情),检测结束之后触发SonarQube-WebHooks发送统计结果到PushMessageServer服务,解析转换Json结果集并调用企业微信机器人通知Rest Api,对检测结果进行消息推送至企业微信。开发人员可以通过消息链接看到SonarQube-Web-UI的详细检测结果。

检测功能
1. 检测项说明
合计388条规则
- Sonar way 内置337条规则
- alibaba-p3c 51条规则 - Alibaba Java Coding Guidelines

2. 检测阈值配置
阈值可配置,暂时针对代码可靠性(A)-bugs,代码安全性(A)-漏洞,代码可维护性(异样),代码重复率(10%)。进行代码检测是否通过的评判项。
3. 支持多分支
暂时只针对dev分支进行检测
4. 提醒说明
不强制拒绝提交代码,软校验功能,检测不通过@人进行修改,通过只提示检测通过。但是,提交通过也不表示没有bug,有可能是严重程度没有达到阈值,需要长期关注。
5. 后期优化
针对检测项,及评判阈值,进行合理的修改。
检测通知样例
- 通过(绿色)

- 未通过(黄色)

SonarQube检测面板样例
http://192.168.102.27:9000

检测服务样例

监测项样例
1. 代码可靠性 - bugs


2. 代码安全性 - 漏洞


3. 代码可维护性 - 异样/异味



4. 代码重复率

5. 代码量大小


相关参考
SonarQube工具核心参考
安装部署参考
- Linux Ceonto7安装Docker-CE并使用
- Docker安装Mysql 5.7并使用
- Docker安装gitlab服务器
- Gitlab Runner安装注册
- sonarQube + gitlab-runner 实现代码规范自动化检测
- 企业微信群创建 - 群机器人 - 实现通知推送