SonarQube6.7-windows环境配置与使用

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,命令参考如下;

<br />
CREATE DATABASE `sonar` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;<br />
配置专属用户名与密码权限此处忽略<br />

(2)为Maven增加sonar配置
1)安装Maven详细过程忽略,简单介绍就是下载Maven压缩包,解压缩到合适目录中 -> 把Maven下bin添加到windows环境变量中 -> 在windows终端验证”mvn -v”是否安装成功;
2)定位到Maven目录下的conf/settings.xml,修改如下:
a)在

<pluginGroups>
标签内增加代码如下
<br />
&lt;pluginGroup&gt;org.sonarsource.scanner.maven&lt;/pluginGroup&gt;<br />

b)在
<profiles>
标签内增加代码如下
<br />
&lt;profile&gt;<br />
    &lt;id&gt;sonar&lt;/id&gt;<br />
    &lt;activation&gt;<br />
        &lt;activeByDefault&gt;true&lt;/activeByDefault&gt;<br />
    &lt;/activation&gt;<br />
    &lt;properties&gt;<br />
        &lt;!-- 配置 Sonar Host地址,默认:http://localhost:9000 --&gt;<br />
        &lt;sonar.host.url&gt;<br />
          http://127.0.0.1:9000/<br />
        &lt;/sonar.host.url&gt;<br />
    &lt;/properties&gt;<br />
&lt;/profile&gt;<br />

保存完成!

(3)解压缩sonarqube-6.7.2.zip到你自己合适的目录中去;
修改:conf/sonar.properties,在第26后行新增一段MySQL配置代码

<br />
sonar.jdbc.username=用户名<br />
sonar.jdbc.password=密码<br />
sonar.jdbc.url=jdbc:mysql://127.0.0.1:端口号/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true&amp;useConfigs=maxPerformance&amp;useSSL=false<br />
sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError<br />

保存退出;
修改: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系统服务);

<br />
wrapper  | --&gt; Wrapper Started as Console<br />
wrapper  | Launching a JVM...<br />
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org<br />
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.<br />
jvm 1    |<br />
... 中间省略5000字 ...<br />
jvm 1    | 2018.04.10 09:48:37 INFO  app[][o.s.a.SchedulerImpl] Process[ce] is up<br />
jvm 1    | 2018.04.10 09:48:37 INFO  app[][o.s.a.SchedulerImpl] SonarQube is up<br />

在命名行界面中看到看到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完整代码如下:

<br />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br />
         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;</p>
<p>  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;</p>
<p>  &lt;groupId&gt;cn.littlebill&lt;/groupId&gt;<br />
  &lt;artifactId&gt;HelloWorld&lt;/artifactId&gt;<br />
  &lt;packaging&gt;jar&lt;/packaging&gt;<br />
  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;</p>
<p>  &lt;name&gt;HelloWorld&lt;/name&gt;</p>
<p>  &lt;properties&gt;<br />
    &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;<br />
    &lt;project.reporting.outputEncoding&gt;UTF-8&lt;/project.reporting.outputEncoding&gt;<br />
    &lt;jdk.version&gt;1.8&lt;/jdk.version&gt;<br />
    &lt;sonar.groovy.binaries&gt;target/classes&lt;/sonar.groovy.binaries&gt;<br />
  &lt;/properties&gt;</p>
<p>  &lt;dependencies&gt;<br />
    &lt;dependency&gt;<br />
      &lt;groupId&gt;junit&lt;/groupId&gt;<br />
      &lt;artifactId&gt;junit&lt;/artifactId&gt;<br />
      &lt;version&gt;4.12&lt;/version&gt;<br />
      &lt;scope&gt;test&lt;/scope&gt;<br />
    &lt;/dependency&gt;<br />
  &lt;/dependencies&gt;</p>
<p>  &lt;build&gt;<br />
    &lt;plugins&gt;<br />
      &lt;plugin&gt;<br />
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
        &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;<br />
        &lt;version&gt;3.7.0&lt;/version&gt;<br />
        &lt;configuration&gt;<br />
          &lt;source&gt;${jdk.version}&lt;/source&gt;<br />
          &lt;target&gt;${jdk.version}&lt;/target&gt;<br />
        &lt;/configuration&gt;<br />
      &lt;/plugin&gt;<br />
    &lt;/plugins&gt;<br />
  &lt;/build&gt;</p>
<p>  &lt;profiles&gt;<br />
    &lt;profile&gt;<br />
      &lt;id&gt;sonar-coverage&lt;/id&gt;<br />
      &lt;activation&gt;<br />
        &lt;activeByDefault&gt;true&lt;/activeByDefault&gt;<br />
      &lt;/activation&gt;<br />
      &lt;build&gt;<br />
        &lt;pluginManagement&gt;<br />
          &lt;plugins&gt;<br />
            &lt;plugin&gt;<br />
              &lt;groupId&gt;org.jacoco&lt;/groupId&gt;<br />
              &lt;artifactId&gt;jacoco-maven-plugin&lt;/artifactId&gt;<br />
              &lt;version&gt;0.7.8&lt;/version&gt;<br />
            &lt;/plugin&gt;<br />
          &lt;/plugins&gt;<br />
        &lt;/pluginManagement&gt;<br />
        &lt;plugins&gt;<br />
          &lt;plugin&gt;<br />
            &lt;groupId&gt;org.jacoco&lt;/groupId&gt;<br />
            &lt;artifactId&gt;jacoco-maven-plugin&lt;/artifactId&gt;<br />
            &lt;configuration&gt;<br />
              &lt;append&gt;true&lt;/append&gt;<br />
            &lt;/configuration&gt;<br />
            &lt;executions&gt;<br />
              &lt;execution&gt;<br />
                &lt;id&gt;agent-for-ut&lt;/id&gt;<br />
                &lt;goals&gt;<br />
                  &lt;goal&gt;prepare-agent&lt;/goal&gt;<br />
                &lt;/goals&gt;<br />
              &lt;/execution&gt;<br />
              &lt;execution&gt;<br />
                &lt;id&gt;agent-for-it&lt;/id&gt;<br />
                &lt;goals&gt;<br />
                  &lt;goal&gt;prepare-agent-integration&lt;/goal&gt;<br />
                &lt;/goals&gt;<br />
              &lt;/execution&gt;<br />
              &lt;execution&gt;<br />
                &lt;id&gt;jacoco-site&lt;/id&gt;<br />
                &lt;phase&gt;verify&lt;/phase&gt;<br />
                &lt;goals&gt;<br />
                  &lt;goal&gt;report&lt;/goal&gt;<br />
                &lt;/goals&gt;<br />
              &lt;/execution&gt;<br />
            &lt;/executions&gt;<br />
          &lt;/plugin&gt;<br />
        &lt;/plugins&gt;<br />
      &lt;/build&gt;<br />
    &lt;/profile&gt;<br />
  &lt;/profiles&gt;<br />
&lt;/project&gt;<br />

(2)src -> main -> java -> cn.littlebill.HelloWorld完整源码如下:

<br />
package cn.littlebill;</p>
<p>public class HelloWorld {<br />
    public void coveredByUnitTest() {<br />
        System.out.println(&quot;coveredByUnitTest1&quot;);<br />
        System.out.println(&quot;coveredByUnitTest2&quot;);<br />
    }</p>
<p>    public void coveredByIntegrationTest() {<br />
        System.out.println(&quot;coveredByIntegrationTest1&quot;);<br />
        System.out.println(&quot;coveredByIntegrationTest2&quot;);<br />
        System.out.println(&quot;coveredByIntegrationTest3&quot;);<br />
    }</p>
<p>    public void notCovered() {<br />
        System.out.println(&quot;notCovered&quot;);<br />
    }<br />
}<br />

(3)src -> test -> java -> cn.littlebill.HelloWorldTest完整源码如下:

<br />
package cn.littlebill;</p>
<p>import org.junit.Test;</p>
<p>public class HelloWorldTest {<br />
    @Test<br />
    public void test() {<br />
        new HelloWorld().coveredByUnitTest();<br />
    }<br />
}<br />

(4)写好代码后,打开终端定位到项目根目录,运行命名mvn clean install sonar:sonar,见如下GIF动画演示

五、查看项目代码质量

如下图,项目bugs、漏洞、坏味道、覆盖率、重复的质量考核内容一览无余;剩下的就是自己修改SonarQube提示的问题去吧!

查看单个项目详细信息截图:

如果修复完SonarQube提示的问题后,再次在项目根目录运行命名mvn clean install sonar:sonar后,在单个项目详细页面中,会提示这次最新提交与上几次提交的变化趋势(因为这次提交没有修改代码,新的问题自然就是0),很实用。赞

整个SonarQube6.7-windows环境配置与使用流程介绍完成,收工!

参考:sonarqube官方DEMO

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.