You need to enable JavaScript to run this app. JavaParser如何追踪源码修改后的行号变更并构建新旧行号映射?
优惠活动
大模型
产品
解决方案
定价
更多

JavaParser如何追踪源码修改后的行号变更并构建新旧行号映射?

JavaParser 源码修改场景下的行号映射实现需求
  • 日常开发中,我正使用 JavaParser 对现有Java源码做小幅修改,当前需要解决的核心问题是精准追踪修改操作带来的行号位置变化。
  • 典型场景示例:自定义ModifierVisitor逻辑,为代码中每个while循环的方法体新增一行输出语句(待处理的源码可能包含多个循环结构)。
    待处理的原始源码内容如下:
public class X {
    public static void main(String[] args) {
        int a = 1;
        while(a < 100) {
            a *= 2;
        }
    }
}
  • 经过访问器修改后,生成的新版本源码如下:
public class X {
    public static void main(String[] args) {
        int a = 1;
        while(a < 100) {
            a *= 2;
            System.out.println("Hello, I am the new line");
        }
    }
}

核心待确认问题

JavaParser是否提供简便的实现方式或内置特性,可在上述修改前后的两个源码版本之间建立准确的行号映射?

我需要实现新行号到旧行号的映射关系(单向或双向均可),以上述示例场景,预期的映射规则如下:

新行号 -> 旧行号
  1    ->   1
  2    ->   2
  3    ->   3
  4    ->   4
  5    ->   5
  6    ->  -1(原始版本中不存在该行内容)
  7    ->   6
  8    ->   7
  9    ->   8

映射值为-1时,代表对应行是修改后新增的内容,原始版本无匹配行。


内容的提问来源于stack exchange,提问作者Markus Weninger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 18:36:06