visual-studio-2010 - 使用 VS 2010 Professional 进行 .NET 4.0 静态代码分析 (FxCop)

标签 visual-studio-2010 msbuild code-analysis fxcop

我有 VS 2010 专业 (与 Premium 不同,它不包括访问 IDE 中的代码分析配置),以及包含许多项目的 C# 4 解决方案。我想做静态代码分析作为解决方案编译的一部分。

我在 SO 和 Google 的帮助下确定的可能方法是:

  • 编辑每个 .csproj在解决方案中将独立 FxCop 10 的调用包含为构建后事件。优点:每次编译都发生在每个重建的项目中。缺点:必须采取额外措施以确保新项目具有此指定
  • 创建一个新项目,或识别一个现有项目,由于其项目依赖关系,该项目始终是最后构建的。给(只是)该项目一个 Post-build 事件,该事件在(公共(public))输出文件夹中的所有程序集上运行 FxCop。优点:只需更新一个文件, future 项目未经分析的可能性较小。缺点:构建依赖的变幻莫测可能意味着这实际上不起作用
  • 使用在任何构建后运行 FxCop 的加载项或宏更新所有开发人员的 VS 实例。根本不喜欢这个主意。

  • 有没有其他选择,显然比上述任何一个都好?为了进行上述工作之一,我是否需要注意任何警告或观察?

    我还希望 FxCop 作为 MSBuild 4.0 的一部分运行- 在构建服务器上构建。哪些选项允许我在桌面编译和 bulid 服务器编译之间重用代码分析规则集?

    我已经阅读了相关但不相同的现有问题,包括:
  • FxCop for .NET 4.0它询问“独立的 FxCop 还可用吗?”
  • FxCop on build (Visual Studio 2008 Professional)这是关于一个项目
  • How to integrate FxCop and VS 2008?这是关于使 FxCop 调用可临时可用,在上下文菜单上单击
  • 最佳答案

    要将 FxCop 集成为构建脚本 (MSBuild) 的一部分,我使用 MSBuild.Community.Tasks 中的 FxCop 任务.我使用 FxCop 创建了一个 FxCop 项目 (FxCopProject.FxCop),它定义了要使用的规则和要检查的程序集。

    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <PropertyGroup>
      <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\vendor\MSBuild.Community.Tasks.v1.3.0.504</MSBuildCommunityTasksPath>
      <FxCopDir>vendor\Microsoft Fxcop 10.0</FxCopDir>
     </PropertyGroup>
     <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>
    
     <Target Name='FxCopReport'>
      <FxCop
       ToolPath='$(FxCopDir)'
       ProjectFile='FxCopProject.FxCop'
       AnalysisReportFileName='FxCopReport.xml'
      />
     </Target>
    </Project>
    

    关于visual-studio-2010 - 使用 VS 2010 Professional 进行 .NET 4.0 静态代码分析 (FxCop),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3872184/

    相关文章:

    c# - 如何以编程方式发布 SQL Server 数据库项目?

    c++ - VS 2012 - 由于缺少工具集,项目无法构建

    c# - 将 pdb 文件包含到我的 nuget (nupkg) 文件中

    .net - 如何使用 Visual Studio 2015 和 TFS 2015 覆盖默认的无法识别的代码分析单词全局?

    c++ - 警告 C6273 : Non-integer passed as _Param_(2) when an integer is required

    c - 在 MSVC 2010 命令行中强制进行 32 位编译

    c# - Ultragrid 子行

    c# - Visual Studio 2010 Professional - 问题单元测试 Web 服务

    c# - MSBuild - 解决方案文件错误 MSB5010 : No file format header found

    c#-4.0 - 有没有 C# 4.0 的静态代码分析工具?