SonarQube:扫描过程忽略lcov.info

问题描述 投票:1回答:3

我正在扫描一个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文件被扫描错误,最终会出现重复错误(毕竟,.js文件是由他们的.ts文件生成的。

有什么建议?

当然,整个问题都会消失,如果sonarqube直接采用qazxsw poi并且没有采取措施扫描其他文件。)

typescript sonarqube code-coverage sonarqube-scan
3个回答
3
投票

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

您可以查看此示例(sonar.typescript.lcov.reportPaths)以获取更多详细信息。


1
投票

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

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

文件夹信息,app文件夹包含typescript源文件和build文件夹包含已编译的Javascript文件

https://github.com/SonarSource/SonarTS-example

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

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

为了仅针对Typescript源实现静态代码分析。需要禁用所有适用于Javascript的Linting规则。

默认Javascript Sonarway质量配置文件规则无法自定义。

要禁用所有Javscript规则,请为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 的屏幕截图

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


0
投票

所有以下配置一起工作,我还需要Sonarqube project dashboard with quality profile list来生成声纳所需的XML文件。

声纳属性

jest-sonar-reporter

jest.config.json

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
© www.soinside.com 2019 - 2024. All rights reserved.