编辑推荐: |
本文来自于csdn,本文主要做代码质量扫描,会扫描出漏洞、bug、可以改进的代码规范等问题。 |
|
一、启动SonarQube
1、配置SonarQube
配置好JDK1.8之后呢,就要开始sonar的环境变量配置啦:首先添加系统变量。变量名:SONAR_RUNNER_HOME,变量值:C:\sonar-scanner3.0。
然后在系统变量path后加 ;C:\sonarqube-6.3\bin\windows-x86-64;%SONAR_RUNNER_HOME%/bin;
接下来谈谈conf文件夹下的配置文件:sonar.properties。这个文件里的代码都是用#注释的,一般情况下你没必要去修改它。对,你没有看错,的确是不用修改这个配置文件。
(不知道为什么网上好多相关博客都是对这个配置文件进行各种修改,当时照着弄了半天,也没有整成功~~~各种心塞)
2、成功启动
启动dos窗口,将bin/windows-x86-64文件夹下的StartSonar.bat拖到dos窗口,敲回车执行,当你看到如下图红框所示的信息说明你已经成功启动了SonarQube。此时在浏览器地址栏中输入http://localhost:9000,成功显示sonarqube主页。这是就可以登陆啦,用户名和密码都是admin。

然而,事情似乎并不一定是一帆风顺的,当你按照上述进行操作时,可能会遇到一些问题。在这里谈谈自己遇到的两个问题及解决方案。
3、问题一:sonarqube未正常关闭
当你看到如下所示内容的时候,很可能是由于之前打开的sonarqube未正常关闭,这时需要打开任务管理器,将和Java有关的进程全部关掉,重新启动sonarqube即可成功。

4、问题二:JDK版本
当你看到如下图所示内容时,应该是JDK版本过低。通过查看日志文件(logs文件夹下的sonar.log)得知关键错误信息为
WrapperSimpleApp:Unable
to locate the class org.sonar.application.App:java.lang.UnsupportedClassVersionError:
org/sonar/application/App : Unsupportedmajor.minor
version 52.0 |
解决方法是按照相关操作配置JDK1.8,俺也是历经问题才知道原来这个错误是JDK版本引起的。 
二、扫描源码
1、配置sonar-project.properties
在要进行代码质量检测的项目根目录下新建一个名为sonar-project.properties的配置文件,在这里以SSH网上商城为例,sonar-project.properties所在位置和配置文件中的内容如下所示:

<span
style="font-family:'KaiTi_GB2312';font-size:24px;">sonar.projectKey=TGB-shop
sonar.projectName=shop
sonar.projectVersion=1.0
sonar.sources=src
sonar.language=java
sonar.sourceEncoding=UTF-8
</span> |
相关属性说明如下:

2、执行sonar-scanner,扫描源码
首先切换到源码根目录,然后执行sonar-scanner.bat。

启动sonar-scanner.bat的过程可能会有些稍长,耐心等待,当出现“EXECUTION
SUCCESS”字样时,表示成功启动。

3、浏览sonarqube主页
登录http://localhost:9000,你将会看到使用sonar-scanner扫描过的项目,如shop。

打开这个shop,你将能看到这个shop项目存在的问题。如CategorySecondData.java文件。

sonar规定使用list.isEmpty()来替代list.size()>0。至于为什么要这样做?请点击红框区域,你的疑惑将会一扫而空。
三、SonarLint
1、检测代码
SonarLint是我们常用IDE的一个插件,官网给出了VS、Intellij IDEA、Eclipse这三个IDE。这里以VS的SonarLint为例。需要注意的是官网只给出了VS2015和VS2017的插件。我们下载好VS2015的插件。SonarLint.VSIX-2.11.0.1102-2015.vsix,安装即可。
接下来我们用VS2015把ITOO.Basic系统打开,在项目处,右键选择SonarLint Connected
Mode—Exclude from Analysis。在该项目的类文件下就能看到代码质量提示啦。

你可能会问,我们开发.NET版本的ITOO用的是VS2012,它是否也有SonarLint呢?还真有,就是这货VSSonarExtensionMetroVs2012.vsix。只不过呢,这个东东怎么用还真是不清楚,反正和VS2015使用方式是灰常不一样的,网上也没有找到相关的内容介绍。
2、连接sonarqube服务器
按照如下步骤操作:分析→Manage SonarQube Connections→Connect。在Connect
to a SonarQube Server窗口中,输入SonarQube的URI、用户名和密码,点击“Connect”按钮之后,出现图三所示内容,找到对应的项目,右键bind,绑定到服务器上。此时会在解决方案下出现名为“SonarQube”的文件夹,里面包含SolutionBinding.sqconfig和TGB-ITOO5.0BasicCSharp.ruleset两个文件。

图一

图二

图三

图四
3、关闭具体规则
此时,您可能要问啦:将VS解决方案绑定到SonarQube项目上有什么用呢?
此操作自动更新解决方案的规则集,并将解决方案附加到所需的Roslyn分析仪。此时,你可以在规则集编辑器中禁用任何规则,甚至更改默认严重性。规则集编辑器就是在连接sonarqube服务器时,自动生成的TGB-ITOO5.0BasicCSharp.ruleset文件。

|