【发布时间】:2021-05-06 10:15:55
【问题描述】:
我有一个包含单元测试项目的 Visual Studio .NET Core 解决方案。所有项目都引用了 Microsoft.NET.Test.Sdk Nuget 包,据我所知,这是执行单元测试的“必备”。 我想对单元测试代码执行静态代码分析(因为它也是我们可交付成果的一部分)。但是,每次我将 Sonar Analysis 作为 Azure DevOps 管道的一部分运行时,我都会在 SonarQube 报告中看到单元测试 *.cs 文件(以及单元测试项目中的其他文件)中有“0”行代码。
我还发现了有趣的事情。如果我删除了对 Microsoft.NET.Test.Sdk Nuget 包的引用 - 静态代码分析执行没有任何问题,并且代码对于 Sonar Qube 扫描仪是可见的。 此外——“dotnet build”命令在 Azure DevOps 构建代理上运行时不会报告单元测试项目的任何警告——即使它应该 ????。
我的 SonarQube Prepare 任务配置管道文件非常简单,看起来像:
- task: SonarQubePrepare@4
displayName: Prepare SonarQube analysis
inputs:
SonarQube: 'SonarQube (XX)'
scannerMode: 'MSBuild'
projectKey: 'XXX-YYY'
projectName: 'XXX-YYY'
extraProperties: |
sonar.sources=src/**/*
在 Azure DevOps 代理上运行的详细 dotnet 构建命令如下所示:
/usr/bin/dotnet build /home/vsts/work/1/s/src/XXX.IntegrationTests/Tests/XXX.YYY.IntegrationTests.csproj -dl:CentralLogger,"/home/vsts/work/_tasks/DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b/2.181.0/dotnet-build-helpers/Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll"*ForwardingLogger,"/home/vsts/work/_tasks/DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b/2.181.0/dotnet-build-helpers/Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" --configuration Release
我想知道带有 Microsoft.NET.Test.Sdk 参考的 dotnet 核心项目有什么特别之处。他们的构建过程是否有所不同?有没有办法“强制”他们进行静态代码分析?
任何帮助将不胜感激。
【问题讨论】:
标签: unit-testing .net-core azure-devops sonarqube static-code-analysis