1
是否有任何工具可以在语义级别比较.class
文件?至少我希望看到方法签名的变化(例如,我可以通过比较javap
输出得到的信息类型),而且即使在API未更改时,也会在方法本身内部改变逻辑(字节码)。该工具应该足够聪明,不会报告错误报警,例如在整个方法改变的地方,并在同一个源文件中上下移动的情况下。如何比较类文件
是否有任何工具可以在语义级别比较.class
文件?至少我希望看到方法签名的变化(例如,我可以通过比较javap
输出得到的信息类型),而且即使在API未更改时,也会在方法本身内部改变逻辑(字节码)。该工具应该足够聪明,不会报告错误报警,例如在整个方法改变的地方,并在同一个源文件中上下移动的情况下。如何比较类文件
我结束了使用下面的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
已尝试[jd-gui](http://jd.benow.ca/)?也许它可以帮助 – Nishant
通过一些shell脚本('javap -s','grep','sort','diff -u'),比较方法签名应该非常容易。 –