想通过pre-commit钩子脚本将fxcop 10.0和StyleCop 4.7与TortoiseSVN 1.7.6集成

时间:2013-06-12 06:11:16

标签: svn tortoisesvn fxcop stylecop

对于FxCop与SVN的集成,

要求:每当开发人员试图检查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,因此不知道批处理脚本中的确切内容(在预提交挂钩处)

每次查找此查询时,我都会寻求适当的解决方案,我只找到了与相关的链接。

谢谢..

2 个答案:

答案 0 :(得分:1)

你不能用TortoiseSVN做到这一点。您需要在服务器上配置预提交挂钩脚本,以便它适用于每个提交,而无论用户是什么,用户都无法绕过它。

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

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

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

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

等待你的用户,服务器上占用了大量空间,以及许多可能破坏的移动部件,很多

那你做什么呢?

执行此类规则通常会在提交后通过持续集成系统进行更好的管理,该系统会检查源,编译,运行测试等,然后向团队发出关于谁破坏了构建的警报。通过这种方式,您可以让人们在等待其他人的提交完成时保持良好的节奏并且不会减慢速度。当每个人都知道整个团队会发现他们已经破坏了标准(FxCop或StyleCop返回“错误”)或整个构建(代码无法编译,或者您的自动化测试失败)时,他们将开始存在他们的提交要小心得多。

答案 1 :(得分:0)

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

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

这很简单。项目文件位于GitHub