2013-11-15 23 views
1

是否有任何工具可以在语义级别比较.class文件?至少我希望看到方法签名的变化(例如,我可以通过比较javap输出得到的信息类型),而且即使在API未更改时,也会在方法本身内部改变逻辑(字节码)。该工具应该足够聪明,不会报告错误报警,例如在整个方法改变的地方,并在同一个源文件中上下移动的情况下。如何比较类文件

+0

已尝试[jd-gui](http://jd.benow.ca/)?也许它可以帮助 – Nishant

+1

通过一些shell脚本('javap -s','grep','sort','diff -u'),比较方法签名应该非常容易。 –

回答

2

我结束了使用下面的bash脚本(但只检查签名)。由于分类操作,目前无法使签名保持与方法本身接近,我相信它可以得到改进。

#!/usr/bin/env bash 
if [ $# -ne 2 ] 
then 
    echo "usage is $0 <class A> <class B>" 
else 
    diff <(javap -s "$1" | sort | grep -v ^$) <(javap -s "$2" | sort | grep -v ^$) 
fi