SonarQube:扫描过程忽略 lcov.info

pka*_*mol 4 code-coverage typescript sonarqube sonarqube-scan

我正在扫描一个ui项目。

源代码在typescript.

gulp test-coverage生成.js文件(然后扫描覆盖范围)。(每个.ts文件.js旁边都有一个文件,位于同一位置)

我将扫描仪指向lcov.info文件,如下所示:

sonar.javascript.lcov.reportPaths=test-coverage/lcov.info
Run Code Online (Sandbox Code Playgroud)

问题

lcov.info,提供覆盖信息.js文件

出于某种原因,SonarQube 还提供了*.ts文件的覆盖率信息(尽管包含在测试覆盖率报告中)。

这是为什么?

如果我明确使用

sonar.inclusions=**/*.ts
Run Code Online (Sandbox Code Playgroud)

或者

sonar.language=ts
Run Code Online (Sandbox Code Playgroud)

这些.js文件将从覆盖率报告中被忽略

如果我使用

sonar.coverage.exclusions=**/*.ts
Run Code Online (Sandbox Code Playgroud)

并没有具体的夹杂物,这将导致两者.ts.js被扫描的错误,这将在重复的错误最终文件(毕竟,.js由它们生成的文件.ts同行。

有什么建议?

整个问题当然会消失,如果 sonarqubelcov.info不采取措施扫描其他文件。)

小智 8

如果您的源代码是用 TypeScript 编写的,则覆盖率报告 ( lcov.info) 必须包含有关 TypeScript 文件的信息,而不是已编译的 JavaScript。在这种情况下,您必须使用的属性是sonar.typescript.lcov.reportPaths

您可以查看此示例 ( https://github.com/SonarSource/SonarTS-example ) 以获取更多详细信息。

  • sonar.typescript.lcov.reportPaths 现已弃用,请使用 sonar.javascript.lcov.reportPaths。参考:https://docs.sonarqube.org/latest/analysis/coverage/ (3认同)