SonarQube是一个开源的代码质量管理系统。其特点在wiki上解释的很详细,我就不再这里重述了。
下面直接奔主题,在windows环境中搭建SonarQube,之后解释如何上传代码与在SonarQube系统中查看代码质量相关指标信息;
一、环境依赖
1、Windows7 64bit;
2、搭建SonarQube6.7.2之前,要求JDK环境必须是JDK8(包含)以上;
3、数据库:我选择Mysql,要求5.6以上,其它数据库也支持,详见下方官方文档说明选择合适版本,其它数据库本人就不做介绍了;
4、浏览器:要求IE11以上、以及当前最新版Chrome,Firefox、Safari、Edge;
6、Maven:支持JDK8的版本要求在3.3以上;
至此,我本人所使用的软件环境是 JDK8 + SonarQube6.7.2 + MySQL5.7.17 + Maven3.5.2 + Chrome65.0.3325.181;
SonarQube6.7软件环境详细介绍文档入口
二、安装JDK8与数据库
1、JDK8的详细安装过程直接忽略,Google搜索一大堆;简单说就是下载 -> 安装 -> 配置系统环境变量-> 在windows终端验证”java -version”是否安装成功;
2、数据库为MySQL,直接安装即可,身为程序猿,如果不会安装MySQL的话就自行面壁思过好了。
三、安装SonarQube
1、下载
下载地址:https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.2.zip
2、配置
(1)在mysql中新建数据名为”sonar”,字符集是utf8,命令参考如下;
CREATE DATABASE `sonar` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 配置专属用户名与密码权限此处忽略
(2)为Maven增加sonar配置
1)安装Maven详细过程忽略,简单介绍就是下载Maven压缩包,解压缩到合适目录中 -> 把Maven下bin添加到windows环境变量中 -> 在windows终端验证”mvn -v”是否安装成功;
2)定位到Maven目录下的conf/settings.xml,修改如下:
a)在
<pluginGroups>
标签内增加代码如下
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
b)在
<profiles>
标签内增加代码如下
<profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- 配置 Sonar Host地址,默认:http://localhost:9000 --> <sonar.host.url> http://127.0.0.1:9000/ </sonar.host.url> </properties> </profile>
保存完成!
(3)解压缩sonarqube-6.7.2.zip到你自己合适的目录中去;
修改:conf/sonar.properties,在第26后行新增一段MySQL配置代码
sonar.jdbc.username=用户名 sonar.jdbc.password=密码 sonar.jdbc.url=jdbc:mysql://127.0.0.1:端口号/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
保存退出;
修改:conf/wrapper.conf
在第四行直接修改wrapper.java.command=JDK8的bin目录下java.exe绝对地址(注意是绝对地址、绝对地址、绝对地址重要事情说三遍)
保存退出;
(4)启动
打开软件定位到 /bin/windows-x86-64/StartSonar.bat,即可启动sonarqube;
注意:选择windows-x86-64是因为我自己的操作系统是windows 64bit,如果您的操作系统是windows32bit,请定位到/bin/windows-x86-32/StartSonar.bat下面;
在/bin/windows-x86-64/目录中,sonarqube还为我们增加为系统服务提供快捷入口,其中
InstallNTService.bat(安装sonarqube为系统服务);
StartNTService.bat(启动sonarqube系统服务);
StopNTService.bat(停止sonarqube系统服务)
UninstallNTService.bat(卸载sonarqube系统服务);
wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | ... 中间省略5000字 ... jvm 1 | 2018.04.10 09:48:37 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up jvm 1 | 2018.04.10 09:48:37 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
在命名行界面中看到看到SonarQube is up的提示信息是,就表示SonarQube已经启动成功了(注意首次启动SonarQube需要1~2分钟左右,这是因为SonarQube需要创建数据库等必要的配置数据)。如果启动失败,请重复上面的步骤并同时检查一下人品,哈哈哈;
(6)安装SonarQube中文插件
打开页面地址:http://127.0.0.1:9000(默认端口号9000);
操作流程依次是:login -> 用户密码默认都是admin -> Administration -> Marketplace -> Chinese Pack 点击右侧Install;加载完成后,返回页面顶部,点击”Restart”重启系统,等待半分钟左右SonarQube即可完成重启,如下图所示则安装中文插件成功!
四、上传代码
IDE环境本人使用IntelliJ IDEA,上传代码方式使用Maven;测试代码结构如下图:
这个测试代码很简单,其中pom.xml、HelloWorld.java、HelloWorldTest.java为三个主要源码;三个文件源码如下:
(1)pom.xml完整代码如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.littlebill</groupId> <artifactId>HelloWorld</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>HelloWorld</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <jdk.version>1.8</jdk.version> <sonar.groovy.binaries>target/classes</sonar.groovy.binaries> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>sonar-coverage</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.8</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <configuration> <append>true</append> </configuration> <executions> <execution> <id>agent-for-ut</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>agent-for-it</id> <goals> <goal>prepare-agent-integration</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
(2)src -> main -> java -> cn.littlebill.HelloWorld完整源码如下:
package cn.littlebill; public class HelloWorld { public void coveredByUnitTest() { System.out.println("coveredByUnitTest1"); System.out.println("coveredByUnitTest2"); } public void coveredByIntegrationTest() { System.out.println("coveredByIntegrationTest1"); System.out.println("coveredByIntegrationTest2"); System.out.println("coveredByIntegrationTest3"); } public void notCovered() { System.out.println("notCovered"); } }
(3)src -> test -> java -> cn.littlebill.HelloWorldTest完整源码如下:
package cn.littlebill; import org.junit.Test; public class HelloWorldTest { @Test public void test() { new HelloWorld().coveredByUnitTest(); } }
(4)写好代码后,打开终端定位到项目根目录,运行命名mvn clean install sonar:sonar
,见如下GIF动画演示
五、查看项目代码质量
如下图,项目bugs、漏洞、坏味道、覆盖率、重复的质量考核内容一览无余;剩下的就是自己修改SonarQube提示的问题去吧!
如果修复完SonarQube提示的问题后,再次在项目根目录运行命名mvn clean install sonar:sonar
后,在单个项目详细页面中,会提示这次最新提交与上几次提交的变化趋势(因为这次提交没有修改代码,新的问题自然就是0),很实用。赞
整个SonarQube6.7-windows环境配置与使用流程介绍完成,收工!