验证java类之间方法契约的一致性

时间:2013-09-22 02:33:27

标签: java

我们公司的一个巨大的应用程序是用它的源代码(实际上几乎所有的源代码)购买的,我们一直在努力使它适应我们的需求,修复等......很久以前有人决定这样做的方式编译项目是一件好事,就是拥有原始公司的预编译罐子,只编辑或添加我们需要的一个Override文件夹中的类,我们从一些带有原始源代码的zip文件中获取。因此,当我们编译时,我们只编译我们编辑的类,使用Classpath中的原始jar,然后使用原始jar将新的或编辑的类连接起来以创建一个新的Jar。

问题似乎是人们正在改变方法合同,编辑接口和向抽象类添加抽象方法。当我们编译时,我们不会重新编译完整的源代码,只有我们的,所以编译器只检查我们的Overrided源代码的合同一致性。 我已经开始注意到这个东西似乎正在破坏,因为旧类试图调用一个不再存在的方法,或者调用类的方法来实现实际上只是接口的部分版本的类。

我不能简单地将原始源代码加入到我们的重写源代码中,因为有些类和java文件是在构建时自动生成的,所以我可能会意外地修复一些真正没有被破坏的东西。 (我试过,这就是我知道的原因)

有没有办法自动验证各种编译罐的类之间的合同一致性?在解决了这些不确定之后,我将能够将两个源目录合并在一起并在将来避免这个问题。

1 个答案:

答案 0 :(得分:1)

为什么不编译所有内容? (你确实有源代码)这样​​你至少会得到编译错误。

我假设您没有任何测试来验证仍然有效。也许你应该开始写这些。一个好的起点是测试以前编写过的新代码。这样你就可以专注于测试正在变化的零件。