Karma 代码覆盖率未在 Sonarqube 中显示
Posted
技术标签:
【中文标题】Karma 代码覆盖率未在 Sonarqube 中显示【英文标题】:Karma code coverage doesn't show in Sonarqube 【发布时间】:2020-08-13 01:20:45 【问题描述】:问题:配置 karma 和 sonar 后,Sonarqube 覆盖率为 0%。
Arch:应用使用Angular7和Node v8.14,集成Sonarqube为最新版本,JDK为java 11。
问题描述:这些是我的本地环境,在我配置并运行覆盖率和声纳后,业力覆盖率是 35%,但在声纳中它仍然是 0%。
请看我的代码如下:
package.json
:
"scripts":
"ng": "ng",
"start": "node server.js",
"build": "ng build",
"test": "ng test --code-coverage",
"lint": "ng lint",
"e2e": "ng e2e",
"sonar": "sonar-scanner"
,
"dependencies":
...
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"puppeteer": "^2.0.1"
,
"devDependencies":
...
"sonarqube-scanner": "^2.6.0",
sonar-project.properties
:
sonar.projectKey=aaa
sonar.projectName=AAA
sonar.projectVersion=1.0.0
sonar.sources=src
sonar.sourceEncoding=UTF-8
sonar.test.reportPath=./test-results.xml
sonar.language=ts
sonar.exclusions=**/node_modules/**
sonar.tests=src
sonar.typescript.lcov.reportPaths=coverage/lcov.info
sonar.test.inclusions=**/*.spec.ts
karma.conf.js
:
coverageIstanbulReporter:
dir: require('path').join(__dirname, '../coverage'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
,
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
// browsers: ['ChromeHeadless'],
// singleRun: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
);
...
业力覆盖率
类结构
声纳覆盖范围
【问题讨论】:
您是否曾经为此找到解决方案?我今天也遇到了同样的问题 同样的问题,这里有人找到解决方案了吗? @NerdinTraining 【参考方案1】:我不知道是不是同样的问题,但这对我有用。
在 sonar-project.properties 文件中:
sonar.typescript.lcov.reportPaths=coverage/name_proyect/lcov.info
在哪里 name_proyect:是我构建项目的路径。
【讨论】:
【参考方案2】:我有同样的问题,但能够找到解决方案。事实证明,从 SonarQube 8.2 开始,它们的属性不再区分 javascript 和 TypeScript。要指定线路覆盖率报告的路径,您现在必须使用:
sonar.javascript.lcov.reportPaths=<your path here>
不幸的是,大多数教程都不是最新的。
【讨论】:
以上是关于Karma 代码覆盖率未在 Sonarqube 中显示的主要内容,如果未能解决你的问题,请参考以下文章
karma sonarqube unit 记者输出以 HTML 格式输出
SonarQube 没有从 lcov 读取 javascript 测试覆盖率