.net-core - SonarQube 忽略 dotnet 覆盖
问题描述
我在 Azure DevOps 中设置了一个拉取请求管道,其中包括 SonarQube 分析。
管道构建、测试和分析 .net 核心项目。在构建作业之后,SonarQube 包含分析结果,但不包含覆盖信息。
测试框架:MSTest
SonarQube:开发人员版 8.0 版(内部版本 29455)
拉取请求.yml
pool:
vmImage: 'windows-latest'
steps:
- script: echo Pull Request Pipeline
displayName: 'Pull Request Pipeline'
- task: SonarQubePrepare@4
inputs:
SonarQube: 'SonarQube Connection'
scannerMode: 'MSBuild'
projectKey: 'ProjectKey'
projectName: 'ProjectName'
extraProperties: |
sonar.scm.exclusions.disabled
sonar.language=csharp
sonar.log.level=TRACE
sonar.verbose=true
sonar.pullrequest.base=master
sonar.pullrequest.key=$(System.PullRequest.PullRequestId)
sonar.pullrequest.branch=$(Build.SourceBranchName)
sonar.cs.vscoveragexml.reportsPaths=**\*.coveragexml
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '-c release'
- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/*.csproj'
arguments: '-c release --no-build --collect:"Code Coverage"'
- task: SonarQubeAnalyze@4
- task: SonarQubePublish@4
inputs:
pollingTimeoutSec: '300'
dotnet test 创建一个coverage 文件,CodeCoverage.exe 创建一个coveragexml 文件,但SonarQube 没有找到coveragexml 文件。
Microsoft (R) Coverage Collection Tool Version 16.0.30319.3002
Copyright (c) Microsoft Corporation. All rights reserved.
Results File: d:\a\_temp\VssAdministrator_fv-az623_2019-12-05_13_18_24.trx
Attachments:
d:\a\_temp\ea5c681a-654c-4370-b748-d7264b53a0d9\VssAdministrator_fv-az623_2019-12-05.13_18_22.coverage
Test Run Successful.
...
Config file: d:\a\1\.sonarqube\conf\SonarQubeAnalysisConfig.xml
13:18:27.568 Attempting to locate the CodeCoverage.exe tool...
13:18:27.583 Attempting to locate the CodeCoverage.exe tool using setup configuration...
13:18:27.833 Code coverage command line tool: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe
13:18:27.849 Property 'sonar.cs.vstest.reportsPaths' provided, skipping the search for TRX files in default folders...
13:18:27.849 Did not find any binary coverage files in the expected location.
13:18:27.849 Falling back on locating coverage files in the agent temp directory.
13:18:27.849 Searching for coverage files in d:\a\_temp
13:18:27.849 All matching files: count=2
13:18:27.849 d:\a\_temp\ea5c681a-654c-4370-b748-d7264b53a0d9\VssAdministrator_fv-az623_2019-12-05.13_18_22.coverage
13:18:27.849 d:\a\_temp\VssAdministrator_fv-az623_2019-12-05_13_18_24\In\fv-az623\VssAdministrator_fv-az623_2019-12-05.13_18_22.coverage
13:18:27.849 Unique coverage files: count=1
13:18:27.849 d:\a\_temp\ea5c681a-654c-4370-b748-d7264b53a0d9\VssAdministrator_fv-az623_2019-12-05.13_18_22.coverage
13:18:27.958 Executing file C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe
Args: analyze /output:d:\a\_temp\ea5c681a-654c-4370-b748-d7264b53a0d9\VssAdministrator_fv-az623_2019-12-05.13_18_22.coveragexml d:\a\_temp\ea5c681a-654c-4370-b748-d7264b53a0d9\VssAdministrator_fv-az623_2019-12-05.13_18_22.coverage
Working directory: d:\a\_temp\ea5c681a-654c-4370-b748-d7264b53a0d9
Timeout (ms):60000
Process id: 5452
13:18:28.161 Process returned exit code 0
...
13:18:57.004 INFO: Sensor C# [csharp] (done) | time=529ms
13:18:57.004 INFO: Sensor C# Tests Coverage Report Import [csharp]
13:18:57.004 WARN: Could not find any coverage report file matching the pattern 'd:\a\1\b\**\*.coveragexml'.
13:18:57.004 INFO: Sensor C# Tests Coverage Report Import [csharp] (done) | time=0ms
13:18:57.004 INFO: Sensor C# Unit Test Results Import [csharp]
13:18:57.019 INFO: Sensor C# Unit Test Results Import [csharp] (done) | time=15ms
yml 管道有什么问题?
解决方案
reportsPaths
错了。
这对我有用:
sonar.cs.vstest.reportsPaths=$(Agent.TempDirectory)\**\*.trx
sonar.cs.vscoveragexml.reportsPaths=$(Agent.TempDirectory)\**\*.coveragexml
推荐阅读
- java - Spring WebMVC 5 - 基于注解的拦截器
- google-cloud-platform - Google Cloud Pub-Sub 的 Avro 消息?
- javascript - Filtering an Observable based on a past value of another
- javascript - 带有 AJAX 的数据表,求和并添加总页脚
- powerbi - Power BI(DAX 或 Power Query)中 3 个月滚动平均值的季度总和
- android - RNCamera 文本识别在纵向模式下失败
- xml - 没有使用javascript从XML树的根元素中获取最后一个孩子
- multidimensional-array - java8数组流到二维数组
- mysql - mysql UPDATE MAX value of group using MIN value of the same group, multiple rows
- python - 获取格式化字符串列表