我目前正在尝试用不同的(虽然相似的)替换旧的(java)测试框架。因此,由于大多数旧框架代码的出现在90%的时间内都是相同的(在认知变量名称,参数类型等意义上),替换它们非常简单,而且非常重复。
因此,我自己编写了一些正则表达式匹配(它们工作正常,它们不是这个问题的焦点)。
但是,我有相当多的不同测试文件,我已经在这一点 - 刚刚开始 - 有6个不同的匹配/替换对我想申请。
现在很明显,作为一名计算机科学家,我希望自动化这一点,而不是遍历每个文件,按Ctrl + F,粘贴匹配的正则表达式,粘贴替换正则表达式,按下替换按钮,再重复此循环5次,然后转到下一个文件。
所以,为了简单起见,我们说这些是我的正则表达式:
//matches the existing framework
OldClass (.*?) = new OldClass("string");
//replacement regex:
NewClass $1 = new NewClass("string");
//example replacement:
OldClass foo = new OldClass("string");
//becomes:
NewClass foo = new NewClass("string");
请注意,我知道我可以编写一个简单的java程序,只需浏览我的所有源代码并根据需要应用正则表达式。
我宁愿避免花那么多时间,尤其是也希望有机会将它们单独应用到每个文件中,这样我就可以重新运行测试并确保没有任何损坏 - 哪个将发生,因为并非所有旧的框架代码都可以自动替换,因为太复杂了具体案例。但是,由于我也删除了旧的导入,这将依赖于现在不再存在的导入来破坏任何仍然存在的未替换代码。
答案 0 :(得分:1)
Eclipse应该有一个简单的文件搜索选项,其中包含"替换.."底部的按钮。您可以按照通常指定要搜索的文件结尾进行搜索(可能在这种情况下,您需要* .java)。替换按钮允许您使用正则表达式替换每个搜索结果。
当然,这会一次更改您的源代码,我知道这很尴尬,但我的建议是执行一些小步骤,最大限度地缩短代码被破坏的时间。例如,如果您将类移动到具有新名称的新位置,只需先关注重命名该类(然后验证代码是否有效),只有然后专注于更改其包。 / p>
向智者说话,点击预览!
或者,考虑使用ctrl + shift + R重命名方法/变量/类。假设代码位于源文件夹下,它将自动重命名它所使用的任何位置。通常,最好使用正则表达式。但同样,您无法同时执行多项更改。虽然这可能是最好的。只需备份项目并组织在开始之前需要进行的更改。
祝你好运!