代码之家  ›  专栏  ›  技术社区  ›  AakashM

使用VS2010 Professional进行.NET4.0静态代码分析(FxCop)

  •  8
  • AakashM  · 技术社区  · 14 年前

    我有VS2010 专业的 保险费 包括对IDE中的代码分析配置的访问),以及包含十几个项目的C#4解决方案。我想把静态代码分析作为解决方案编译的一部分。

    在SO和Google的帮助下,我发现了以下几种可能的方法:

    • 编辑间隔 .csproj 在解决方案中,将独立FxCop 10的调用作为生成后事件包含在内。优点:对于每个重新构建的项目,每次编译都会发生。缺点:必须采取额外措施,以确保新项目有此规定

    • 创建一个新项目,或标识一个现有项目,该项目总是基于其项目依赖关系而最后生成。给该项目一个生成后事件,该事件在(common)输出文件夹中的所有程序集上运行FxCop。优点:只有一个文件需要更新,未来项目不被分析的可能性更小。缺点:变幻莫测的构建依赖关系可能意味着这实际上不起作用

    • 使用任何生成后运行FxCop的外接程序或宏更新所有开发人员的VS实例。一点也不喜欢这个主意。

    我也希望FxCop作为 MSBuild 4.0 -在生成服务器上启用生成。哪个选项允许我在桌面编译和bulid服务器编译之间重用代码分析规则集?


    6 回复  |  直到 7 年前
        1
  •  7
  •   mcdon    14 年前

    为了将FxCop作为构建scip(MSBuild)的一部分进行集成,我使用来自 MSBuild.Community.Tasks . 使用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>
    
        2
  •  3
  •   Bernard    14 年前

    我用过 Hudson

    您可以配置Hudson将代码分析作为日常任务执行,甚至可以在应用程序的每次更改时执行。然后开发团队中的每个人都可以通过Hudson查看代码分析结果,以确定他们是否有任何违规行为。

        3
  •  2
  •   anton.burger    14 年前

    我已经有一段时间没有使用FxCop了,但是如果你有很多项目,我想对每个项目运行一次,而不是在最后运行一次,会很痛苦。你可以尝试(或至少从开始)类似的事情 this . 简而言之,您有一个uber项目,目标依赖于构建整个解决方案,然后运行FxCop(或单元测试等),您可以使用解决方案资源管理器中的批处理文件来调用uber项目。

    使用MSBuild目标来运行FxCop,而不是生成后的步骤,这可能会更干净、更好地与VS集成。

        4
  •  1
  •   Patrick from NDepend team    12 年前

    FxCop的另一种选择是使用工具NDepend,它允许写入 Code Rules over C# LINQ Queries (namely CQLinq) 免责声明:我是该工具的开发人员之一

    200 code rules 众所周知的 C#LINQ语法。

    规则可以验证 live in Visual Studio 在构建过程中,在 generated HTML+javascript report .

        5
  •  0
  •   Isaiah4110    10 年前

    1. “我的自定义活动”搜索根文件夹下的所有*.csproj文件。
    2. 更新所有csproj文件以添加属性“

    3. 保存csproj文件。

    4. 现在这将导致代码分析在编译时运行。

    这意味着我们可以控制何时需要运行代码分析。我们不必每次构建代码时都运行它。

    只要读到您没有premium VS,但是您可以按照相同的过程在构建期间更新csproj文件生成后事件。

        6
  •  0
  •   caveman_dick    10 年前

    我知道这是一个老问题,但我最好的选择是使用 SonarQube 用C插件做你的分析。它将FxCop作为一个分析选项来处理,并且能够进行StyleCop和ReSharper分析(使用免费的命令行运行器)并编译到一个web界面中。

    设置第一个项目确实需要一些时间,但是设置后续项目非常相似,可以由CI服务器触发。