如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml

Posted

技术标签:

【中文标题】如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml【英文标题】:how to get coverage report as jacocoTestReport.xml in React project 【发布时间】:2021-07-10 09:58:58 【问题描述】:

我正在为我的 React 项目使用 jenkins 管道来执行测试、构建和部署步骤。

我将 sonarqube 与我的项目集成。但是声纳的 jacoco 没有评估我的覆盖率报告,它是通用覆盖率格式(test-report.xml)

有没有办法在我的 React 项目中将我的报告作为“jacocoTestReport.xml”而不使用 maven 或 gradle。我找不到任何文档或第 3 方工具?

我的相关流水线脚本:

sh '''
   $scannerHome/bin/sonar-scanner \
   -Dsonar.projectKey=xxxxxxxxxxxxxx \
   -Dsonar.sources=. \
   -Dsonar.sources=. \
   -Dsonar.coverage.jacoco.xmlReportPaths=test-report.xml \
   -Dsonar.testExecutionReportPaths=test-report.xml \
   -Dsonar.javascript.lcov.reportPaths=coverage/lcov.info \
   -Dsonar.coverageReportPaths=test-report.xml \
   -Dsonar.host.url=https://xxxxxxxxxxxxxx \
   -Dsonar.login=xxxxxxxxxx
'''

相关错误如下:

: Sensor Generic Coverage Report
INFO: Parsing /var/jenkins_home/workspace/**********/test-report.xml
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 36.948s
INFO: Final Memory: 49M/690M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
ERROR: Error during parsing of the generic coverage report '/var/jenkins_home/workspace/*******/test-report.xml'. Look at SonarQube documentation to know the expected XML format.
ERROR: Caused by: Unknown XML node, expected "coverage" but got "testExecutions" at line 2

【问题讨论】:

【参考方案1】:

我假设你只是在构建一个 react 应用程序,因此它只是 JavaScript/TypeScript,我的回答是基于这个假设。

如果是这种情况,您可以简单地忽略 sonar.coverage.jacoco.xmlReportPaths 属性。您已经通过lcov.info 文件提供了该信息。 Sonarqube 将能够从此文件中读取覆盖信息。

此外,test-report.xml 通常只包含已执行测试及其结果的列表。您通常不会在其中找到任何类型的覆盖信息。因此,您的构建也可能在 sonar.coverageReportPaths 属性上中断(我的建议也是删除该属性)。

【讨论】:

以上是关于如何在 React 项目中获取覆盖率报告为 jacocoTestReport.xml的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sonarrunner 和 Gradle 从 Jacoco 报告中排除包

Karma + Browserify + Jasmine + 伊斯坦布尔 + React 覆盖

我的 CSS 在 React 项目中被 Bootstrap 覆盖

ant+sonar+jacoco代码质量代码覆盖率扫描

如何为基于 http 的集成测试生成覆盖率报告?

如何关闭声纳分析仪但仍然获得覆盖率报告?