2013-11-15 42 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