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口令,建项目名称,下一步用到
这里的token在第一次登陆SonarQube系统时会提示你录入,见下图,也可以跳过,登陆系统后可以在如上图位置进行设置。
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插件版本(没有试过)网上有网友通过这种方式成功解决了这个异常。
把plugins下面的新版的sonar-java替换成4.10版本的。(我没试,有网友是这么解决的)上一张SonarQube+SonarQube Scanner扫描java项目的结果图,
对扫描结果的处理及分析,这里不做具体解读。
【参考网站】
https://www.jianshu.com/p/b5b3becc39c8 https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode