我目前尝试使用JavaParser稍微修改现有的源代码。我现在希望能够跟踪这些修改引入的行号更改。
例如,假设我们有一个ModifierVisitor
在每个 while 循环的主体中添加一行的代码(处理的代码可能包含多个循环)。处理以下代码
1 public class X {
2 public static void main(String[] args) {
3 int a = 1;
4 while(a < 100) {
5 a *= 2;
6 }
7 }
8 }
会把它变成
1 public class X {
2 public static void main(String[] args) {
3 int a = 1;
4 while(a < 100) {
5 a *= 2;
6 System.out.println("Hello, I am the new line");
7 }
8 }
9 }
问题: JavaParser 中是否有一种简单的方法/内置功能可以在这两个版本之间创建线映射?
我想有一个从新行号到旧行号的映射(反之亦然)。对于上面的示例,地图应如下所示:
New -> Old
1 -> 1
2 -> 2
3 -> 3
4 -> 4
5 -> 5
6 -> -1 (did not exist in the old version)
7 -> 6
8 -> 7
9 -> 8