个人理解:
SonarQube主要是数据的分析、统计展示,而SonarScanner则是扫码代码,采集数据,提交给SonarQube的数据库,SonarQube支持多种数据库,下面用的是Mysql;
环境搭建
- JDK1.8,Mysql5.7(或以上),关闭防火墙
- 创建数据库和账号
- 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;
注意点:运行创建用户,一定要记得尝试使用新创建的用户登陆至mysql
- 下载sonarqube-7.3.zip
- 由于SonarQube里面集成了ElasticSearch,所以启动的时候,不能用root权限,
- useradd travis #创建用户
- passwd travis #给travis设置密码
- visudo
- chown -R travis:travis /module/download #压缩包所在目录
- chown -R travis:travis /usr/local/src #解压到的目录
- su travis
- unzip sonarqube-7.3.zip -d /usr/local/src/ #我是解压到 /usr/local/src下面的
- cd /usr/local/src/sonarqube-7.3/conf
- vim sonar.properties
复制:
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3316/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
- cd /usr/local/src/sonarqube-7.3/bin/linux-x86-64
- ./sonar.sh start #启动服务
- ./sonar.sh restart #重启
- ./sonar.sh stop #停止服务
测试:http://IP:9000 默认用户名密码都是admin -
问题:
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
切换用户:su travis,启动 -
安装中文插件:
安装完成,点击上面的红色提示自动重启
点击Login In 登录的时候,可以通过用户名 获取token(也可以不生成);当执行分析时,令牌用于标识您;具体在Jenkins中使用时再说;
- 下载sonar-scanner-cli-3.2.0.1227-linux.zip
- chmod 777 sonar-scanner-3.2.0.1227-linux.zip #我安装的时候用的ROOT没有chmod
- unzip sonar-scanner-3.2.0.1227-linux.zip #我是解压到 /usr/local/src下面的
- cd /usr/local/src/sonar-scanner-3.2.0.1227-linux/conf
- vim sonar-scanner.properties
复制:
#----- Default SonarQube server
sonar.host.url=http://172.172.0.107:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3316/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#sonar.jdbc.url=jdbc:mysql://localhost:3316/sonar?useUnicode=true&characterEncoding=utf8
sonar.login=admin
sonar.password=admin
5.vim /etc/profile #配置环境变量
export SONAR_SCANNER_HOME=/usr/local/src/sonar-scanner-3.2.0.1227-linux
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}测试(直接使用sonarScanner测试代码):
当前服务器,进入项目目录,我测试的是Java代码;
我的项目目录:/home/xcc/travis
- cd /home/xcc/travis
- vim sonar-project.properties
#项目的key 唯一
sonar.projectKey=travis-tes2t
#项目的名字(可以随便写,这个名字在sonar显示的)
sonar.projectName=travis-1
#项目的版本
sonar.projectVersion=1.0
#需要分析的源码的目录,订单模块
sonar.sources=order/src/
#这是target(如果没编译可以不写)
sonar.java.binaries=target/classes
#java语言
sonar.language=java
#编码格式
#sonar.sourceEncoding=UTF-8
- sonar-scanner
查看sonar服务器9000,project中
拓展:
Sonar-project.properties
#required metadata
#projectKey项目的唯一标识,不能重复
sonar.projectKey=testuser
sonar.projectName=testuser
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.modules=java-module
sonar.java.binaries=.
#,javascript-module,html-module
# Java module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
# .表示projectBaseDir指定的目录
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src/main/java
sonar.binaries=classes
# JavaScript module
#javascript-module.sonar.projectName=JavaScript Module
#javascript-module.sonar.language=js
#javascript-module.sonar.sources=js
#javascript-module.sonar.projectBaseDir=src/main/webapp
# Html module
#html-module.sonar.projectName=Html Module
#html-module.sonar.language=web
#html-module.sonar.sources=pages
#html-module.sonar.projectBaseDir=src/main/webapp