事后自动重构依赖代码

时间:2014-11-03 10:22:13

标签: java automated-refactoring

有没有办法以可以自动应用于依赖代码库的方式记录或描述Java重构?

我的公司使用两个独立的Java代码库,一个平台和一个附加组件,具体取决于平台。 (实际上,为不同的客户提供了多个附加组件。)平台和附加组件由不同的团队开发,这些团队在不同的发布周期中工作:在平台发布后的一段时间内,附加组件会更新。应用于平台的重构不会自动应用于加载项,因为平台团队甚至不会查看加载项代码。加载项团队以只读模式使用以前发布的平台代码,并且当前必须手动重新应用平台重构(例如,重命名类和方法)。

我想知道加载团队是否以及如何自动将平台重构应用于加载项,而不是在平台更新后从编译错误跳转到编译错误。

目前,Eclipse被两个团队用作IDE,但使用方法正转向IntelliJ Idea。

1 个答案:

答案 0 :(得分:0)

是的,有。你想要的是Program Transformation System (PTS)

一个好的PTS允许你将源代码的显式转换定义为一种“元程序”,如果执行它,它会达到预期的效果。举个例子,你可以 使用以下DMS(我的系统,参见bio)转换在每个数据库交互中插入日志记录调用:

   default domain Java~v7;

   rule insert_db_log_call(i: identifier, m: modifiers, b: body, p: parameters): method->method =
     " \m \i(\p) { \b } " -> " \m \i(\p) {  log(\tostring\(\i\)); { \b } } "
     if  is_db_method_call(i).

如果您仔细定义这样的元程序,并且它在您的第一个代码库上正常工作,它应该对第二个基础具有相同的效果。表达你真正想做的事情可能需要一些努力;并非所有“重构”都像“重命名为b”一样容易描述。

给出的例子非常简单;人们可以编写更复杂的元程序来实现非常复杂的效果。