【问题标题】:svn pre-commit hook check java sourcesvn pre-commit hook 检查java源码
【发布时间】:2012-04-24 08:08:47
【问题描述】:

我想检查是否需要提交某些特定的 Java 类。如果是这样,我想检查 serialVersionUID 是否在该特定类的源内部更改(新旧值)。

怎么做?任何例子PLS。

问候

【问题讨论】:

  • 你问的是如何添加一个 SVN 钩子,如何检查 serialVersionUID,或者两者兼而有之?
  • 正确的方法是编译该源代码,然后从字节码中读取serialVersionUID 字段。这几乎肯定是不可信的,因此如果您对代码的格式做出假设,您也许可以使用正则表达式。请记住,如果没有 Java 词法分析器/解析器,源代码总是可能包含您不会选择的 serialVersionUID 声明。
  • 为什么不让 SVN 预提交挂钩自动增加 serialVersionUID?这样一来,钩子就知道 Java 语句的格式,您的开发人员就少了一件需要担心的事情。

标签: java svn triggers pre-commit-hook


【解决方案1】:

您应该能够在网上找到很多关于设置 SVN 挂钩的示例——这里是 relevant chapter from the SVN book。向下滚动到挂钩脚本

关于检测serialVersionUID,我与Andrzej Doyle 有相似的观点:如果你在解析源代码,可能会出现错误检测的情况。但是,您有问题的源代码可能足够简单,以至于 99% 的时间都可以正常工作——而且出错的后果可能不会太灾难性。只有你自己知道答案。

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

【讨论】:

  • 首先,假设没有定义内部类,我将尝试简单的解决方案。我会尽快发布解决方案。谢谢
【解决方案2】:

我宁愿使用像jenkins这样的持续集成服务器 并创建检查东西的工作 并在发生事情时发送电子邮件

:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多