【问题标题】:Would like to integrate fxcop 10.0 and StyleCop 4.7 with TortoiseSVN 1.7.6 through pre-commit hook script想通过预提交挂钩脚本将 fxcop 10.0 和 StyleCop 4.7 与 TortoiseSVN 1.7.6 集成
【发布时间】:2013-06-08 03:58:20
【问题描述】:

对于与 SVN 的 FxCop 集成,

要求:每当开发人员尝试签入 SVN 中的代码时,Fxcop 应该运行并检查所有文件是否符合规则。如果不是,那么 SVN 中不应该允许文件提交。

实施: 在预提交挂钩处添加了 SVN 中的批处理脚本。 同样,我首先指出了 FxCop.exe,但它只是打开了一个 fxCop 窗口。 其次,我指出 ..\Microsoft Fxcop 10.0\FxCopCmd.exe ,但这一次在 SVN 中提交任何文件时,它会使用一些命令提示符屏幕播放,但最终它会消失,并且 SVN 旁边还允许文件签入。 第三,我指向..\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\FxCopCmd.exe,结果过程与第二次尝试相同。

对于 StyleCop 与 SVN 的集成,

要求:与 FxCop 相同

实施: 在 StyleCop 的情况下没有这样的命令 exe,所以不知道在批处理脚本中确切指向什么(在 pre-commit 挂钩处)

我寻求一个合适的解决方案,就像每次寻找这个查询一样,我只找到了不相关的链接。

谢谢..

【问题讨论】:

    标签: svn tortoisesvn fxcop stylecop


    【解决方案1】:

    大多数 StyleCop 检查是被动的(由开发人员调用或在构建环境中调用)。我还想在签入时提醒您,您的代码可以改进。

    我创建了一个项目,将 TortoiseSVN Hook mechanism 与运行控制台 StyleCop 实例相结合。

    这很简单。项目文件可在GitHub 获得

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • @Blazemonger - 问题要求 .exe 实现将 stylecop 与 TortoiseSVN 集成。在我为同一问题寻找解决方案后,我专门实施了该项目。
    • 在[codeproject.com/Articles/748836/…(代码项目)上有一篇文章来解释它是如何使用和集成的。
    【解决方案2】:

    你不能用 TortoiseSVN 做到这一点。您需要在您的服务器上配置一个预提交钩子脚本,以便它适用于每个提交,无论客户端如何,用户都无法绕过它。 p>

    这意味着您需要在 Subversion 服务器上正确安装和配置 StyleCop 和 FxCop。然后是一个预提交钩子来适当地调用它们。但要做到这一点,您需要在服务器上保存一份您的代码的工作副本,该副本保持最新,然后将事务中的更改应用到它。

    完成此操作后,您首先需要考虑这是否是满足您的要求的合适方法。 IIRC,事务在预提交阶段不会像实际提交那样“序列化”。也就是说,如果两个用户尝试同时提交,那么首先完成预提交(成功)的人将开始实际提交 - 第二个用户可能会被拒绝,因为他们现在已经过时了。

    如果您的预提交挂钩需要很长时间来处理,这可能会给您的用户带来很多挫败感——即使没有上述条件。在上述条件下,如果第二个用户的规则检查运行得比第一个用户快,则第二个用户可以先提交。

    但无论如何,对于每个传入的提交事务,您还需要一个“新”工作副本,因为您需要确保将代码的新状态与存储库中的当前状态进行比较。这意味着每次调用 pre-commit 时都会重新结帐。

    这是等待您的用户的很多,服务器上使用了大量空间,以及许多可能损坏的移动部件。

    那么你会怎么做呢?

    此类规则的执行通常在提交后通过持续集成系统进行更好的管理,该系统检查源代码、编译、运行测试等,然后提醒团队谁破坏了构建。这样,您可以让人们保持良好的步伐,而不会在他们等待其他人的提交完成时减慢他们的速度。当每个人都知道整个团队会发现他们违反了标准(FxCop 或 StyleCop 返回“错误”)或整个构建(代码无法编译,或者您的自动化测试失败)时,他们就会开始被对他们的提交更加小心。

    【讨论】:

    • 感谢您宝贵的建议和时间。
    • 感谢您宝贵的建议和时间。仅供参考,我们正在使用 Team City,所以我们可以做的是通过 Team City 测试 FxCop 和 StyleCop,然后允许在 Team City 中执行构建。意味着,构建步骤可能是首先 fxCop 然后是 StyleCop,最后执行最终代码构建。如果构建失败,那么我们可以设置电子邮件通知给特定的开发人员。但是,最重要的是,必须尝试在 Svn 中集成 FxCop 和 StyleCop。正如您所提到的,我们正在遵循所有要点,但仍然没有任何效果。如果可能,提供实现相同的指针。
    • 如果您已经在使用 TeamCity,那么您可能已经拥有了实现我在上一段中描述的内容所需的一切。完全放弃使用 Subversion 进行 FxCop 和 StyleCop 检查的想法,并专注于将其作为 TeamCity 流程的一部分。如果 Fx & Style 报告失败/违规,则构建失败,无论它是否编译干净。
    猜你喜欢
    • 2018-06-06
    • 2013-02-07
    • 2012-07-12
    • 2014-07-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2020-06-04
    相关资源
    最近更新 更多