Sonar介绍
近期了解到一个代码自动检测工具Sonar,从网上查找的相关介绍如下:
SonarQube(sonar)是一个开源平台,用于管理源代码的质量。 SonarQube不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。 SonarQube可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。
(1) 不遵循代码标准
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
(2) 潜在的缺陷
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
(3) 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
(4) 重复
显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube可以展示 源码中重复严重的地方。
(5) 注释不足或者过多
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
(6) 缺乏单元测试
SonarQube可以很方便地统计并展示单元测试覆盖率。
(7) 糟糕的设计
通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过SonarQube可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
————————————————
原文链接:https://blog.csdn.net/cly125521/article/details/100879520
部署安装
传统的代码走查等方式只能被动的发现部分问题,而自动化检测工具无疑能够极大提升整体的代码质量,于是我迫不及待的从官网获取了相关信息并在本地安装试用。
下载最新版本sonarqube,下载地址 https://www.sonarqube.org/,当前最新的版本为7.9.1
下载代码分析器,当前版本要求msbuild在12以上版本,对应的vs应在vs2015以上版本,我本机使用vs2017.
分析器下载地址:
下载并安装jdk,要求jdk版本在java11以上。
上述软件版本一定要对应,否则会有很多问题,例如我本机已安装了jdk,但是是1.8的版本,无法启动sonar管理端。
msbuild必须是12以上版本,一开始使用的是vs2012,发现问题后修改为vs2017
由于分析器使用java进行开发的,所以执行分析器的机器必须也安装java11以上版本。
本机环境:window 7 旗舰版,已安装了oracle11g,所有直接准备使用oracle数据库。
只要保证java环境正确,其他不需要任何环境变量相关的设置,在cmd中输入java -version命令验证
初始化数据库
创建表空间,创建用户,分配权限。
create tablespace sona datafile 'E:\app\Administrator\oradata\orcl\sona.dbf'
size 30m autoextend on next 10m;
create user sona by sona
default tablespace sona ;
grant connect,resource to sona ;
SonarQube配置信息
SonarQube管理端的配置比较简单,打开sonarqube-7.9.1\conf\sonar.properties将内容替换成如下:
sonar.jdbc.url=jdbc:oracle:thin:@localhost/orcl
sonar.jdbc.username=sona
sonar.jdbc.password=sona
这里注意配置文件节点的顺序,一开始jdbc.url是在最下面的,配置后总是报数据库无法连接的错误,仔细看了下日志说用户名密码错误,反复确认用户名密码没有问题,猜测是不是跟顺序有关,调整一下后ok了,不明白为什么按一般逻辑来说不应该有这样的问题。
分析器配置
找到解压后的sonar-scanner-msbuild-4.7.1.2311-net46/SonarQube.Analysis.xml,修改配置信息如下:
<Property Name="sonar.host.url">http://localhost:9000</Property>
<Property Name="sonar.login">admin</Property>
<Property Name="sonar.password">admin</Property>
<!--这里是配置管理端,连接管理端进行信息传输 -->
<Property Name="sonar.jdbc.url">jdbc:oracle:thin:@localhost:1521:orcl</Property>
<Property Name="sonar.jdbc.username">sona</Property>
<Property Name="sonar.jdbc.password">sona</Property>
<!--这里是配置数据库连接信息 -->
xml里面已经有这些信息了,需要把注释段去掉,按自己的需求进行配置即可。
执行项目分析
参考网上别人分享的配置文件,根据自己项目修改后保存为bat可直接使用
echo off
D:\sonar-scanner-msbuild-4.6.2.2108-net46\MSBuild.SonarQube.Runner.exe begin /k:"prj-key" /n:"prj-name" /v:"1.0"
::编译代码
set "msbuildPath=D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64\MSBuild.exe"
if exist "%msbuildPath15%" set "msbuildPath=%msbuildPath15%"
if "%msbuildPath%" == "" goto nomsbuild
"%msbuildPath%" /t:Rebuild
D:\sonar-scanner-msbuild-4.6.2.2108-net46\MSBuild.SonarQube.Runner.exe end
echo 扫描完成
pause
:nomsbuild
echo 没有找到MSBUILD
pause
:exit
替换D:\sonar-scanner-msbuild-4.6.2.2108-net46\MSBuild.SonarQube.Runner.exe 为你本机的路径。/k:"prj-key" /n:"prj-name" /v:"1.0" 分别是/k项目的主键(自己定义不重复就行),/n项目名称,/v项目的版本号,根据自己的项目情况修改。
分析完成如下图:
查看代码质量分析情况
浏览器输入管理端地址:http://localhost:9000/projects,即可查看代码分析结果。