2

我正在使用 SonarQube 6.5,并尝试使用 sonar.javascript.lcov.reportPaths 属性导入 lcov.info 文件以进行代码覆盖。

我的构建是使用 Jenkins 完成的。代码在 /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、/path/to/jenkins/workspace/BUILD_DEPLOY/parent-project2/project2/coverage/ 中的 2 个文件路径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
4

1 回答 1

0

您的某些财产sonar-project.properties可能与报告相冲突,可能是路径问题?

生成文件并通过(逗号分隔的列表lcov.info)告诉声纳扫描仪它会正确上传您的覆盖范围。sonar.javascript.lcov.reportPaths

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
于 2019-02-27T20:35:11.563 回答