最近有一段时间没有用开源中国的git服务了,今天上去发现多了个sonar代码分析工具,可能以前就上过线,没怎么认真了解,使用了一下,感觉还不错,但是开源中国的sonar分析速度太慢了,我可以理解,毕竟这个服务这么多人使用,然后我就打算在自己的电脑上安装一个sonar的分析工具。

    首先搜索引擎找到sonar的官网,然后下载安装包,然后查看document,最新版的安装要求是有jdk8以及一个数据库,例如mysql,postgres之类的。碰巧机子安装了mysql和postgres两个数据库,但是我自己的机子安装的是jdk7,那就下载jdk8吧,如果直接安装的话,会覆盖掉我们的jdk7设置的环境变量。

    所以这里安装jdk8的时候要注意一点,如图所示:

java扫描项目所有包 java代码扫描sonar_python

公共JRE不要勾选安装,如果勾选的话,安装之后就会覆盖你之前设置的jdk7的环境变量。这里我们安装jdk8主要是为了sonar的运行而已。没有安装公共JRE的话,就是要你自己配置jdk8的环境变量。我们把jdk8装上。
    然后解压我们下载的sonarqube-6.0的安装包,打开之后根据官方文档的指示,我们需要到conf目录下面去编辑sonar.properties文件,里面主要是一些数据库的配置和网站的配置。
其中几个主要的参数是:sonar.jdbc.username,sonar.jdbc.password,sonar.jdbc.url
选择自己的数据库的jdbc url,我这里选择的是postgres,sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar
注意你需要使用命令行或者一些图形界面,创建一个数据库,我这里使用navicat创建了一个sonar的数据库,里面的表,一会启动之后,会自动创建。不用我们管,我们建好数据库就行了。
    还有几个参数也要配置,sonar.web.host,sonar.web.port,host的话,默认是0.0.0.0的
这里如果不修改的话,后面浏览器使用localhost会无法访问,我这里修改成127.0.0.1
端口的话,你要看一下有没有冲突,没有冲突的话,就不用修改使用默认的9000就好了
    到此,已经配置完毕,其它一些细化的配置的话,个人觉得没必要去修改,毕竟只是我们自己本机使用作代码分析而已。
    接下来就是运行了,bin目录下找到windows_64位的目录,找到StartNTService.bat
注意了,不要直接点击运行,因为bat这种文件是要开新的命令行来运行的,不然的话,你直接点的话,会闪一下然后就消失了。
    打开cmd命令行,把文件拖过去回车运行。这时候由于我机子安装的是jdk7,而这个版本是需要jdk8的环境的,不急,马上就可以解决这个问题。
    打开conf目录,找到另一个配置文件wrapper.conf
我们可以看到这样一句话:
# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
wrapper.java.command=I:/Java1_8/jre/bin/java
#wrapper.java.command=java
可以使用环境变量的Java运行,也可以使用绝对路径运行。
那我们就用绝对路径吧,刚打开的时候绝对路径的前面是加了#号的,我们修改一下,如上面所示,我的jdk8是放在I盘的,读者可以根据自己的情况填写就行了。
    然后点击运行,经过一段时间等待,看到命令行上有三个up就成功了。然后打开浏览器访问localhost:9000,出现sonar的管理界面就算安装成功了。
    接下来是汉化管理界面,英语阅读没问题的童鞋可以不用汉化。不过我虽然看的懂,但是还是觉得汉化后比较舒服,在sonar的官网上在文档右侧的tab找到Plugins,这里我给出Plugin的链接,以后可能会有变化,
http://docs.sonarqube.org/display/PLUG/Plugin+Library 打开之后,在下方找到Localization,点击Chinese,然后跳转到一个Github的地址,https://github.com/SonarQubeCommunity/sonar-l10n-zh
根据read.me的提示下载好汉化jar包,然后放在sonar目录下的extensions下的plugins目录,然后重启服务器,接下来访问网址就可以看到汉化后的界面了。

    我们接下来使用一下sonar分析一下我们本地的项目代码了。根据官网文档说明,
http://docs.sonarqube.org/display/HOME/SonarQube+Platformjava扫描项目所有包 java代码扫描sonar_bc_02

get start的第三个步骤,分析源代码,点击之后我们在下面找到scanner,扫描代码的工具

java扫描项目所有包 java代码扫描sonar_bc_03

点击最上面的Scanner,当然你要是其它类型的话,可以按照自己类型选择扫描器
http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scannerjava扫描项目所有包 java代码扫描sonar_python_04
点击下载之后,解压之后,目录里面有bin,conf,lib
我们打开bin,找到sonar-scanner.bat,接下来选择你要分析的项目地址,假设我的项目在:
d:project/javaproject1
使用命令行cd到项目的根目录,注意在根目录下需要一个sonar-project.properties这样的一个文件,用来说明项目的属性,这个链接的文章有说明:http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
创建文件之后,编辑文件,我这里的编辑是:
 

# Required metadata
 sonar.projectKey=projectkey
 sonar.projectName=learn
 sonar.projectVersion=1.0# Comma-separated paths to directories with sources (required)
 sonar.sources=src# Language
 sonar.language=java# Encoding of the source files
 sonar.sourceEncoding=UTF-8

其中sources就是你的源码目录,我的项目是eclipse项目,所以是src目录,其它类型的自己看着填写。
然后在根目录下执行sonar-scanner.bat命令,结果提示jdk7无法运行,好吧我们来继续修改一下配置文件:
这个scanner没有配置文件,我们只能修改bat命令了。

    首先我们需要增加一个我们的jdk8的环境变量,打开我的电脑,环境变量,系统变量输入一个名字,注意不要是JAVA_HOME了,这里我用来设置jdk8的变量名字叫做JAVA_1_8,然后填写jdk8的路径,和传统设置java_home的方法是一样的。

    使用编辑器打开bat命令,全局搜索替换%JAVA_HOME%为%JAVA_1_8%,替换之后保存,然后点击运行,运行成功。
    这里分析只用了几十秒钟就搞定我的项目了,如果是用开源中国的osc的sonar的话,可能要半个小时。
接下来打开localhost:9000,可以看到Projects里面有我们刚刚分析的项目,查看分析的效果,根据分析结果修改我们的代码。

    介绍到此为止,多谢阅读,希望对大家有帮助。