基于JDK1.7代码审查平台sonarqube安装
sonarqube已经更新到7.0版本了,但是从5.6版本以后就只支持JDK1.8了,网上大部分资源也都是基于JDK1.8的,在这方面走了不少坑,尤其是在后面用Maven-scanner扫描Maven项目的时候,各种报错。经过几天摸索终于在Linux中搭建成功了,JDK版本用的是1.7,因此本文对于项目JDK版本用的是1.7的想搭建sonarqube平台的同学非常有用。
运行成功后界面如下
安装sonarqube
官网上下载sonarqube4.5.7(LTS version) zip包,该版本是适用于JDK1.7的最新版本,该zip包在windows和Linux等版本中均可以运行,不同的是启动路径和方法不一样而已。
* sonarqube配置文件
sonarqube平台数据包括代码审查结果都是保存在数据库中的,当然默认不配置的情况下是使用H2内存数据库的,但一般不推荐,本文配置的是mysql数据库。在conf目录下找到sonar.properties并设置相关参数如下,其中sonar.jdbc.username
和sonar.jdbc.password
分别是mysql数据库的账号和密码,sonar.jdbc.url
是数据库的地址。还有其它参数如端口号sonar.web.port=9998
等参数,可以搜索下其它资源配置方法,默认的启动端口号是9000,本例配置的是9998.
添加中文插件
安装启动之前先把所需要的相关插件放在安装包中,这样启动好了之后就可以直接使用。以中文插件l10n
为例,首先下载插件,代码托管到GitHub中,4.5.7的版本选择sonar-l10n-zh-plugin-1.8
版本,git中没有jar资源下载,所以只能下载源码后进行maven编译,将编译后的jar包放在sonarqube-4.5.7/extensions/plugins
目录下。运行sonarqube
进入bin目录下找到相应的系统版本,Linux64的运行目录文件是sonarqube-4.5.7/bin/linux-x86-64
,进入到该目录输入sh sonar.sh start
即可。如果提示没有执行权限,则需要先将sonar.sh
和wrapper
文件先赋予执行权限chmod a+x sonar.sh
、chmod a+x wrapper
。至此sonarqube安装完毕,是不是很简单?
其它命令sh sonar.sh start | stop | restart | status
. windows下则直接运行对应目录下StartSonar.bat
文件即可
Maven项目扫描配置
- Maven配置
现在很多项目都是Maven组织的,那么sonarqube如何扫描Maven项目呢?
打开Maven的配置文件settings.xml
添加如下配置,主要配置的是sonarqube数据库及sonarqube的。
<!-- pluginGroups标签中添加后如下 -->
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<!-- profiles标签中添加后如下 -->
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:mysql://192.168.1.2:3306/test</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password>admin</sonar.jdbc.password>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>http://192.168.1.2:9998</sonar.host.url>
</properties>
</profile>
</profiles>
sonarqube-scanner-maven在扫描Maven项目的时候比较消耗JVM内存资源,所以最好配置JVM内存,即设置MAVEN_OPTS=-Xmx512m
,以防占用过多的内存资源。
Linux中Maven配置环境变量,编辑/etc/profile
文件加入export MAVEN_OPTS="-Xmx512m"
即可。在Windows系统中,则在Maven打包之前set MAVEN_OPTS=-Xmx512m
或在环境变量中配置MAVEN_OPTS
参数即可。
- 运行Maven项目,扫描代码
本例JDK1.7+Maven3.3.9版本下运行命令为mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.2:sonar -Dmaven.test.skip=true
.
如果是比较高的sonarqube版本+JDK1.8,则运行命令为mvn clean install sonar:sonar -Dmaven.test.skip=true
.
以下命令没有权限校验的,意味着所有的用户都可以通过以下命令将某个Maven项目的审查结果上传至sonarqube平台。如果需要限制某些用户,则运行命令为
mvn clean install org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.2:sonar -Dmaven.test.skip=true -Dsonar.login=admin -Dsona.password=admin
同时需要在平台上更改用户权限,如下图