代码覆盖率 - Azure Pipelines SonarQube
Code coverage - Azure Pipelines SonarQube
我使用 Azure 管道 运行 单元测试和 SonarQube 集成。当我使用 cobertura 进行单元测试时,我无法将代码覆盖率结果传递到 SonarQube,尽管我在管道日志中看到了结果。但是,当我使用 OpenCover 时,这同样有效。
我还在管道日志中看到了这个警告,尽管我不确定这是否相关:“缺少以下文件的责备信息”
管道目前看起来如下
- task: DotNetCoreCLI@2
inputs:
command: ‘test’
projects: |
<test-proj>
arguments: ‘/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura’
displayName: ‘Run Tests’
- task: SonarQubePrepare@4
inputs:
SonarQube: <Service-Endpoint>
scannerMode: ‘MSBuild’
projectKey: ‘test:service’
projectName: ‘test:service’
extraproperties: |
sonar.flex.cobertura.reportPaths=$(Build.SourcesDirectory)/**/coverage.cobertura.xml
- task: DotNetCoreCLI@2
<Running DotNet build>
- task: SonarAnalyze@4
在运行DotNet测试阶段,测试结果是在这个路径下得到的——
E:\agent-5\s\test\ApiTest\coverage.cobertura.xml
如有任何建议,我们将不胜感激。
您的步骤顺序需要从 test -> prepare for tests -> build -> analyze
更改为 prepare for tests -> build -> test -> analyze
,如:
- task: SonarQubePrepare@4
inputs:
SonarQube: <Service-Endpoint>
scannerMode: ‘MSBuild’
projectKey: ‘test:service’
projectName: ‘test:service’
extraproperties: |
sonar.flex.cobertura.reportPaths=$(Build.SourcesDirectory)/**/coverage.cobertura.xml
- task: DotNetCoreCLI@2
<Running DotNet build>
- task: DotNetCoreCLI@2
inputs:
command: ‘test’
projects: |
<test-proj>
arguments: ‘/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura’
displayName: ‘Run Tests’
- task: SonarAnalyze@4
更新:显然,SonarQube 不允许默认发布 Cobertura 结果文件(或者至少我无法将其发布到 运行)。
使用了解决方法 - 我必须将 OpenCover 测试结果文件传递给 SonarQube。为了将结果推送到 Azure Devops,我必须使用 reportgenerator 工具将结果转换为 Cobertura ,然后再将它们传递到 Azure Devops。
我使用 Azure 管道 运行 单元测试和 SonarQube 集成。当我使用 cobertura 进行单元测试时,我无法将代码覆盖率结果传递到 SonarQube,尽管我在管道日志中看到了结果。但是,当我使用 OpenCover 时,这同样有效。
我还在管道日志中看到了这个警告,尽管我不确定这是否相关:“缺少以下文件的责备信息”
管道目前看起来如下
- task: DotNetCoreCLI@2
inputs:
command: ‘test’
projects: |
<test-proj>
arguments: ‘/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura’
displayName: ‘Run Tests’
- task: SonarQubePrepare@4
inputs:
SonarQube: <Service-Endpoint>
scannerMode: ‘MSBuild’
projectKey: ‘test:service’
projectName: ‘test:service’
extraproperties: |
sonar.flex.cobertura.reportPaths=$(Build.SourcesDirectory)/**/coverage.cobertura.xml
- task: DotNetCoreCLI@2
<Running DotNet build>
- task: SonarAnalyze@4
在运行DotNet测试阶段,测试结果是在这个路径下得到的—— E:\agent-5\s\test\ApiTest\coverage.cobertura.xml
如有任何建议,我们将不胜感激。
您的步骤顺序需要从 test -> prepare for tests -> build -> analyze
更改为 prepare for tests -> build -> test -> analyze
,如:
- task: SonarQubePrepare@4
inputs:
SonarQube: <Service-Endpoint>
scannerMode: ‘MSBuild’
projectKey: ‘test:service’
projectName: ‘test:service’
extraproperties: |
sonar.flex.cobertura.reportPaths=$(Build.SourcesDirectory)/**/coverage.cobertura.xml
- task: DotNetCoreCLI@2
<Running DotNet build>
- task: DotNetCoreCLI@2
inputs:
command: ‘test’
projects: |
<test-proj>
arguments: ‘/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura’
displayName: ‘Run Tests’
- task: SonarAnalyze@4
更新:显然,SonarQube 不允许默认发布 Cobertura 结果文件(或者至少我无法将其发布到 运行)。
使用了解决方法 - 我必须将 OpenCover 测试结果文件传递给 SonarQube。为了将结果推送到 Azure Devops,我必须使用 reportgenerator 工具将结果转换为 Cobertura ,然后再将它们传递到 Azure Devops。