Kann ich WinMerge verwenden, um * .class-Dateien zu vergleichen?

4463
RonK

Ich arbeitete mit BeyondCompareund es war in der Lage, *.classDateien zu vergleichen, indem ich es so konfiguriert habe, dass vor dem Vergleich ein Decompiler ausgeführt wird.

Gibt es so etwas dafür WinMerge? Oder ein Plug-In, das es stattdessen kann?

3

1 Antwort auf die Frage

7
Wayne Uroda

Ich habe den Tag damit verbracht, ein DLL-Plugin für Winmerge zu schreiben, um dies zu tun - es ist nicht die beste Sache der Welt, aber es erledigt die Arbeit.

Nimmt den Dateinamen, teilt ihn in Verzeichnis und Klassennamen auf und ruft dann javap für jede Klassendatei auf. Es ist leider ziemlich langsam (ich würde sagen, Javap ist schuld).

Ich habe die DLL hier eingefügt:

http://www.locusia.com/winmerge/displayclassfiles.dll

Absolut keine Lizenz, Garantie usw. Auch keine Trojaner oder Viren. Ich werde die Quelle aufräumen und irgendwo aufstellen (wahrscheinlich mit den Winmerge-Projektmitarbeitern).

Erstellen Sie ein "MergePlugins" -Verzeichnis, in dem sich Ihre Winmerge-Programmdatei befindet, und fügen Sie die DLL dort ein. Es wird automatisch für * .class-Dateien aktiviert.

Am schwierigsten war es herauszufinden, wie man javap startet. Die Windows-Programmierung ist einfach so schrecklich.

Es wäre schön, wenn winmerge die Dateien vor dem Entpacken miteinander vergleicht, um zu sehen, ob sie sich unterscheiden - das würde etwas Zeit sparen. Vielleicht kann man das irgendwie mit dem Plugin bewerkstelligen, aber wie gesagt, ich habe es so schnell wie möglich zusammen gehackt.

Oh, ich sollte erwähnen, dass du Javap auf deinem Weg brauchst.

BEARBEITEN: Quellcode ist hier: http://www.locusia.com/winmerge/unpackjavaclassfiles%20source.7z Erstellt mit Visual Studio 2005 - Angepasst vom DisplayBinaryFiles-Plugin, das mit dem Winmerge-Quellpaket verfügbar ist.

Danke - Ich habe die Benachrichtigung über diese Antwort verpasst, ich habe sie gerade gesehen. Ich schätze deine Mühe wirklich - ich werde es so bald wie möglich testen :) RonK vor 12 Jahren 0
to enable automatic diffing (upon double clicking), do this (Plugins > Automatic Unpacking) - WinMerge 2.14.0 Gary Tsui vor 10 Jahren 1
@GaryTsui danke, aber was ich meine ist, dass in der Listenansicht (zB vergleichen Sie einen ganzen Ordner mit Klassendateien) Klassendateien als anders angezeigt werden, obwohl sie beim Entpacken identisch sind. Ich denke, das kommt daher, dass sie binäre Unterschiede haben können (aufgrund einer erneuten Kompilierung usw.), jedoch haben sich die Methoden- / Feldsignaturen nicht geändert. Wenn Sie beispielsweise zwei binäre APIs vergleichen, müssen Sie jede Klasse manuell überprüfen. Wenn Sie darauf doppelklicken, werden Sie mit "die Dateien sind identisch" oder ähnlichem angezeigt, auch wenn sie in der Liste als unterschiedlich markiert wurden. Wayne Uroda vor 10 Jahren 0
großer Trick .. Sie sparen meine Nacht :) Yajli Maclo vor 8 Jahren 0