如何使用SonarQube Scanner扫描器对代码进行扫描

Preface:SonarQube和SonarQube Scanner可以在一台服务器上也可以在不同的服务器上

本例:SonarQube部署在Linux服务器,而SonarQube Scanner使用的Windows服务器。

step1:根据操作系统下载安装包

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

step2:解压安装包并配置环境变量到path,见图

step3:验证是否成功,如下提示则表示成功

以上安装完毕,接下来我们通过扫描器结合SonarQube来完成对代码的质量扫描

step4:在sonar系统创建token口令,建项目名称,下一步用到

step5:cd到你需要进行代码检查的项目目录,执行如下命令(Windows服务器)

***>sonar-scanner.bat -Dsonar.projectKey=mvndemo -Dsonar.sources=. -Dsonar.host.url=http://192.168.***.***:7000 -Dsonar.login=85d561f16a442dd3593b069d704fca1826b75a6a -Dsonar.java.binaries=./WebRoot/WEB-INF/classes

没有异常则表示成功,如下图

Instruction:

1>.-Dsonar.projectKey //step4中的项目名称

2>.-Dsonar.sources      //需要扫描的项目目录位置

3>. Dsonar.host.url    //sonar服务访问的url地址

4>.Dsonar.login          //令牌名称对应的token

5>.Dsonar.java.binaries //项目编译目录,java为例,则为class文件所在的目录

【执行命令,异常情况说明,及处理方法】

step5中,网站找到好多文章,使用扫描器命令时,都没加Dsonar.java.binaries这个参数

我在执行是报了下面这个异常

【sonar-scanner.bat -Dsonar.projectKey=mvndemo -Dsonar.sources=. -Dsonar.host.url=http://192.168.192.144:7000 -Dsonar.login=85d561f16a442dd3593b069d704fca1826b75a6a -Dsonar.java.binaries=./WebRoot/WEB-INF/classes】

原因见官网,上图:

所以有两种解决方案

(按理来说,对代码做质量检查,检查源码就可以了,不需要分析编译后的class文件,
具体为什么在sonar4.12版本以后要指定这个参数,没有做具体更深入的分析)

方案一:既然说缺少参数,那就配置此参数即可

按照step5去启动机上Dsonar.java.binaries参数启动扫描器即可。

方案二:降低sonar-java插件版本(没有试过)网上有网友通过这种方式成功解决了这个异常。

https://sonarsource.bintray.com/Distribution/sonar-java-plugin/sonar-java-plugin-4.10.0.10260.jar
把plugins下面的新版的sonar-java替换成4.10版本的。(我没试,有网友是这么解决的)

上一张SonarQube+SonarQube Scanner扫描java项目的结果图,
对扫描结果的处理及分析,这里不做具体解读。

猜你喜欢

转载自my.oschina.net/guiguketang/blog/1814985