我正在使用SonarQube 6.5,并尝试使用sonar.javascript.lcov.reportPaths属性导入lcov.info文件以进行代码覆盖。
我的构建是使用詹金斯完成的。在/ path / to / Deploydirectory / parent-project1 / project1 /部署和测试代码,并在jenkins工作区/ path / to / jenkins / workspace / BUILD_DEPLOY / parent-project1 / project1 / coverage中生成报告。
我正在使用伊斯坦布尔作为代码覆盖范围
"scripts": {
"coverage": "./node_modules/.bin/istanbul cover
node_modules/mocha/bin/_mocha --dir=/path/to/jenkins/workspace/BUILD_DEPLOY/parent-project1/project1/coverage"
},
lcov.info的生成如下
TN:
SF:/path/to/Deploydirectory/project1/package/plugins/file1.js
FN:11,convetUTCtoLocal
FN:17,customCallback
FN:26,(anonymous_3)
FN:50,(anonymous_4)
FN:68,(anonymous_5)
FN:95,(anonymous_6)
......
在SonarQube出现错误
无法解析[/path/to/jenkins/workspace/BUILD_DEPLOY/parent-project1/project1/coverage/lcov.info中的2个文件路径, /path/to/jenkins/workspace/BUILD_DEPLOY/parent-project2/project2/coverage/lcov.info], 第一个未解决的路径: /path/to/Deploydirectory/parent-project1/project1/file1.js
sonrQube配置
sonar.inclusions=**/*.js
sonar.scm.disabled=true
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
sonar.projectBaseDir=/path/to
sonar.javascript.lcov.reportPaths=
/path/to/jenkins/workspace/BUILD_DEPLOY/parent-
project1/project1/coverage/lcov.info,
/path/to/jenkins/workspace/BUILD_DEPLOY/parent-
project2/project2/coverage/lcov.info
sonar.sourceEncoding=UTF-8
答案 0 :(得分:0)
您的sonar-project.properties
中可能有一些与报告冲突的属性,可能是路径问题?
已生成lcov.info
文件,并通过sonar.javascript.lcov.reportPaths
(a comma-separated list)告诉声纳扫描仪它在哪里将正确上传您的覆盖范围。
考虑使用nyc
NPM模块(或您的情况下,istanbul
生成覆盖率的情况,只要生成lcov文件),覆盖率脚本和声纳配置将如下所示:
package.json
:
"scripts": {
"coverage": "nyc npm test",
"test": "mocha tests/unit/*.js"
},
sonar-project.properties
:
sonar.host.url=https://sonarqube.server
sonar.scm.disabled=true
sonar.projectKey=my-app
sonar.projectName=My App
sonar.projectVersion=1.0
sonar.language=js
sonar.sources=src
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.eslint.reportPaths=eslint-report.json