sonar+jenkins+maven集成

4 篇文章 0 订阅
1 篇文章 0 订阅

1、下载压缩包https://www.sonarqube.org/downloads/
2、解压到/usr/local或者其他自定义目录
3、修改sonar.properties文件的数据库配置(此处使用了mysql数据库,也可支持oracle等其他数据库,properties文件中有对应的模板):
sonar.jdbc.username=uuu
sonar.jdbc.password=uuu
sonar.jdbc.url=jdbc:mysql://IP:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=IP
sonar.web.port=9000 //设置访问端口
4、启动sonar,/bin下sonar.sh start|stop|restart
5、启动报错es无法用root用户启动,新建sonar用户,将sonar解压文件夹权限设置给sonar用户,su sonar后使用sonar用户启动
adduser sonar
passwd sonar修改密码
cd /usr/local
chown -R sonar /sonarqube-6.7.1
su sonar
sonar.sh start
6、sonar 6+需要java 1.8 版本的支持,低版本java会报错

在部署了java 1.8 之后,日志打印正常。说明如果环境中有多个java版本,并且缺省java 不是 jdk 1.8 怎么办呢? 可以通过修改 conf/wrapper.conf 中的属性
wrapper.conf:wrapper.java.command=java
通过修改“java”来设置1.8版本的jdk,如通过下面方式:
wrapper.conf:wrapper.java.command=/usr/java/jdk1.8.0_112/jre/bin/java
7、http://IP:9000/ 登录用户名密码默认是admin/admin

与jenkins集成:
1、jenkins安装SonarQube Scanner for Jenkins
2、jenkins>系统管理>系统设置>SonarQube servers
server url是sonar web访问的地址
Server authentication token是sonar web中的我的账号>安全下生成的令牌,在第一次登录会显示,并且只显示一次,除非再次自己生成,需要自己保存下来

3、创建JOB进行代码检查,
其他都与正常部署代码一致,只需添加一个构建过程:sonarqube scanner
sonar.projectKey=xx:scanner
sonar.projectName=xx
sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.modules=module1,module2 //根据实际项目结构
module1.sonar.projectBaseDir=xx/
module2.sonar.projectBaseDir=xx/
sonar.java.binaries=target/classes

4、执行JOB,然后访问sonar web看配置>项目>后台管理的分析进度;分析完毕后可以在项目菜单下看到分析结果

5、如果需要与jacoco结合使用查看代码覆盖率,需要在代码中最外层的pom添加

org.jacoco
jacoco-maven-plugin
0.7.1.201405082137


default-prepare-agent

prepare-agent



default-report
prepare-package

report



default-check

check





org.apache.maven.plugins
maven-surefire-plugin
2.17

${argLine}
1
true



default-test
test

test



6、jenkins JOB配置需要进行简单修改
mvn命令:clean -Dmaven.test.failure.ignore=true org.jacoco:jacoco-maven-plugin:prepare-agent package org.jacoco:jacoco-maven-plugin:report -P betaA -U
sonar scanner执行参数:
sonar.projectKey=xx:scanner
sonar.projectName=xx
sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.modules=module1,module2,module3
module1.sonar.projectBaseDir=xx/
module2.sonar.projectBaseDir=xx/
module3.sonar.projectBaseDir=xx/
sonar.java.binaries=target/classes
sonar.tests=src/test/java
sonar.junit.reportPaths=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports
sonar.forceAnalysis=true
sonar.java.codeCoveragePlugin=jacoco
sonar.jacoco.reportPaths=target/jacoco.exec
sonar.dynamicAnalysis=reuseReports

7、再次执行JOB会分析并上传代码覆盖率到sonar平台

2.4%:2.4%行的代码被测试到;
3.5% line coverage:3.5%的普通代码行被测试到;
0.0% branch coverage:0.0%的分支代码行被测试到;(如if - elseif - else如果只測到if內的code就只有33%,若測到 if - elseif就是66%,if - elseif - else全測到就是100%)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值