findbugs是sonar的子集,在sonar平台中可以直接导入findbugs的规则集。sonar比findbugs高了一个层级,多出了sonar不仅关注了常规静态bug,还关注到了如代码质量、包与包,类与类之间的依赖情况、代码耦合情况、类,方法。文件的复杂度、代码中是否包含大量复制粘贴的代码是质量低下的,关注到了项目代码整体的健康情况。不过个人在使用过程中findbugs本身的规则比sonar的官方规则更加实用,high级别的bug都是较为实用的bug,且能覆盖到一些性能方面的问题,sonar的规则,50%bug都是主要级别,其实危害不大。前期轻量级的静态bugs扫描可以选用findbugs,当项目持续稳定后可以选用sonar进行更深层次的代码质量控制。
安装方式比较:
findbugs可以直接在ide环境下面添加插件即可使用。
sonarqube需要配置一个数据库源。使用相对复杂。
sonarqube安装配置过程:
1、下载好sonarqube后,解压打开bin目录,启动相应OS目录下的StartSonar;
2、启动浏览器,访问http://localhost:9000,如出现欢迎页面则表示安装成功;
3、打开mysql,新建一个数据库(必须是新建的);
4、打开sonarqube安装目录下的\conf\sonar.properties文件,添加以下信息;
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=gmsd
sonar.jdbc.password=gmsdtrade
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin
url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码,login是sonarqube的登录名,sonar.password是sonarqube的密码
5、重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息;
注意,启动sonarqube失败会自动关闭console窗口,要查看详细的报错信息可以查看安装目录下的logs/sonar.log文件,可能数据库连接失败等;
6、要使用sonarqube还需要下载sonar-scanner;
7、下载成功后打开sonar-scanner-2.5\conf\sonar-runner.properties文件,在mysql节点下添加以下信息
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=gmsd
sonar.jdbc.password=gmsdtrade
注意:如果测试项目与服务器不在同一台机子,则需要添加服务器的IP:
#----- Default SonarQube server
sonar.host.url=http://XXX.XXX.XXX.XXX:9000
8、配置环境变量
新建变量,name=SONAR_RUNNER_HOME。value=D:\sonar\sonar-scanner-2.5
打开path,输入%SONAR_RUNNER_HOME%\bin;
sonar-runner -version,出现以下信息,则表示环境变量设置成功
9、打开要进行代码分析的项目根目录,新建sonar-project.properties文件,输入以下信息:
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=apiautocore
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=src
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
其中:projectName是项目名字,sources是源文件所在的目录(sonar.sources=src表示与本properties文件 同级下的src文件夹);
10、设置成功后,启动sonarqube服务,并启动cmd,在cmd进入项目所在的根目录,输入命令:sonar-runner,分析成功后会出现下图
11、打开http://localhost:9000/,我们会看到主页出现了分析项目的概要图