【问题标题】:Karma code coverage doesn't show in SonarqubeKarma 代码覆盖率未在 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

标签: angular sonarqube karma-coverage


【解决方案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>
    

    不幸的是,大多数教程都不是最新的。

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2017-10-24
      • 2021-03-01
      • 2021-06-10
      • 2016-08-22
      • 2019-06-30
      • 2020-08-07
      • 2019-08-12
      • 2021-01-19
      相关资源
      最近更新 更多