Jenkins SonarQube JS UT覆盖范围始终为零。但是,jscoverage.xml导入看起来不错

Jenkins SonarQube JS UT覆盖范围始终为零。但是,jscoverage.xml导入看起来不错,jenkins,sonarqube,mocha.js,sonarqube-scan,sonarjs,Jenkins,Sonarqube,Mocha.js,Sonarqube Scan,Sonarjs,我正在使用SonarQube 6.3.1并运行jenkins创建SonarQube仪表板。 所以,我需要运行jenkins作业来创建js覆盖率报告,并导入SonarQube来创建UT覆盖率 通过在Jenkins中设置SonarQube扫描仪,以下是属性: sonar.projectKey=xxxxxxManagement sonar.projectName=XXXXXX Management sonar.projectVersion=1.0 sonar.language=js sonar.so

我正在使用SonarQube 6.3.1并运行jenkins创建SonarQube仪表板。 所以,我需要运行jenkins作业来创建js覆盖率报告,并导入SonarQube来创建UT覆盖率

通过在Jenkins中设置SonarQube扫描仪,以下是属性:

sonar.projectKey=xxxxxxManagement
sonar.projectName=XXXXXX Management
sonar.projectVersion=1.0

sonar.language=js
sonar.sources=webapp

sonar.sourceEncoding=UTF-8
sonar.javascript.coveragePlugin=jacoco
sonar.javascript.lcov.reportPaths=target/jscoverage/jscoverage.xml
sonar.dynamicAnalysis=reuseReports

sonar.login=admin
sonar.password=admin
在Jenkins中,以下是报告路径和报告上下文:

以下是库贝报道:

然而,SonarQube仪表板显示JS UT覆盖率为0

我想知道sonar.javascript.lcov.reportPaths设置是否错误,所以我尝试了很多方法 我试过:

sonar.javascript.lcov.reportPaths=./target/jscoverage/jscoverage.xml
我还尝试:

sonar.javascript.lcov.reportPaths=/target/jscoverage/jscoverage.xml
但UT的覆盖率始终为零

由于我可以看到正确创建的报告,我怀疑导入SonarQube是否失败,但Jenkins控制台中并没有显示错误日志


6/29 添加我的调查中的新更新, 詹金斯日志

INFO: Analysing [/var/jenkins_home/sharedspace/target/jscoverage/jscoverage.xml]
INFO: Sensor JavaScript Squid Sensor [javascript] (done) | time=1611ms
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=36ms
INFO: Sensor Code Colorizer Sensor
INFO: Sensor Code Colorizer Sensor (done) | time=1ms
INFO: Sensor CPD Block Indexer
INFO: org.sonar.scanner.cpd.deprecated.DefaultCpdBlockIndexer@4644f3d4 is used for js
DEBUG: No CpdMapping for language js
INFO: Sensor CPD Block Indexer (done) | time=0ms
INFO: Calculating CPD for 16 files
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/Component.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/model/util.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/IncidentDetail.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/model/formatter.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/util/Validator.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/localService/mockserver.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/Attachments.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/model/models.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/HelpRequestOverview.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/NotFound.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/ErrorHandler.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/CreateIncident.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/BaseController.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/HelpRequestDetail.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/HelpRequests.controller.js
DEBUG: Detection of duplications for /var/jenkins_home/sharedspace/webapp/controller/App.controller.js
INFO: CPD calculation finished
从日志中,我们可以看到没有错误消息,所以我在Jenkins作业的Post步骤中添加了shell脚本:

cd target/jscoverage
pwd
vi jscoverage.xml
詹金斯日志显示:

<coverage files="11" line-rate="0.7357294" lines-covered="348" lines-valid="473"[3;2Htimestamp="1498722804050">
<modules>
<module name="/Component.js" filename="/Component.js" line-rate="0.84210527" lin[6;1Hes-covered="16" lines-valid="19">
<lines>
<line number="1" hits="1"/>
<line number="8" hits="1"/>
<line number="10" hits="1"/>
<line number="24" hits="1"/>
<line number="27" hits="1"/>
<line number="30" hits="1"/>
<line number="32" hits="1"/>
<line number="35" hits="1"/>
<line number="36" hits="1"/>
<line number="39" hits="1"/>
<line number="49" hits="1"/>
<line number="51" hits="1"/>
<line number="61" hits="1"/>
<line number="63" hits="1"/>
<line number="64" hits="1"/>
...

...
从两条日志中,我们可以看到报告看起来不错,SonarQube成功地读取了报告,我们可以在xml报告中看到UT覆盖文件,但UT覆盖率仍然为零


7/3 我增加了依赖性

<dependency>
  <groupId>fr.sii.sonar</groupId>
  <artifactId>sonar-coverage-lcov</artifactId>
  <version>2.1.0</version>
</dependency>

fr.sii.声纳
声纳覆盖lcov
2.1.0
改变

<sonar.javascript.jscoverage.reportPath>${project.build.directory}/jscoverage/jscoverage.xml</sonar.javascript.jscoverage.reportPath>
${project.build.directory}/jscoverage/jscoverage.xml
从jscoverage.xml到jscoverage.lcov
但是仍然不起作用

您尝试导入的报告看起来像一个xml文件。对于JavaScript,SonarQube支持LCOV格式的覆盖率报告。见文件:


根据您使用的覆盖率工具,可能有一个选项以LCOV格式生成报告。

您尝试导入的报告看起来像xml文件。对于JavaScript,SonarQube支持LCOV格式的覆盖率报告。见文件:


根据您使用的覆盖率工具,可能有一个选项以LCOV格式生成报告。

请将您的问题添加到分析日志的相关部分。你应该看到关于覆盖率的行…谢谢安,我已经添加了日志。请将你的问题添加到分析日志的相关部分。你应该看到一些关于覆盖率的行…谢谢安,我添加了日志。谢谢。我查看了Sonar->admin->General Settings->Javascript,发现Sonar只支持LCOV文件的Javascript,不支持任何其他文件格式。你知道我需要安装什么Jenkins插件吗?以及如何更新pom.xml?我在上面的评论中添加了更多细节。Warren,您添加的依赖项是一个不同的分析器,您不需要它来导入.lcov文件,标准SonarJS分析器已经在尝试为您这样做,但您没有提供正确格式的文件。这不是Jenkins插件或更改文件扩展名的问题,而是以Sonar可以理解的格式(lcov)生成覆盖率报告的问题。您正在使用哪个代码覆盖率库?它能以正确的格式生成报告吗?我做了进一步的调查,发现我需要通过摩卡LCOV reporter创建LCOV文件。Github:如果您使用的是jscover,那么看起来他们自己就支持lcov格式:--format=LCOVtanks。我查看了Sonar->admin->General Settings->Javascript,发现Sonar只支持LCOV文件的Javascript,不支持任何其他文件格式。你知道我需要安装什么Jenkins插件吗?以及如何更新pom.xml?我在上面的评论中添加了更多细节。Warren,您添加的依赖项是一个不同的分析器,您不需要它来导入.lcov文件,标准SonarJS分析器已经在尝试为您这样做,但您没有提供正确格式的文件。这不是Jenkins插件或更改文件扩展名的问题,而是以Sonar可以理解的格式(lcov)生成覆盖率报告的问题。您正在使用哪个代码覆盖率库?它能以正确的格式生成报告吗?我做了进一步的调查,发现我需要通过摩卡LCOV reporter创建LCOV文件。Github:如果您使用的是jscover,那么看起来他们自己就支持lcov格式:--format=lcov