在上一篇文章中我们成功部署了SonarQube,这篇文章我将简单介绍sonar如何扫描IDEA中的项目代码,并在SonarQube上生成对应的分析报告。
一、使用SonarLint插件
首先是SonarLint插件,网上资料很多,这里不多介绍,安装如下:
File -> Settings...
安装,重新启动IDEA即可进行使用
SonarLint也可以单独进行代码分析,操作方式简单,这里不多提
SonarLint可以直接连接SonarQube,方式如下:
File -> Settings...
点击右边的 + 号
选择右边的 sonarQube,下面的地址选本地 sonarQube 的地址 ,然后点Next
认证方式这里选择的账号密码,同上一节一样,默认账号密码均为 admin
完成后我们这个名为 local(名字随意) 的连接就配置好了,我们可以直接通过连接更新SonarQube上的信息等
至此,IDEA 插件 SonarLint 和 SonarQube 关联配置完成
然后我们打开之前的SonarQube页面 --> + 号 --> 新建新项目
创建一个新的项目标识
然后回到IDEA,打开下面的SonarLint,点击这个工具按钮
勾选上 Bind project to SonarQube /SonarCloud 按钮,Connection 里面选择刚才配置好的local,如果连接没有问题,我们可以在下面选择到我们在SonarQube上新建的项目标识,一并选上,然后Ok。
如果都没有问题的话,在IDEA上执行代码分析,就能在SonarQube上产生对应的分析报告。
但是这种方式对插件版本兼容性比较严格,SonarLint的版本也一直在更新,手动调整SonarLint版本也比较繁琐,于是这里提供了另外一种扫描思路。
二、使用maven插件
这种扫描思路实际上依靠的是一个叫做 SonarScanner 的工具,它其实可以直接进行配置使用,但是操作略显复杂,所以我们这里就不讲怎么使用了。
在官方文档里面也有写:
建议将 SonarScanner for Maven 作为 Maven 项目的默认扫描器。
即直接使用maven版本的SonarScanner对项目进行扫描,而无需进行多于的配置,网上很多SonarQube教程里面都要去Mave文件下的setting里面改配置或者去项目的pom文件里面加东西,其实官方文档也说了,可以直接使用。下面我们看一下怎么实现:
版本要求
- Maven 3.2.5+ 版本
- 至少 SonarQube Server 实例支持的最低 Java 版本
这里首先要特别注意一点,官方文档也有写:
maven能进行扫描靠的就是这个 sonar-maven-plugin 工具,如果我们在项目的pom文件里面没有指定版本的话,它就会用最新的版本。但是 sonar-maven-plugin 从 4.0.x 开始使用jdk11进行编译,如果按照我们之间使用的jdk8环境的话,这里一定会出错,所以,我们需要按照官方给的指定
sonar-maven-plugin 版本的写法
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:<version>:sonar
下面给出一个案例:
还是在我们搭建的SonarQube界面新建一个项目,创建标识,生成Token
然后一步一步点,最后它会生成一段命令,并叫你去你的项目目录下执行
这里注意:请一定去掉其中所有的 \ 符号,不然会执行失败!
然后,别忘了我们前面说的指定版本的问题,所以我们修改一下,最后输出的命令如下:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar -Dsonar.projectKey=test1219 -Dsonar.host.url=http://localhost:9000 -Dsonar.login=45c458bacd18c6bd5436115c9790782b6b52fe33
在IDEA项目的终端下面执行:
如果操作无误,版本也没有出现问题,最后会执行成功
这个时候我们回到我们的SonarQube界面,可以看见报告了
完事。