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'),比較方法簽名應該非常容易。 –