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

Shi*_*iji 5 tfs continuous-integration fxcop tfs2008

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

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

我们希望这个作为CI的一部分运行,如果有警告就失败,那么最好的方法是什么?

Row*_*haw 6

您可以查看Visual Studio中的代码分析功能,该功能支持在持续集成环境中使用.


Kev*_*ild 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>
Run Code Online (Sandbox Code Playgroud)

一般流程如下:

  1. (构建过程触发)
  2. 在构建开始之前,清除之前的FxCop结果(如果存在).
  3. 触发预建事件
  4. (建立开始)
  5. 触发构建后事件(运行FxCopCmd)
  6. 在Post-Build完成后,如果有FxCop结果,则会引发错误.
  7. (构建过程完成)

现在,如果生成FxCop分析 - 例如 - 违反4规则,则构建将生成4个警告和1个错误.

我希望这有帮助.