【问题标题】:MSBuild SonarQube runner skipping auto-generated files?MSBuild SonarQube 跑步者跳过自动生成的文件?
【发布时间】:2015-11-04 22:05:59
【问题描述】:

我已经设置了本地 SonarQube 5.1.1 服务器。我还安装了 C# 插件(4.1 版)以及 MSBuild 运行器(1.0 版)。然后,我在 .NET 代码库上为我目前正在处理的项目执行了两次单独的运行:

  1. 使用 sonar-runner 和 C# 插件
  2. 使用 MSBuild 运行器

两次运行都是通过 CLI 进行的。然而,运行产生了非常不同的结果。这是一个例子:在第一次运行中,SonarQube 计算出的代码行数大约为 956 000,而在第二次运行中,它被计算为“仅”大约 434 000。然后我做了一些挖掘,看起来像后者跳过一些自动生成的文件。这些文件/类是由内部开发的旧 ORM 工具生成的。

我认为除非另有说明 - 通过使用包含/排除模式 - MSBuild SonarQube 运行器将分析给定项目中的每个单个 .cs 文件,但显然情况并非如此。

有没有人遇到过同样的“问题”,有没有人知道什么样的自动生成的文件会被自动排除在分析之外?

【问题讨论】:

    标签: c# msbuild sonarqube sonar-runner sonarqube-msbuild-runner


    【解决方案1】:

    我在Sonar .NET documentation 中找到了一些信息,其中指出:

    某些类型的项目将自动排除在分析之外。例如,Microsoft Fakes 在构建过程中会生成其他项目。这些自动生成的项目将不会被分析。

    "由 Visual Studio 中的自定义工具生成的文件会自动排除在分析之外,例如从 .resx 文件生成的 xxx.Designer.cs 文件:"

    我假设我们的内部 ORM 工具属于后一类。因此,这就解释了为什么这些文件被排除在分析之外。

    【讨论】:

    • 顺便说一句,我们的目标是通过自动排除使用 [GeneratedCode]、[CompilerGenerated]、... 属性注释的源代码来更进一步:github.com/SonarSource/sonarlint-vs/issues/164
    • 太棒了!非常感谢@Freddy - SonarSource 团队提供的信息。
    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多