使用VS 2010 Professional执行.NET 4.0静态代码分析(FxCop)

Aak*_*shM 8 msbuild code-analysis fxcop visual-studio-2010

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

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

  • 编辑.csproj解决方案中的每个内容,以包含独立FxCop 10作为Post-build事件的调用.优点:每次编译时都会重建每个重建的项目.缺点:必须采取额外措施以确保新项目具有此指定

  • 由于项目依赖性,创建一个新项目,或识别始终最后构建的现有项目.给(仅)项目一个Post-build事件,该事件在(公共)输出文件夹中的所有程序集上运行FxCop.优点:只有一个文件需要更新,未来项目未被分析的可能性较小.缺点:构建依赖关系的变幻莫测可能意味着这实际上不起作用

  • 使用在任何构建之后运行FxCop的加载项或宏更新所有开发人员的VS实例.根本不喜欢这个想法.

还有其他选择,明显优于上述任何选项吗?我需要注意哪些警告或观察才能完成上述工作之一?

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


我已经阅读了相关但不完全相同的已有问题,包括:

mcd*_*don 7

要将FxCop集成为构建scipt(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>
Run Code Online (Sandbox Code Playgroud)