赞
踩
1:下载 SonarQube 资源包,这里选择7.6版本 ,别下载开发版和企业版本,直接下载community,之前卡了一天的问题 就是版本下载错啦
https://www.sonarqube.org/
2:注意:8.3以上的版本需要有jdk11的支持,且SonarQube 不支持mysql数据库
1: 将SonarQube 压缩包进行解压,将其解压在 /home/sonar/sonarqube-7.6 路径下
2: 修改 /config/sonar.properties 文件,将如下内容进行复制
## sonar连接的数据库账号
sonar.jdbc.username=root
## sonar连接的数据库密码
sonar.jdbc.password=xxx
## sonar 连接的数据库驱动信息 (需要提前创建连接的数据库)
sonar.jdbc.url=jdbc:mysql://10.12.22.21:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.host=0.0.0.0
## sonar的网页 端口号
sonar.web.port=9000
创建普通用户,并且给普通用户授予权限 (只有普通用户才可以启动sonarqube)\
## 增加用户 sonar
useradd sonar
## 给sonar文件权限
chown -R sonar /home/sonar
这里注意切换为普通用户 sonar,然后执行下面的命令
进入/home/sonar/sonarqube-7.6/bin/linux-x86-64 输入如下命令
## 启动
./sonar.sh start 启动
扩展命令
## 停止
./sonar.sh stop 停止
## 重启
./sonar.sh restart 重启
验证: 打开浏览器 {你服务的ip}:{sonarqube的端口号} 这里以10.12.22.68:9000为例,
账号密码都是admin/admin
如果失败,查看logs web.log 和 sonar.log 查看具体原因
进入网站: https://github.com/SonarQubeCommunity/sonar-l10n-zh/tree/sonar-l10n-zh-plugin-1.26
将对应汉化的版本jar 解压到/home/sonar/sonarqube-7.6/extensions/plugins ,重启sonar 即可.
1.开启SCM 如果不开启,后续操作会报错
2:打开我的账号-> 安全->随机输入一个字符串—>得到登录token令牌 → 复制保留(请复制粘贴保留,后续会用到)
1.打开创建项跳转页
2.创建的项目的名称
得到项目的project key
这令牌后续会用到,记下的你的令牌 ,比如 此时你的project key 就是 newtvupackdataservice2,到这一步.不用执行他提示的命令,此时项目页面还没有出来(是正常的),
我们目的是 Jenkins构建的时候,自动给我们构建出来项目的页面,看下面的操作
在jinkens点击->系统管理->管理插件->下载如下2个插件
Jacoco 用于测试覆盖率
Sonar Scanner 用于扫描项目
1: 在jinkens点击->系统管理->全局设置
1: 在jinkens点击->系统管理->全局工具配置–>SonarScanner for MSBuild
2: 在jinkens点击->系统管理->全局工具设置–>SonarQube Scanner
1: jinkens找打自己的想要设置的项目->配置->打开开启扫描环境
2:配置jenkins连接的sonar信息
# project key 就是上面得到的,不能错 sonar.projectKey=newtvupackdataservice sonar.projectName=newtvupackdataservice sonar.projectVersion=1.0 sonar.language=java sonar.sourceEncoding=UTF-8 sonar.sources=$WORKSPACE sonar.java.binaries=$WORKSPACE sonar.junit.reportsPath=target/surefire-reports # 代码覆盖率插件 sonar.java.coveragePlugin=jacoco # jacoco插件版本 jacoco.version=0.7.8 sonar.login=admin sonar.password=admin
3:每次构建前需要设置清除target文件
实际使用了几天之后,发现自己就除了几个空行,结果就一直报import Jacoco code coverage to SonarQube: Cannot import coverage information for file, coverage data is invalid,谷歌的stackOverFlow也没有得到十分明确的信息 ,百度更不用说啦, 压根就没有这个异常的解释,
后来自己发布了这个博客,继续搜索这个关键字,还是没有得到这种异常关键字,看到我的博客 0.0
最后发现jenkins 如果设置如下配置,才可以解决
1:在自己服务的pom.xml文件中,添加如下依赖
<!--jacoco覆盖率--> <dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.3</version> </dependency> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.8</version> <executions> <execution> <id>pre-test</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>post-test</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>
如果输入 mvn install 命令的时候,此时会项目的target/site/index.html中生成覆盖率的报告文件,如果成功可以进行一下步
1.请确保之前的sonar的配置有jacoco的信息,版本号需要和mavend的一致,
我这里就懒得改啦…你们记得一致呀
2:根据自己的项目路径的不同, 设置扫描的路径
1:生成sonar报告
此时他自己创建出来project 页面
2:查看覆盖率
打开每个目录可以查看每个文件/文件夹的所在文件的覆盖率
红色的代表没有覆盖,绿色的代表已经覆盖
方案1: 把之前lombok的代码全部进行删除,手动生成setter getter方法
方案2: 配置文件的方案 详情参考下面的链接
https://www.rainerhahnekamp.com/en/ignoring-lombok-code-in-jacoco/
在进行junit测试的时候,可以直接把定时任务的注入到Spring容器中,直接注入对象进行调用定时的具体实现方法
首先确定下,本地debug进行返回的时候,是否是最后一步抛出了异常,如果此时抛出了异常,即便前面的代码已经执行过,jacoco也会默认为他没有执行
其次回看之前的jenkins配置jacoco的配置信息,看是否信息出错
Jacoco本地的时候的时候,他显示的覆盖率分别为分支覆盖率和代码覆盖率,在进行显示的时候,
他会取一个分支覆盖率和代码覆盖率的中间值, 如果只是为了测试 代码具体走的行数,只用看代码覆盖率即可.
看项目中是否包含如下代码 (如果没有父项目也要检查看下)
下方代码的作用:在进行install 打包时,跳过test.
如果想要生成test的报告文件,把下方的true 改为false 即可
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
1,创建sonarqube项目的时候copy maven执行命令:
mvn sonar:sonar \
-Dsonar.projectKey=filebackend-service \
-Dsonar.host.url=http://10.12.22.68:9000 \
-Dsonar.login=415e9bf2cd6c296ba9f4bff6451cf8efc4bd5aa0
2,在build的时候可以移除pre steps 中的 execute sonarqube scanner
已经添加的可以移除掉
将第一步的命令复制到构建mvn命令执行窗口
Jacoco配置好对应的文件相对路径,注意聚合目录可能不同
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。