如何在React项目中以jacocoTestReport.xml的形式获取覆盖率报告



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

我把sonarqube和我的项目结合起来了。但是声纳的jacoco没有评估我的覆盖报告,它是通用覆盖格式(testreport.xml(

有没有办法把我的报告写成";jacocoTestReport.xml";在我的React项目中,不使用maven或gradle。我找不到任何文档或第三方工具?

我的相关管道脚本:

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

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

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

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

最新更新