如何根据FXCop警告失败TFS构建

时间:2010-08-24 08:03:33

标签: tfs continuous-integration tfs2008 fxcop

我们目前正在使用TFS 2008进行源代码控制和持续集成。

我们使用FXCop检查检查性能和安全警告。建筑师或高级开发人员在冲刺结束时或交付前运行FX Cop。

我们希望这个作为CI的一部分运行,并且如果有警告则无法构建,最好的方法是什么?

3 个答案:

答案 0 :(得分:6)

您可以查看支持在持续集成环境中使用的code analysis features within Visual Studio

答案 1 :(得分:5)

我一直在做类似的事情。尽管这个问题有点陈旧,但我希望它会对你有所帮助。

我最开始 - 通过调用FxCopCmd进行构建后事件。

就我而言,我只想要一小部分代码,一些内置规则,以及一些自定义规则(在.dll中)

我使用了一个.fxcop项目文件 - 通过GUI配置所有我想要的东西,然后在构建后的事件中将FxCopCmd指向项目文件。

在大多数情况下,它运作良好,但规则违规只是作为警告而出现的。 “将警告视为错误”选项似乎不适用于此,因此我不得不提出不同的解决方案。

最适合我的是基于我偶然发现的博客文章。

我修改了项目文件以添加两个新事件。

我有一些额外的参数和FxCop的东西,但它的要点是:

   1: <PropertyGroup>
   2:   <FxCopResults>$(ProjectDir)obj\$(Configuration)\FxCopResults.xml</FxCopResults>
   3:   <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /console /out:"$(ProjectDir)obj\$(ConfigurationName)\FxCopResults.xml"</PostBuildEvent>
   4: </PropertyGroup>
   5: <Target Name="BeforeBuild">
   6:   <Delete Files="$(FxCopResults)" ContinueOnError="true" />
   7: </Target>
   8: <Target Name="AfterBuild">
   9:   <Error Text="One or more FxCop warnings occurred." Condition="Exists('$(FxCopResults)')" />
  10: </Target>

总体流程如下:

  1. (构建过程被触发)
  2. 在构建开始之前,清除之前的FxCop结果(如果存在)。
  3. 触发预建事件
  4. (BUILD BEGINS)
  5. 触发构建后事件(运行FxCopCmd)
  6. 在构建完成后,如果有FxCop结果,则会引发错误。
  7. (构建过程完成)
  8. 现在,如果生成FxCop分析 - 例如 - 违反4规则,您的构建将产生4个警告和1个错误。

    我希望这会有所帮助。

答案 2 :(得分:3)

假设您正在构建MSBuild和常规项目/解决方案,您可以将FXCop配置为作为每个构建(客户端和服务器)的一部分运行。在项目的属性对话框中,查看“代码分析”选项卡。请注意,这可以针对调试版本和发布版本单独设置,因此您可以将它们设置为版本构建的错误,如果这样可以使开发人员的生活更轻松。

这些FXCop设置允许您将违规显示为错误而不是构建中的警告。您还希望启用TFS策略,该策略要求在签入有效之前使用一组已定义的规则运行代码分析 - 这将通过强制开发人员在签入之前修复违规行为来节省一些红色构建。

我建议把所有这些事情都打开 - 如果你的目标是达到这个级别的质量(这不是一个坏主意),那么你可以尽可能多地预先登记。