[英]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
獲得更准確的報告,我更新了以下文件:
src/test.ts
,改變這個:const context = require.context('./', true, /\.spec\.ts$/);
進入這個:
const context = require.context('./app/', true, /\.ts$/);
angular.json
,將"codeCoverageExclude": ["**/*.module.ts"],
添加到projects.<your-project-name>.architect.test.options
object。"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
...
"codeCoverageExclude": ["**/*.module.ts"],
...
}
},
tsconfig.spec.json
,添加'**/*.ts'
作為"include"
數組的第一個元素。 "include": [
"**/*.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.