持续集成七 Jenkins配置sonar 配置多模块覆盖率为0问题

1.没单元测试类或者网上说的中文路径问题

出现:Skipping JaCoCo execution due to missing execution data file. 报错

2.soanrScanner分析参数

提示你找不到字节码文件,读取sonar.java.binaries属性
Bytecode of dependencies was not provided for analysis of source files, you might end up with less precise results. Bytecode can be provided using sonar.java.libraries property.

但是我们父项目里没有target/claaes文件夹
No files nor directories matching 'target/classes'

无效
Invalid value for sonar.java.binaries

如果配置sonar.java.binaries=target虽然能够是编译通过,但是,就会造成覆盖率为0的情况。

按照上一篇sonar scanner配置方式,它支持单个模块的扫描,但是配置多个模块的时候会出现扫描为0 的情况,我们直接看官方说明:https://docs.sonarqube.org/latest/analysis/languages/java/

我们使用sonar scanner的时候,需要配置上面参数,但是有些参数是必填的,

如:sonar.java.binaries,根据官方说法:它不支持通配符:

#该属性配置的路径支持多个,但不支持通配符
sonar.java.binaries=target/classes
#支持第三方包支持通配符
sonar.java.libraries
#测试类的字节码文件路径,不支持通配符
sonar.java.test.binaries
#第三方测试包字节码
sonar.java.test.libraries

#java版本,未提供时,使用sonarQube默认插件的版本
sonar.java.source=1.8

关于覆盖率的文档:https://docs.sonarqube.org/latest/analysis/coverage/

#覆盖率报告路径,他是一个通用命令,支持多种语言设置
sonar.coverageReportPaths
#java的覆盖率报告路径:jacoco
sonar.coverage.jacoco.xmlReportPaths
#不推荐使用;
sonar.jacoco.reportPaths

#checkstyle报告路径
sonar.java.checkstyle.reportPaths
#pmd报告
sonar.java.pmd.reportPaths
#findbugs
sonar.java.spotbugs.reportPaths

根据上面信息我们得出结论,就是Jenkins使用sonar Scanner扫描的时候,插件对参数进行分析,然后执行的 ,但是它的参数配置并不符合我们多个模块的扫描要求,

既然Jenkins上的sonarScan不能使用,那么我们可以使用maven插件里的sonar插件,我也想过其他插件,或是其他配置方法,比如ant+sonar配置,这个还有搭建ant,然后还要写复杂的配置,然后还有 Cobertura  微服务覆盖率扫描插件,都需要过多的配置,我也没那么多精神搞这些东西。

就用简单的就行了。

注意这里没有sonar:sonar,因为这里我用的是sonarqube with maven  的插件,他会自动添加sonar:sonar 和sonar.host.url,这里如果在加sonar:sonar 他会执行两遍

-Dmaven.sonar.dynamicAnalysis=reuseReports -Dsonar.projectKey=nai-paas-analysis -Dsonar.exclusions=**/Test*.java,**/*Test.java -Dsonar.projectName=xxx

可能大家有注意到,这样配置和在【Build】里配置不是一样的吗???

其实虽然命令是一样的,但是,他们所起到的效果是不一样的,如果在【Build】里去执行sonar命令,那么在项目界面那里就不会与sonarQube的链接,就是下面的两个,而且,在【Build】里执行sonar命令,必须加上sonar.host.url,这个和我们在本地mvn运行一样,但是在sonarQube analysis with maven 里配置的话,就不需要,因为我们之前就已经配置过了sonarQube server,然后我们安装过sonar scanner的插件,不需要sonar:sonar 和sonar.host.url

3.sonarQube配置错误

这个配置的是xml文件,在覆盖率扫描的时候,项服务器这部请求拿到了配置属性按这个配置解析就会报错。

java.lang.IllegalStateException: Failed to parse JaCoCo XML report: /home/jenkins/data/workspace/test-ss/microservice-manager/auth/auth-common/target/coverage-reports/jacoco.exec
        at org.sonar.plugins.jacoco.XmlReportParser.parse(XmlReportParser.java:96)
        at org.sonar.plugins.jacoco.JacocoSensor.importReport(JacocoSensor.java:73)
        at org.sonar.plugins.jacoco.JacocoSensor.importReports(JacocoSensor.java:64)
        at org.sonar.plugins.jacoco.JacocoSensor.execute(JacocoSensor.java:48)

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值