User Tools

Site Tools


documentation:matcher

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation:matcher [2023/09/13 18:49] – removed - external edit (Unknown date) 127.0.0.1documentation:matcher [2023/09/17 07:56] (current) nebelnidas
Line 1: Line 1:
 +====== Matcher ======
 +
 +[[https://github.com/sfPlayer1/Matcher|Matcher]] is a GUI tool to match classes, fields, methods and parameters between two JARs based on semantic similarity by performing static analysis on the two.
 +
 +
 +===== Overview =====
 +
 +Matcher present's a split panel view, with the input A jar on the left and input B jar on the right. Input A's classes are always visible, where as input B's classes are visible when not matched to any from input A.
 +
 +Class entries are color coded to represent the matched status, red denotes unmatched, amber for partially matched and green for 100% matched (including methods and fields).
 +
 +
 +===== Using Matcher =====
 +
 +==== Creating a New Project ====
 +
 +Clicking ''File'' -> ''New project'', a dialog window will appear with the following fields:
 +
 +  * Inputs A/B
 +    * Specify the two (maybe more) jars of the game, where
 +      * A is the already mapped version of the jar with an existing intermediary mapping
 +      * B is the new version with obfuscated class names that have changed.
 +  * Class path A/B
 +    * Specify all the libraries that are used by the game versions respectively.
 +  * Shared class path
 +    * Specifiy libraries used by both versions
 +  * Non-obfuscated class name pattern A/B (regex)
 +    * Supply a regular expression to fully match jar class entry names (using ''/'' instead of ''.'')
 +      * Example: With StarMade (as of ''0.201.364'') obfuscated classes are inside the ''obfuscated'' package. ''(org\/|schine\/|PolygonStatsInterface\/).*'' would match any class under the ''org'', ''schine'' and ''PolygonInterface'' packages as they are already public APIs that do not need to be matched.
 +
 +Note: If any of the jars in the input/class path is invalid, clicking creating a new project button will have no response!
 +