自動化配置四 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的情況。

按照上一篇的配置,可以它支持單個模塊的掃描,但是配置多個模塊的時候會出現掃描爲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 -Dmaven.sonar.dynamicAnalysis=reuseReports -Dsonar.projectKey=nai-paas-analysis -Dsonar.projectName=xxx -Dsonar.exclusions=**/Test*.java,**/*Test.java -Dsonar.host.url=http://xxx

3sonarQube配置錯誤

這個配置的是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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章