【问题标题】:Automatically select correct CodeAnalysis ruleset自动选择正确的 CodeAnalysis 规则集
【发布时间】:2012-04-17 15:42:31
【问题描述】:

我们有许多大型解决方案,并且有许多基于不同项目类型的规则集文件。例如我们有:

  • Sharepoint 规则集包含:

    • 微软所有规则
    • MSOCAF 规则
    • SPDisposeChecker 规则
    • 一些自定义规则
  • 测试项目规则集

    • 微软所有规则
    • 禁用了一些命名准则规则(例如使用下划线)
    • 一些类似于 TypeMock TestLint 的测试特定规则
    • 一些自定义规则
  • 标准规则集

    • 微软所有规则
    • 一些自定义规则

如果代码分析能够根据项目类型自动选择正确的集合,我会很高兴。

我还没有找到理想的方法来做到这一点。我会考虑的事情:

  • 在构建服务器的 msbuild 文件夹中放置一个目标文件,该文件根据特定构建目标 (yuk) 的存在派生项目类型
  • 为每个项目类型 (yuk) 在每个目标文件中指定 CodeAnalayis 规则文件
  • 创建自定义目标文件并将其包含在每个项目中,在每个项目中设置一个属性以选择正确的项目类型。 (呸)
  • 更改规则本身以了解它们是否在正确的上下文中(可能 自定义规则,默认规则不可行)。

我们目前在做什么:

  • 为每个项目手动指定规则集。

我很想听听有关更好解决方案的想法...

【问题讨论】:

    标签: visual-studio-2010 projects-and-solutions code-analysis tfsbuild fxcop


    【解决方案1】:

    另一种方法是将代码分析目标文件或构建任务替换为允许您进行推理的版本。就我个人而言,我不会喜欢这个,因为拦截点对我的口味来说有点太隐蔽了,但是 ymmv...

    如果这是针对将由单个团队长期维护的产品,我可能会选择与您的第三个选项类似的东西。另一方面,如果这是一个代码库最终将转移到另一个团队(无论是内部还是外部)的项目,我会选择可以通过 Visual Studio UI 完成的事情。不幸的是,这意味着项目特定的规则集选择。唯一的好消息是,有一个 UI 允许对给定解决方案中的所有项目进行管理(可从分析...为解决方案配置代码分析菜单访问)。

    【讨论】:

    • 我知道管理解决方案的事情,但由于我们有多个项目团队,我更希望有一个可以自我管理的解决方案。不正确的规则集、丢失的规则集、更改的规则集存在太多问题。我没有触及默认目标文件,它隐藏得太深,而且在服务包和修补程序期间太容易丢失。
    【解决方案2】:

    我找到了适用于大多数项目类型的解决方案。 Microsoft 提供的许多默认 Msbuild 目标都包含一个选项,可通过将相关目标放置在 Msbuild 文件夹结构中的特定文件夹中来加载 BeforeTargets 和 Aftertargets。

    我将目标文件放入这些文件夹中(根据项目类型对它们的期望方式命名,这些往往因项目类型而异),我在其中指定默认 CodeAnalaysis.rules 文件。项目仍然可以覆盖这些,但如果没有,则使用默认值。

    例如,Sharepoint 会查找此文件:

    $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\SharePointTools\Custom.After.Microsoft.VisualStudio.SharePoint.targets

    这些引用存储在 msbuild 属性中,例如 $(CustomAfterSharePointTargets),您可以根据需要对其进行扩展或覆盖。

    我的解决方案是 upon this feature 和 this feature。

    我请求在 Visual Studio 11 中对此进行更多标准化。Please vote for it。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2017-11-07
      • 2010-12-22
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多