SonarQube:扫描过程忽略lcov.info

时间:2018-01-22 13:51:32

标签: typescript sonarqube code-coverage sonarqube-scan

我正在扫描ui项目。

源代码位于typescript

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

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

sonar.javascript.lcov.reportPaths=test-coverage/lcov.info

问题

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

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

为什么?

如果我明确使用

sonar.inclusions=**/*.ts

sonar.language=ts

覆盖率报告中将忽略.js个文件

如果我使用

sonar.coverage.exclusions=**/*.ts

并且没有特定的内容,这会导致 .ts.js文件被扫描出错,最终会出现重复错误(毕竟,{ {1}}文件由.js对等方生成。

有什么建议吗?

如果sonarqube采用.ts并且没有采取措施扫描其他文件,那么整个问题当然会消失。)

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

我的Typescript项目也面临同样的问题,

为了实现Typescript&的静态代码分析。用于编译Javascript的代码覆盖率报告。配置您的声纳属性,如下面的代码段。

文件夹信息,应用文件夹包含打字稿源文件& 构建文件夹包含已编译的Javascript文件

sonar.sources=app/src/,build/src
sonar.exclusions=**/node_modules/**

#Excluding app folder in code coverage analysis
sonar.coverage.exclusions=app/src/**.ts    
sonar.ts.tslint.configPath=tslint.json
sonar.javascript.lcov.reportPaths=reports/lcov.dat

由于Javascript用于代码覆盖,Sonar项目具有 2质量配置文件(Javascript和Typescript)。

质量配置文件将分析已包含的来源,最终会出现重复错误。

仅为Typescript源实现静态代码分析。 Javascript的所有Linting规则都需要停用。

  

默认Javascript Sonarway质量配置文件规则不能   定制。

要禁用所有Javscript规则,请为Javascript创建自己的质量配置文件,禁用所有规则。

为项目配置新创建的JavaScript质量配置文件。

这里附有我的项目仪表板的屏幕截图 Sonarqube project dashboard with quality profile list

这个解决方案对我很有帮助,希望它也会帮到你!!!

答案 2 :(得分:0)

以下所有配置可以一起使用,我还需要jest-sonar-reporter来生成声纳所需的XML文件。

声纳特性

npm run sonar-scanner -- \
  -Dsonar.sources=./src \
  -Dsonar.exclusions=**/node_modules/**/*,**/coverage-reports/** \
  -Dsonar.typescript.exclusions=**/node_modules/** \
  -Dsonar.typescript.lcov.reportPaths=coverage-reports/lcov.info \
  # be sure to include your test files
  -Dsonar.test.inclusions=**/__test__/*.spec.ts,**/__test__/*.test.ts \
  # generate by jest sonar reporter at <rootDir>
  -Dsonar.testExecutionReportPaths=test-report.xml \ 
  -Dsonar.coverage.exclusions=src/**/*.tsx

jest.config.json

"testResultsProcessor": "jest-sonar-reporter",

答案 3 :(得分:0)

Dsonar.ts.coverage.lcovReportPath=lcov.info

是最终对我有用的命令,用于在 Sonarqube 中为打字稿文件添加覆盖范围。