In struggling to fix a bug in the Through the Ages VASSAL module, I ended up building a tool that does two things:
- Prints out a module in a human-readable, searchable format.
- Indexes the module by keystroke so that you can instantly look up all the places that send/receive a given keystroke.
The tool is open-source and available at code.google.com/p/vassal-module-analyzer/
Below are the contents of the README.txt that come with the tool:
The vassal-module-analyzer project contains some tools for analyzing VASSAL modules.
Here is how to run it.
- Place your module in src/test/resources
- Edit src/test/java/com/kenstevens/vassal/VassalModuleLoaderTest.java and change FILENAME to point to your module
- Run src/test/java/com/kenstevens/vassal/PieceVisitorTest as a junit test. This will produce
a file named all_pieces.txt that displays the entire module code in a human-readable,
- Run src/test/java/com/kenstevens/vassal/FieldPairVisitorTest as a junit test. This will produce
a file named by_keys.txt that organizes all places in the code that send or listen for
a key-stroke, organized by key-stroke.
Using all_pieces.txt combined with by_keys.txt, it is possible to trace through everything that
happens when a particular event is triggered.
For example, I used this to fix a bug in the Through the Ages Module that was undercharging civil actions
when players took a Wonder card.