SonarQube + Maven分析代码质量
1.1. sonarqube简介
SonarQube是个开源的代码质量管理平台,可以通过多种工具和维度对代码质量进行分析,部分功能还支持可视化,对于代码缺陷一目了然。SonarQube比较开放,支持通过插件扩展功能。支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。由于我们的项目java语言,使用maven构建,接下来仅介绍sonarqube与maven构建集成进行代码质量扫描。
1.2. 安装配置sonarqube
Docker镜像安装(sonarqube+mysql),步骤省略
1.3. 与Maven集成
${MAVEN_HOME}/conf/settings.xml 配置如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.3.74:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
执行命令:mvn sonar:sonar -Dsonar.login=5734cc6f6d33232a5d7c45453aa01d70b0427015
使用sonarqube的token执行
首先,执行命令
mvn sonar:sonar -Dsonar.login=5734cc6f6d33232a5d7c45453aa01d70b0427015 ,如果日志输出”BUILD SUCCESS“说明已经构建成功。在浏览器查看分析结果。
1.4. 查看分析结果
在浏览器访问:http://192.168.3.74:9000,账号登录进入。
1.4.1. home页
下面是home页,右边PROJECTS页面列出了所有的工程。点击项目链接,可以查看项目详细情况。
1.4.2. 项目质量信息
包含了很多信息,比如质量阈、bugs、漏洞、坏味道、单元测试覆盖率、重复度、注释量等。
质量阈:列出不达标的项,如漏洞、bugs、单元测试覆盖率、新代码重复度
新增bug或漏洞:相对于上次分析结果后新增的问题
债务:从提交日起到现在未解决的时间
新债务:从第一次分析开始到现在未解决的时间
代码覆盖率:在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,比如,代码覆盖率必须达到80%或 90%
注释量:具体项目-指标-大小-注释
http://192.168.3.74:9000/component_measures?id=com.navinfo%3Acsu-parent&metric=comment_lines_density
1.4.3. 具体问题分析
点击“问题”,打开问题视图页。通过点击问题数,如下红框所示,列出问题明细,包括问题严重级别,对应的问题数量,问题的描述
1.4.4. 问题解决结果
解决结果:确认、解决、误判、不修复。
SonarQube允许管理员对问题进行重新确认。
1.4.5. 自定义规则
质量配置是在分析时使用的规则集合,每个语言都有默认配置。没有指定其他配置的项目会使用默认配置。
sonarqube很多自带的规则对项目有些影响,部分规则不需要启用。sonarqube不允许修改默认的最优配置,我们先复制出来再修改。
不需启用的规则,点击“挂起”
修改项目质量配置规则:项目-配置-质量配置,选择自定义的规则
1.5. IDEA集成SonarLint
SonarLint 是一个插件,可以集成到开发工具里,当打开java文件时可自动分析静态文件,也可以手动对整个项目做分析;可连接到SonarQube同步分析规则、质量规则与自定义设置;
接下来就说明下IDEA如何集成
1、配置maven
${MAVEN_HOME}/conf/settings.xml 配置如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.3.74:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
2、安装插件sonarLint
3、配置SonarQube servers
如果勾选 Automatically tigger analysis ,将会自动对打开的文件进行分析
4、绑定上一步骤创建的,以及选择项目对应的SonarQube的项目
5、执行命令 ,即可将项目进行分析,以及将分析的结果同步到SonarQube平台上
mvn sonar:sonar -Dsonar.login=5734cc6f6d33232a5d7c45453aa01d70b0427015