MAGPIE: your software, but more efficient!
- Python 3.5+
git clone https://github.com/bloa/magpie.git
And... that's it.
python -m pytest test
We provide two generic entry points to MAGPIE.
One dedicated to software running time optimisation, and one for automated bug fixing.
Note that for the sake of tidyness, those scripts are located in the bin
sub-folder and thus require some Python magic speach to work out-of-the-box (e.g., python -m bin.magpie_runtime
instead of python magpie_runtime.py
).
Moving them or having your own entry points at top-level is expected and will simplify usage.
python -m bin.magpie_runtime --config examples/scenario/triangle-py_runtime.txt
Usage: TODO
python -m bin.minify_patch --mode runtime --config examples/scenario/triangle-py_runtime.txt --patch "LineReplacement(('triangle.py', 'line', 31), ('triangle.py', 'line', 25)) | LineDeletion(('triangle.py', 'line', 11)) | LineDeletion(('triangle.py', 'line', 14))"
Note that the minify_patch.py
script requires knowledge of the scenario specifics.
It is written to work out-of-the-box with both "runtime" and "repair" examples, but expect having to adapt it if your write your own scenario-specific entry point.
python -m bin.magpie_repair --config examples/scenario/triangle-rb_repair.txt
Usage: TODO
python -m bin.minify_patch --mode repair --config examples/scenario/triangle-rb_repair.txt --patch "LineReplacement(('triangle.rb', 'line', 11), ('triangle.rb', 'line', 1)) | LineDeletion(('triangle.rb', 'line', 12)) | LineReplacement(('triangle.rb', 'line', 25), ('triangle.rb', 'line', 27)) | LineReplacement(('triangle.rb', 'line', 6), ('triangle.rb', 'line', 6)) | LineReplacement(('triangle.rb', 'line', 3), ('triangle.rb', 'line', 3)) | LineInsertion(('triangle.rb', '_inter_line', 25), ('triangle.rb', 'line', 29)) | LineInsertion(('triangle.rb', '_inter_line', 3), ('triangle.rb', 'line', 9)) | LineInsertion(('triangle.rb', '_inter_line', 2), ('triangle.rb', 'line', 20)) | LineReplacement(('triangle.rb', 'line', 11), ('triangle.rb', 'line', 1))"
python -m bin.magpie_bloat --config examples/scenario/triangle-py_bloat.txt
Usage: TODO
See also:
python -m examples.magpie_bloat2 --config examples/scenario/triangle-py_bloat.txt
python -m bin.minify_patch --mode bloat --config examples/scenario/triangle-py_bloat.txt --patch "LineDeletion(('triangle.py', 'line', 40)) | LineDeletion(('triangle.py', 'line', 20)) | LineDeletion(('triangle.py', 'line', 7)) | LineDeletion(('triangle.py', 'line', 9)) | LineDeletion(('triangle.py', 'line', 41)) | LineDeletion(('triangle.py', 'line', 6)) | LineDeletion(('triangle.py', 'line', 11)) | LineDeletion(('triangle.py', 'line', 11)) | LineDeletion(('triangle.py', 'line', 30)) | LineDeletion(('triangle.py', 'line', 2)) | LineDeletion(('triangle.py', 'line', 25)) | LineDeletion(('triangle.py', 'line', 15)) | LineDeletion(('triangle.py', 'line', 12)) | LineDeletion(('triangle.py', 'line', 14)) | LineDeletion(('triangle.py', 'line', 8)) | LineDeletion(('triangle.py', 'line', 3)) | LineDeletion(('triangle.py', 'line', 9)) | LineDeletion(('triangle.py', 'line', 10))"
First, download and extract Minisat 2.2.0
wget "http://minisat.se/downloads/minisat-2.2.0.tar.gz"
tar xzf minisat-2.2.0.tar.gz -C example/code
rm minisat-2.2.0.tar.gz
Then setup the MiniSAT directory with files used by MAGPIE
cp examples/code/minisat_setup/*.sh examples/code/minisat
cp examples/code/minisat_setup/Solver.cc.xml examples/code/minisat/simp
cp examples/code/minisat_setup/data examples/code/minisat
patch -d examples/code/minisat -p 1 < examples/code/minisat_setup/minisat.patch
python -m bin.magpie_config --config examples/scenario/minisat_config.txt
Usage: TODO
See also:
python -m examples.magpie_config_minisat --config examples/scenario/minisat_config-advanced.txt
python -m bin.minify_patch --mode config --config examples/scenario/minisat_config.txt --patch "ParamSetting(('minisat_simplified.params', 'rinc'), 3.8204404817425397) | ParamSetting(('minisat_simplified.params', 'rnd-seed'), 454275209) | ParamSetting(('minisat_simplified.params', 'luby'), 'False') | ParamSetting(('minisat_simplified.params', 'ccmin-mode'), 1)"
TODO
python -m examples.magpie_repair_xml_java --config examples/scenario/triangle-java_repair_srcml.txt
python -m examples.magpie_config_minisat --config examples/scenario/minisat_config_advanced.txt