我可以在一组自定义项目上运行Visual Studio代码分析吗?

我处于开心的境地(</sarcasm> ),我在一个包含168个项目的Visual Studio 2012解决方案上工作。

我们正在其中大约15个工作,其他的我们不接触。

当我们在整个解决方案上运行代码分析时,它运行23分钟,这有点长.....

但是,当我们必须找出每次检查哪些项目被触摸时,这也是一个痛苦,所以我们只能为这些项目运行代码分析。

所以问题是,如果可以创建一组自定义的项目来运行代码分析?


简而言之,Visual Studio没有在解决方案的一部分项目上运行代码分析工具的方法。

不过,您可以考虑一些可能的解决方法。


将活动项目解压缩到单独的解决方案中:

创建一个新的空白解决方案,将所有现有的活动项目添加到该解决方案中,并在较小的解决方案上运行代码分析。 由于项目文件相同,解决方案将同步。 如果这些项目依赖于不活动的项目,可能会提供虚假报告。


为非活动项目使用空白规则集:

添加一个类型为“代码分析规则集”的新文件,对其进行编辑,在其属性窗口中将其名称更改为“无规则”,并取消选中所有规则(如果选中了任何规则)。

然后转到解决方案属性,选择“通用属性 - >代码分析设置”,并将非活动项目的所有规则集更改为“无规则”。 您可以在306次点击中完成此操作。

这将为代码分析提供最佳的运行时间,但也会使结果窗口溢出CA0064:由于指定的规则集不包含任何FxCop规则,因此未执行分析。


对不活动的项目使用一个简单的规则集:

如上所述,但是将任何一条规则添加到您根本不希望看到的“无规则”。 这会使代码分析变慢(但仍比使用实际规则集要快得多),并且不会再发出警告CA0064。


说实话,Visual Studio的内置代码分析有一些基本缺陷,我会推荐使用专业的外部工具,例如ReSharper,或者其他评论中提到的工具。 使用空/平凡的规则集当然应该达到所需的结果,但它更像是一种解决方法而不是实际的解决方案。


如果您不愿意重温您的解决方案方法(与其他方法一样,我强烈建议),但多种解决方案构建配置可能是在各种情况下为代码分析启用不同套装程序集的最简单方法。 例如,您可能希望考虑一组解决方案配置,如下所示(其中“核心”项目是您通常使用的15个项目):

  • 调试
  • 所有项目:编译(调试配置)和运行静态分析(VS代码分析/ FxCop,StyleCop,架构规则执行等)
  • DebugCore
  • 核心项目:编译(调试配置)并运行静态分析
  • 其他项目:不要编译或运行静态分析
  • DebugCompileOnlyCore
  • 核心项目:编译(调试配置),但不运行静态分析
  • 其他项目:不要编译或运行静态分析
  • DebugNoBuild
  • 所有项目:不要编译或运行静态分析
  • 发布
  • 所有项目:编译(发布配置),并运行静态分析,如果你选择这样做的发布配置
  • (如果你愿意对项目配置有点喜欢,将项目级别配置的相关部分外部化为导入的MSBuild .targets文件将使管理所有这些变得更加简单,特别是考虑到受影响的项目数量。)

    大多数开发人员可能会选择在DebugNoBuild或DebugCompileOnlyCore下进行大部分日常活动,并且可以选择Debug或DebugCore(如果您认为合适)进行预先提交规则验证。 通常,我建议使用完整的调试(包括所有相关的静态分析)来进行持续集成构建,但考虑到完整分析的持续时间,您的情况可能不太实际。 如果使用CI,最好使用DebugCore(或编译所有内容的变体,但仅对核心项目运行静态分析),然后添加定期计划的构建,该构建比每天更频繁地运行(比如每隔小时或两小时)运行使用完整调试配置的构建版本。


    您可以从外部构建文件(build.proj - 解决方案的目录)轻松完成:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Target Name="Build">
        <MSBuild Projects="TestSolution.sln" Properties="RunCodeAnalysis=false"></MSBuild>
        <MSBuild Projects="ClassLibrary1ClassLibrary1.csproj" Targets="RunCodeAnalysis"></MSBuild>
        <MSBuild Projects="ClassLibrary2ClassLibrary2.csproj" Targets="RunCodeAnalysis"></MSBuild>
      </Target>
    </Project>
    
  • 没有代码分析的构建。
  • 只对选定的项目运行分析。
  • 如果每个开发人员使用一组不同的项目,则可以引用另一个脚本和要分析的项目列表。 这一个不会进入VCS。
  • 可以使用外部工具从Visual Studio中运行脚本(如果您的团队不喜欢shell)。

    希望这可以帮助。

    链接地址: http://www.djcxy.com/p/75145.html

    上一篇: Can I run Visual Studio Code Analysis on a custom set of projects?

    下一篇: GITHub API Issue with file upload