SonarQube是基于浏览器的BS架构的代码质量管理平台,通过对源码的分析,依赖规则分析得到不同级别的代码问题。

主要是基于官方文档的Quick Start部分,这个部分使用内嵌数据库,届时会有一个提示,大意是用于演示功能且不支持升级。如果要搭建Product,则需要依赖外部数据库。

缺陷分类:
Bug
Code Smell
Vulnerabilities

缺陷级别:
Blocker
Critical
Major
Minor
Info

1.环境要求:

1.1. 操作系统

  • Windows
  • Linux(本文使用CentOS 6.4 64bit,ip:192.168.1.154)
  • MacOS

1.2. SonarQube6.2

  • sonarqube-6.2.zip
  • sonar-scanner-2.8.zip
  • sonar-scanning-examples-master.zip

1.3. java

Oracle JRE8+/OpenJDK 8+(本文使用Oracle JDK8 bit)

1.4. 数据库(在quick start部分可以不安装)

  • 2012 (MSSQL Server 11.0)/ 2014 (MSSQL Server 12.0)
  • MySQL5.6/5.7
  • Oracle11G/12C (需要自备数据库驱动包,放在 /sonarqube/extensions/jdbc-driver/oracle 下)
  • PostgreSQL8.x/9.x

1.5. 浏览器

  • IE11
  • Firefox
  • Chrome
  • Safari

2.迅速安装(Get Started in Two Minutes)

将sonarqube-6.2.zip和sonar-scanner-2.8.zip解压到/usr/local/sonar下。
cd /usr/local/sonar/sonarqube-6.2/bin/linux-x86-64
执行 ./sonar.sh console &
看到SonarQube is up 则说明启动成功。

另外,还有标准安装(product instance),需要配合数据库一起使用。

3.访问

在浏览器中输入 http://192.168.1.154:9000 即可访问,默认的用户名/密码:admin/admin

4.解析项目

4.1. 使用sonar scanner

解压sonar-scanner-2.8.zip,将bin目录加入环境变量。
修改$SONAR_SCANNER_HOME/conf/ sonar-scanner.properties,将sonar.host.url修改为sonar的ip。
在需要解析的项目下执行

sonar-scanner.bat #windows
sonar-scanner #linux

直接执行上面的命令会报错:
You must define the following mandatory properties for 'Unknow': sonar.projectKey, sonar.sources

# 需要指定projectKey 和 sources  
sonar-scanner -Dsonar.projectKey=testForSonar -Dsonar.sources=/home/sonar/testFor/Sonar/src

#或者新建配置文件 sonar-project.properties
sonar.projectKey=testForSonar
sonar.sources=/home/sonar/testFor/Sonar/src

4.2. 使用maven3.x

客户端安装MAVEN(即存放有代码的机器,使用sonar-scanning-examples-master/ sonarqube-scanner-maven这个样例或自己真实的maven项目)
修改$MAVEN_HOME/conf/settings.xml,添加以下内容,注意修改sonar.host.url的ip

<settings>
   <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
     </pluginGroups>
     <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://192.168.1.154:9000
                </sonar.host.url>
                <sonar.scm.disabled>true</sonar.scm.disabled>
            </properties>
        </profile>
     </profiles>
</settings>

在maven项目根目录中或IDE中执行

mvn clean verify sonar:sonar   #看到BUILD SUCCESS则代表成功,第一次执行会下载相关依赖  

在浏览器中,点击projects的All标签,即可看到。

4.3. 使用ant1.7.1+

下载ant sonar task
https://sonarsource.bintray.com/Distribution/sonarqube-ant-task/sonarqube-ant-task-2.4.jar,放入$ANT_HOME/lib下。
编辑项目中的sonar-scanning-examples-master\sonarqube-scanner-ant\build.xml文件,修改sonar.host.url为sonar的ip。
在当前项目路径或IDE中执行

ant sonar

看到BUILD SUCCESSFUL 则代表成功。
在浏览器中,点击projects的All标签,即可看到。

4.4. 其他

另外支持Gradle和Jenkins,可以加入CI。

5.5. 报错

Error when executing blame for file
svn:E170001:Authentication required for svn://ip:port
sonarqube_svn_ex.jpg

修改上文中提到的$MAVEN_HOME/conf/settings.xml
<sonar.scm.disabled>true</sonar.scm.disabled> --如果此處不設置,會通過svn訪問,這時候無權限。

安装product instance可能遇到的问题:

启动以后使用浏览器访问,提示:sonarqube is under maintenance

按照网上提供的方法,需要访问 192.168.1.154:9000/setup ,按照提示更新数据库。乌鸦并没有解决问题。

因为乌鸦安装product instance时,安装5.6.6TLS和6.2时出现了上述问题,只好改装最新的6.3.1,成功安装。

官方文档:
https://docs.sonarqube.org/display/SONAR/Documentation

Scanner Maven:
https://docs.sonarqube.org/display/SONARQUBE52/Installing+and+Configuring+SonarQube+Scanner+for+Maven

Scanner Ant:
https://docs.sonarqube.org/display/SONARQUBE52/Installing+and+Configuring+SonarQube+Scanner+for+Ant

sonarqube-ant-task.jar
https://sonarsource.bintray.com/Distribution/sonarqube-ant-task/sonarqube-ant-task-2.4.jar

Code Smell:
https://en.wikipedia.org/wiki/Code_smell#cite_note-:0-1

SVN ERROR:
http://fanli7.net/a/caozuoxitong/Linux/20160616/565021.html