【问题标题】:Enforce custom stylecop rules for a checkin policy on TFS为 TFS 上的签入策略实施自定义 stylecop 规则
【发布时间】:2011-01-20 14:29:20
【问题描述】:

我已经安装了 StyleCop CheckIn 政策(来自here),它运行良好。不过,我已经编写了一些自定义规则,我希望将它们作为 CheckIn 策略的一部分强制执行(Visual Studio 2008、Team Explorer 2008、TFS 2005)。

当我右键单击项目并单击“StyleCop 设置”时,自定义规则在设置文件中显示良好。但是,当我添加我的 CheckIn 策略并尝试导入相同的 settings.StyleCop 文件时,我的自定义规则不会出现在编辑器窗口中。

另一个可能相关的问题是,当我从 Visual Studio 打开编辑器时,我的自定义规则出现在 StyleCop 设置编辑器中。但是,如果我通过双击 Windows 资源管理器中的设置文件打开编辑器,我的规则将无处可见。

现在谁能告诉我是否真的可以将自定义规则作为签入策略的一部分,如果可以,在添加签入策略时如何让它们出现在 StyleCop 设置编辑器窗口中。

谢谢,

尼尔

【问题讨论】:

    标签: visual-studio-2008 tfs stylecop team-explorer


    【解决方案1】:

    我在 CodePlex 上编写了一个签入策略,它支持自定义规则(已验证),可以在以下位置找到它:http://sourceanalysispolicy.codeplex.com

    【讨论】:

      【解决方案2】:

      是的,绝对有可能!

      要让它全部正常工作可能有点棘手,但了解几个关键事项应该会有很大帮助。

      第一步是让 StyleCop 使用自定义规则在开发者机器上正常工作:
      1) StyleCop 必须安装在开发者机器上
      2) 自定义规则必须安装在与 StyleCop 相同的目录中(或者,可选地,安装到子目录中)。如果它们安装在其他任何地方,那么它们不太可能正常工作,如果它们能正常工作的话。
      3) 该安装目录中的 Settings.StyleCop 文件、包含正在分析的项目的目录以及该目录之上的所有目录,必须结合起来才能启用您的自定义规则。最好通过双击项目目录中的 Settings.StyleCop 文件并确保在编辑器中启用您的规则来验证这一点。

      下一点更棘手,让 StyleCop 在构建机器上正常工作。
      这又是几乎相同的三点,但在将为签入策略运行 StyleCop 的构建机器上。所以构建机器必须安装 StyleCop,安装自定义规则,以及所有正确的 Settings.StyleCop 文件,以在构建机器上创建与开发机器上相同的整体 StyleCop 规则设置。这是最容易打破的,因为根本没有意识到构建机器必须安装 StyleCop。即使安装了 StyleCop,StyleCop 也可以通过 VS 集成(您肯定很熟悉)或 StyleCop via MSBuild integration(这不太常见,通常不太容易理解)运行。构建机通常设置为使用 MSBuild 集成,这意味着自定义规则需要安装在 %Program Files%\MSBuild\Microsoft\StyleCop\v4.3 目录中,而不是您的 %Program Files%\StyleCop 目录中可能是期待。此外,如果您修改了 %Program Files%\StyleCop 目录中的基本 Settings.StyleCop 文件,则必须将该文件复制到 %Program Files%\MSBuild\Microsoft\StyleCop\v4.3 目录中为了在构建机器上获得相同的效果。请注意,使用来自开发人员机器的经过验证的工作 Settings.StyleCop 文件进行复制/粘贴是确保构建机器具有正确设置的最佳方法。 StyleCop 对这些 XML 文件非常挑剔,最轻微的拼写错误都可能导致奇怪的行为,需要数天才能调试。请勿手动编辑。你被警告了。 8)

      所以肯定有很多方法不能让它完全正确,在你把它弄到那里之前,你会看到就像你描述的那样奇怪。幸运的是,通过记住我列出的三点以及“构建机器上的 StyleCop”和“开发机器上的 StyleCop”之间的区别,最终应该可以让这一切顺利运行。好吧,至少它一直对我有用。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-20
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 2021-05-18
        • 2017-01-08
        • 2010-11-12
        相关资源
        最近更新 更多