【问题标题】:How to fail TFS build based on FXCop warning如何根据 FXCop 警告使 TFS 构建失败
【发布时间】:2010-08-24 08:03:32
【问题描述】:

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

我们使用 FXCop 来检查检查性能和安全警告。架构师或高级开发人员在 sprint 结束或交付之前运行 FX Cop。

我们希望它作为 CI 的一部分运行并在出现警告时使构建失败,最好的方法是什么?

【问题讨论】:

    标签: tfs continuous-integration fxcop


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    我一直在做类似的事情。虽然这个问题有点老了,但我希望它会对你有所帮助。

    我和大多数人一样开始 - 通过创建一个调用 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. (构建开始)
    5. 构建后事件被触发(运行 FxCopCmd)
    6. Post-Build 完成后,如果有 FxCop 结果,则会引发错误。
    7. (构建过程已完成)

    现在,如果 FxCop 分析生成 - 例如 - 4 条规则违规,您的构建将生成 4 条警告和 1 条错误。

    我希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

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

      我确实建议打开所有这些功能 - 如果您的目标是达到这种质量水平(这不是一个坏主意),最好尽可能多地进行预签入。

      【讨论】:

        猜你喜欢
        • 2019-04-07
        • 2014-06-11
        • 2015-06-13
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        相关资源
        最近更新 更多