Java 如何逐行比较两个文本文件并提取与另一个文件不同的两行?

Java 如何逐行比较两个文本文件并提取与另一个文件不同的两行?,java,null-check,Java,Null Check,在bug预测研究主题中,您需要将代码(bug代码)的版本(N)与版本(N+1)进行比较,即(固定代码),以获得准确的代码更改,并对这些代码更改进行规范化和匿名化,以获得bug修复模式 我尝试比较这两个文件,并使用:Java.io.LineNumberReader.getLineNumber()方法获取不同的行号 但我仍然无法找到实现以下形式的方法: (( View ) getParent (1) ). invalidate () ---> View parent = ( View )

在bug预测研究主题中,您需要将代码(bug代码)的版本(N)与版本(N+1)进行比较,即(固定代码),以获得准确的代码更改,并对这些代码更改进行规范化和匿名化,以获得bug修复模式

我尝试比较这两个文件,并使用:
Java.io.LineNumberReader.getLineNumber()方法获取不同的行号

但我仍然无法找到实现以下形式的方法:

(( View ) getParent (1) ). invalidate () ---> View parent = ( View ) getParent (1) ;
if ( parent != null ) parent . invalidate ();
之前提取的“Bug Hunk”和“Fix Hunk”应转换为:

(( T0)T1(N)).T2 () ---> T0T3 =( T0)T1(N);
if(T3 != null )T3.T2 ();
我曾考虑过使用“JAVA解析器”,但这是一条死胡同


请指教

考虑java代码中的一些随机行“((View)getParent(1)).invalidate()”,然后必须将其转换为以下形式:((T0)T1(N)).T2()-->T0T3=(T0)T1(N);如果(T3!=null)T3.T2();其中:(a)每个数字都被N替换。(b)使用数字字母(T0、T1、T2等)匿名化单词。(c)每个空白都被删除了。我不需要考虑标识符的语义,事实上,一般的方法使用JGit库解析历史更改,以找到bug修复提交,然后在所有比较从方法级别缩小到这两个比较方法中仅更改行之后,使用JAPA库解析java代码。我正在研究一种更简单的方法,读取两个java程序作为文本文件并在新文件中写入不同的行,然后根据前面提到的步骤对该输出文件进行规范化和匿名化。我们将产生该错误的最小代码称为bug hunk,将修复该错误的最小代码称为fix hunk,“然后,您必须使用一个维护作用域和符号表的java编译器,并通过编写自己的后端使其符合您的目的。”我非常感谢您的建议,但我没有那么多时间来做这样的事情