有没有一种方法可以记录或描述Java重构,使其可以自动应用于依赖的代码库?
我的公司使用两个独立的Java代码库,一个平台和一个附加组件,具体取决于平台。(实际上,多个附加组件用于不同的客户。)平台和附加组件由不同的团队在不同的发布周期中开发:附加组件在平台发布后的一段时间内进行更新。应用于平台的重构不会自动应用于附加组件,因为平台团队甚至不会查看附加组件代码。add-on团队以只读模式使用之前发布的平台代码,目前必须手动重新应用平台重构(例如,重命名类和方法)。
我想知道附加组件团队是否以及如何自动将平台重构应用于附加组件,而不是在平台更新后从编译错误跳到编译错误。
目前,两个团队都使用Eclipse作为集成开发环境,但使用正在转向IntelliJ Idea。
发布于 2014-11-25 04:41:54
是的,有。你想要的是一个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).如果您仔细定义这样的元程序,并且它在您的第一个代码库上正常工作,那么它应该在第二个代码库上具有相同的效果。表达你真正想做的事情可能需要一些努力;并不是所有的“重构”都像“将a重命名为b”那么容易描述。
给出的例子非常简单;可以编写更复杂的元程序来实现非常复杂的效果。
https://stackoverflow.com/questions/26712133
复制相似问题