SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。(该文章部分参考其他人写的,加入自身遇到的问题总结) 准备工作; 1、jdk(请自行百度,很easy的) 2、sonarqube:http://www.sonarqube.org/downloads/ 3、SonarQube+Scanner:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.5.zip 4、mysql数据库(请参考:http://www.jianshu.com/p/0dace9c19333) ###一、安装篇 1.下载好sonarqube后,解压目录,通过命令行到sonarqube目录并启动
命令: sudo {sonarqube上一级目录}/sonarqube/bin/macosx-universal-64/sonar.sh start 输入Mac本机密码启动sonarqube
2.浏览器访问http://localhost:9000,如出现下图则表示安装成功。
###二、配置篇 1.打开mysql,新建一个数据库
在命令行中,执行如下操作: mysql -u root -p mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar'; mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; mysql> FLUSH PRIVILEGES;
2.打开sonar.properties文件
cd /{sonarqube上一级目录}/sonarqube-6.5/conf/sonar.properties
3.新增如下信息,:
sonar.jdbc.username=root sonar.jdbc.password=123456 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码.
4.重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息
重启sonarqube服务命令 sudo {sonarqube上一级目录}/sonarqube/bin/macosx-universal-64/sonar.sh restart
5.数据库初始化成功后,登录(admin/admin) 6.按照下图的点击顺序,进入插件安装页面 7.搜索chinese Pack,安装中文语言包 8.安装成功后,重启sonarqube服务,再次访问http://localhost:9000/,即可看到中文界面 三、使用篇 1.打开sonar-runner.properties文件
/{sonar-scanner上一级目录}/sonar-scanner-2.5/conf/sonar-runner.properties
2.mysql节点下输入以下信息
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
注意:如果测试项目与服务器不在同一台机子,则需要添加服务器的IP:
/#----- Default SonarQube serversonar.host.url=http://XXX.XXX.XXX.XXX:9000
3.配置环境变量 a. 命令行中输入sudo vim ~/.bash_profile,粘贴如下信息
export PATH=$PATH:/Applications/sonarqube-6./bin export PATH=$PATH:/Applications/sonar-scanner-2.5/bin b. 保存后执行如下命令 source ~/.bash_profile
4.进入要检查的项目目录下,新建sonar-project.properties 5.输入以下信息:
# must be unique in a given SonarQube instance sonar.projectKey=Autobom # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1. sonar.projectName=bom 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=. # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8
其中:projectName是项目名字,sources是源文件所在的目录 6.在当前项目目录下执行命令:sonar-runner,分析成功后会出现下图 8.打开http://localhost:9000/,我们会看到主页出现了分析项目的概要图
预知更多使用,请登录官网自行学习。 http://www.sonarqube.org/ http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner ##遇到的问题: ####坑1: 在执行代码检测时(sonar-runner),出现如下报错
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (8488572 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.
解决方法:
- 查看mysql最大允许包大小,执行如下命令,查看当前mysql允许的大小:
show VARIABLES like '%max_allowed_packet%';
- 由于Mac中没有自带my.cnf,所以我们可以新建这个文件,默认是在mysql u目录下新建
cd /usr/local/mysql/etc/ (没有etc目录的话,也可以新建一个) touch my.cnf 打开my.cnf并输入如下信息: [mysqld] max_allowed_packet=32M
- 重启mysql
sudo /usr/local/mysql/support-files/mysql.server restart
- 这边还要重启sonarqube
sudo {sonarqube上一级目录}/sonarqube/bin/macosx-universal-64/sonar.sh restart
####坑2:前提:被检查的代码是JAVA,在执行命令sonar-runner,出现如下报错:
ERROR: Error during SonarQube Scanner execution ERROR: Please provide compiled classes of your project with sonar.java.binaries property ERROR: ERROR: To see the full stack trace of the errors, re-run SonarQube Scanner with the -e switch. ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
解决方法: 修改sonar-project.properties属性文件为如下:
#required metadata
#projectKey项目的唯一标识,不能重复
sonar.projectKey=Auto
sonar.projectName=YingkeAuto
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.modules=java-module # Java module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
# .表示projectBaseDir指定的目录
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src
sonar.binaries=classes sonar.java.binaries=/Users/forkey/Documents/Tool/Workspace/YingkeAuto/target/classes,/Users/forkey/Documents/Tool/Workspace/YingkeAuto/target/test-classes sonar.java.test.binaries=/Users/forkey/Documents/Tool/Workspace/YingkeAuto/target/test-classes
来源:oschina
链接:https://my.oschina.net/forkey/blog/3198166