4

我目前尝试使用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
4

0 回答 0