首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarQube JS覆盖范围始终为零。然而,jscoverage.xml导入看起来不错

SonarQube JS覆盖范围始终为零。然而,jscoverage.xml导入看起来不错
EN

Stack Overflow用户
提问于 2017-06-28 06:02:23
回答 1查看 1.5K关注 0票数 1

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

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

代码语言:javascript
复制
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报告:

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

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

代码语言:javascript
复制
sonar.javascript.lcov.reportPaths=./target/jscoverage/jscoverage.xml

我也试过:

代码语言:javascript
复制
sonar.javascript.lcov.reportPaths=/target/jscoverage/jscoverage.xml

但是UT的覆盖率总是为零。

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

6/29从我的调查中添加新的更新,从Jenkins日志,

代码语言:javascript
复制
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脚本:

代码语言:javascript
复制
cd target/jscoverage
pwd
vi jscoverage.xml

Jenkins日志显示:

代码语言:javascript
复制
<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"/>
...

从2条日志中我们可以看到报告看起来很好,SonarQube能够成功地读取报表,我们可以在xml中逐个看到UT覆盖文件,但是UT覆盖率仍然是零。

7/3我增加了依赖性

代码语言:javascript
复制
<dependency>
  <groupId>fr.sii.sonar</groupId>
  <artifactId>sonar-coverage-lcov</artifactId>
  <version>2.1.0</version>
</dependency>

并改变了

代码语言:javascript
复制
<sonar.javascript.jscoverage.reportPath>${project.build.directory}/jscoverage/jscoverage.xml</sonar.javascript.jscoverage.reportPath>

从jscoverage.lcov到jscoverage.xml,但仍然不起作用

EN

回答 1

Stack Overflow用户

发布于 2017-06-29 12:39:27

您要导入的报告看起来像一个xml文件。对于JavaScript,SonarQube支持LCOV格式的覆盖报告。见文档:https://docs.sonarqube.org/display/PLUG/JavaScript+Coverage+Results+Import

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44794713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档