2012-04-24 97 views
1

我想检查一些特定的Java类是否要提交。如果是这样,我想检查serialVersionUID是否在该特定类的源(新值和旧值)内发生更改。svn pre-commit钩子检查java源码

怎么办?任何示例PLS。

问候

+0

你问如何添加一个SVN挂钩,如何检查为serialVersionUID,或两者? – 2012-04-24 08:16:35

+0

正确的方法将涉及编译该源,然后从字节码中读取'serialVersionUID'字段。这几乎肯定是不可信的,所以如果你对代码的格式进行了假设,你也许可以使用正则表达式。请记住,如果没有Java解析器/解析器,源代码将始终可能包含一个“serialVersionUID”声明,但您不会选择该声明。 – 2012-04-24 08:18:07

+0

Greg Kopff - 既 – zmeda 2012-04-24 08:28:41

回答

2

你应该能够找到很多例子,在网络上关于建立SVN挂钩 - 这里是relevant chapter from the SVN book。向下滚动至挂钩脚本

至于检测serialVersionUID我与Andrzej Doyle有相似的看法:如果您解析源代码,可能会出现错误地检测到它的情况。但是,您的源代码可能很简单,它可以在99%的时间内运行 - 并且导致错误的后果可能不会造成太大灾难。只有你知道答案。

所以,一个非常简单的方式来检查它(假设一个Linux/UNIX /的Mac OS环境)是使用使用grep寻找“的serialVersionUID”的shell脚本。但是,我可以立即想到一种可以检测到错误肯定的方法:如果内部类声明了它,一个简单的grep会检测它是否为包含类(因为我们没有解析文件,我们没有实际的知识类结构里面)。

+0

首先,我会尝试简单的解决方案,假设没有定义内部类。我会尽快发布解决方案。谢谢 – zmeda 2012-04-24 09:04:38

0

我宁愿使用持续集成服务器就像jenkins 并创建检查东西 就业和发送电子邮件时,事情发生

:)