2013-11-15 4 views
1

.class 파일을 의미 적 수준에서 비교할 수있는 도구가 있습니까? 적어도 메소드 서명 변경 (예 : javap 출력을 비교하여 얻을 수있는 정보)을 보길 원할뿐만 아니라 API가 변경되지 않은 경우에도 메소드 내부에서 로직 (바이트 코드) 변경이 발생합니다. 도구는 허위 경보를보고하지 않을 정도로 영리해야합니다. 같은 소스 파일 내에서 장소를 변경하고 위 또는 아래로 움직이는 전체 메소드의 경우.클래스 파일을 비교하는 방법

+0

시도 [jd-gui] (http://jd.benow.ca/)? 어쩌면 도움이 될 수도 있습니다 – Nishant

+1

쉘 스크립팅 ('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 
관련 문제