.net-core - SonarQube 忽略 dotnet 覆盖

标签 .net-core azure-devops sonarqube code-coverage azure-pipelines

我在 Azure DevOps 中设置了一个拉取请求管道,其中将包含一个 SonarQube 分析。

管道构建、测试和分析 .net 核心项目。
在构建作业之后,SonarQube 包含分析结果,但不包含覆盖信息。

测试框架 : MSTest

SonarQube :开发者版 8.0 版(内部版本 29455)

请求请求文件

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 创建一个覆盖文件,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

关于.net-core - SonarQube 忽略 dotnet 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195889/

相关文章:

azure - 使用 AKS 上的 api 服务器地址访问集群应用程序

azure - 使用 REST API 下载 Azure Devops 存储库的存档

maven - 为什么要为Jenkins使用SonarQube插件,而不是简单地使用Maven目标 Sonar : Sonar ?

java - 如何避免 SonarQube 有关抽象异常的问题?

kubernetes - 将 Service Fabric 可靠集合迁移到 Kubernetes

.net-core - 使用 .NET Core 3 Azure AD 身份验证的自定义角色

sql-server - .NET Core - 迁移 Fluent API HasColumnType

asp.net-core - 如何添加 Content-Type : application/octet-stream to .Net Core header

rest - 如何使用 Azure DevOps REST API 创建新的构建管道?

java - SonarQube 无法分析文件 : bridge method not marked as synthetic