簡體   English   中英

如何在 angular 的 sonarcloud 中獲得准確的代碼覆蓋率

[英]How to get exact code coverage in sonarcloud for angular

我正在嘗試在 sonarcloud 中為 angular-12 生成代碼覆蓋率報告。 有人可以幫助我如何配置 azure 管道以生成正確的代碼覆蓋率。 目前我正在配置如下,

  sonar.exclusions=**/node_modules/**
  sonar.tests=$(System.DefaultWorkingDirectory)/projects/project_name/src
  sonar.sources=$(System.DefaultWorkingDirectory)/projects/project_name/src
  sonar.test.inclusions=$(System.DefaultWorkingDirectory)/projects/project_name/src/**/*.spec.ts
  sonar.typescript.lcov.reportPaths=$(System.DefaultWorkingDirectory)/coverage/project_name/lcov.info 

我期待與我們在 ng test --code-coverage 命令中獲得的代碼覆蓋率相同。但不幸的是,聲納雲中顯示的百分比似乎有點不同。

默認情況下,Angular 測試覆蓋率報告將測量測試期間加載的文件的覆蓋率,而不是所有源文件,而 SonarCloud 將使用所有源文件(如您定義的 Sonar 配置)作為計算測試覆蓋率的分母。

與此相關的問題自 2016 年以來一直未解決。

為了使用ng test --code-coverage獲得更准確的報告,我更新了以下文件:

  1. src/test.ts ,改變這個:
const context = require.context('./', true, /\.spec\.ts$/);

進入這個:

const context = require.context('./app/', true, /\.ts$/);
  1. angular.json ,將"codeCoverageExclude": ["**/*.module.ts"],添加到projects.<your-project-name>.architect.test.options object。
"test": {
  "builder": "@angular-devkit/build-angular:karma",
  "options": {
    ...
    "codeCoverageExclude": ["**/*.module.ts"],
    ...
  }
},
  1. tsconfig.spec.json ,添加'**/*.ts'作為"include"數組的第一個元素。
  "include": [
    "**/*.ts",
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM