对非maven模式的JAVA项目,可以使用sonar-runner分析
http://www.ituring.com.cn/article/69556
过程总结如下:
下载SonarQube, http://www.sonarqube.org/downloads/ http://dist.sonar.codehaus.org/sonarqube-4.3.2.zip
解压sonarqube-4.3.2.zip,
cd sonarqube-4.3.2
- 修改conf下的sonar.properties配置项:
#修改jdbc的配置
sonar.jdbc.username=root
sonar.jdbc.password=admin
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
#修改WebServer监听端口
sonar.web.port=9000
- 启动Sonar WebServer,第一次启动比较慢,需要初始化数据库表结构。
#bin/[OS]/sonar.sh start
bin/linux-x86-64/sonar.sh start
启动过程中,有一个坑就是可能会出现如下错误:
java.lang.IllegalStateException: Unable to read plugin manifest from jar : /opt/sonarqube-4.3.2/lib/bundled-plugins/._sonar-java-plugin-2.1.jar
at org.sonar.updatecenter.common.PluginManifest.<init>(PluginManifest.java:115) ~[sonar-update-center-common-1.8.jar:na]
at org.sonar.core.plugins.PluginJarInstaller.extractMetadata(PluginJarInstaller.java:64) ~[sonar-core-4.3.2.jar:na]
at org.sonar.server.plugins.ServerPluginJarsInstaller.copyBundledPlugins(ServerPluginJarsInstaller.java:110) ~[ServerPluginJarsInstaller.class:na]
at org.sonar.server.plugins.ServerPluginJarsInstaller.install(ServerPluginJarsInstaller.java:67) ~[ServerPluginJarsInstaller.class:na]
at org.sonar.server.plugins.ServerPluginRepository.start(ServerPluginRepository.java:49) ~[ServerPluginRepository.class:na]
解决办法就是删除目录下所有的._*.jar文件:
1
find . -name "._*.jar" | xargs rm
配置mvn,修改~/.m2下的settings.xml文件:
<settings> <profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- 修改这里 --> <sonar.jdbc.url> jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 </sonar.jdbc.url> <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://localhost:9000 </sonar.host.url> </properties> </profile> </profiles> </settings>
到你的project工程下,执行 mvn sonar:sonar
结束。