【问题标题】:Static code analysis of .NET Core Unit test projects *.cs files with SonarQube使用 SonarQube 对 .NET Core 单元测试项目 *.cs 文件进行静态代码分析
【发布时间】: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


    【解决方案1】:

    好的。发生这是“设计使然”的 SonarQube 行为。具体覆盖方法和方法可以参考:https://github.com/SonarSource/sonar-scanner-msbuild/wiki/Analysis-of-product-projects-vs.-test-projects

    【讨论】:

    • 我有一个使用 SpecFlow nuget 的项目,我想对其进行分析。默认情况下它没有被分析,但在这个帮助下我能够分析它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2019-11-27
    相关资源
    最近更新 更多