转载

Sonar实战篇

编辑推荐:
本文来自于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。

Sonar实战篇

然而,事情似乎并不一定是一帆风顺的,当你按照上述进行操作时,可能会遇到一些问题。在这里谈谈自己遇到的两个问题及解决方案。

3、问题一:sonarqube未正常关闭

当你看到如下所示内容的时候,很可能是由于之前打开的sonarqube未正常关闭,这时需要打开任务管理器,将和Java有关的进程全部关掉,重新启动sonarqube即可成功。

Sonar实战篇

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版本引起的。

Sonar实战篇

二、扫描源码

1、配置sonar-project.properties

在要进行代码质量检测的项目根目录下新建一个名为sonar-project.properties的配置文件,在这里以SSH网上商城为例,sonar-project.properties所在位置和配置文件中的内容如下所示:

Sonar实战篇

<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>

相关属性说明如下:

Sonar实战篇

2、执行sonar-scanner,扫描源码

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

Sonar实战篇

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

Sonar实战篇

3、浏览sonarqube主页

登录http://localhost:9000,你将会看到使用sonar-scanner扫描过的项目,如shop。

Sonar实战篇

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

Sonar实战篇

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。在该项目的类文件下就能看到代码质量提示啦。

Sonar实战篇

你可能会问,我们开发.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两个文件。

Sonar实战篇

图一

Sonar实战篇

图二

Sonar实战篇

图三

Sonar实战篇

图四

3、关闭具体规则

此时,您可能要问啦:将VS解决方案绑定到SonarQube项目上有什么用呢?

此操作自动更新解决方案的规则集,并将解决方案附加到所需的Roslyn分析仪。此时,你可以在规则集编辑器中禁用任何规则,甚至更改默认严重性。规则集编辑器就是在连接sonarqube服务器时,自动生成的TGB-ITOO5.0BasicCSharp.ruleset文件。

Sonar实战篇

原文  http://www.uml.org.cn/codeNorms/201804241.asp
正文到此结束
Loading...