场景
我正在使用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"