错误:Sonarqube + Jest + Circle-CI的代码覆盖面为空

时间:2019-10-31 16:31:04

标签: javascript node.js sonarqube jestjs circleci

场景

我正在使用Circle-ci对代码覆盖率进行声纳检查。 Node应用程序使用jest创建代码覆盖文件。我遇到了一个问题,其中使用绝对路径生成了lcov文件, 即

/home/node/app/fixtures/github.js

当sonarqube运行时,这些文件实际上位于

/root/project/app/fixtures/github.js

错误:

WARN: Could not resolve 9 file paths in [/home/node/app/reports/lcov.info], first unresolved path: /home/node/app/fixtures/github.js

可能的解决方案?

这可以用类似的东西解决

sed -i 's#/home/node/app/##g' /home/node/app/reports/lcov.info

我将此arg放入声纳设置:

     File=$(sed -i 's#/home/node/app/##g' /home/node/app/reports/lcov.info)
     -Dsonar.javascript.lcov.reportPaths=$File

将它们转换为相对路径,但这需要自定义,因为生成lcov报告的图像可以具有任何文件结构。

Package.json

...
{
   "test": "./node_modules/.bin/jest -c jest.unit.config.js --coverage --forceExit",
}

Circle-CI Orb设置:

run:
command: |
     wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.1.0.1829-linux.zip unzip sonar-scanner-cli-4.1.0.1829-linux.zip 
     export SONAR_SCANNER_OPTS="-Xmx2048m" 
     File=$(sed -i 's#/home/node/app/##g' /home/node/app/reports/lcov.info)
     ./sonar-scanner-4.1.0.1829-linux/bin/sonar-scanner -X
    -Dsonar.host.url=${SONARQUBE_URL}
    -Dsonar.login=$SONARQUBE_TOKEN 
    -Dsonar.projectKey=${CIRCLE_PROJECT_REPONAME} 
    -Dsonar.sources=. -Dsonar.sourceEncoding=US-ASCII 
    -Dsonar.exclusions=**/node_modules/** 
    -Dsonar.javascript.lcov.reportPaths=$File 
    -Dsonar.junit.reportPaths="/home/node/app/reports/junit/js-test-results.xml"

0 个答案:

没有答案