This is the documentation page for the replication package of the ICSE 2024 paper "PPT4J: Patch Presence Test for Java Binaries".
Note: For more details on the paper, please refer to https://dl.acm.org/doi/abs/10.1145/3597503.3639231.
Note: This website is produced using AI-generated code comments and docstrings.
framework folder contains the code of PPT4Jmisc folder contains an example of using PPT4Jmisc/src/main/java/ppt4j/Demo.java for detailed usage.scripts folder contains utility scripts, written in Pythonlib folder contains necessary jarsNote: We provide Docker images for replication. If you use Docker, you can just jump to the section "Using docker".
export JAVA_HOME=... command to make sure that maven uses the expected version of JDK.ppt4j.database.root field in framework/src/main/resources/ppt4j.properties to that location. Or you can just extract to your home directory to make the property file unaltered.Linux, x86_64(amd64).minimal(~250M download size, ~500M final usage) and complete(~13G download size, ~22G final usage).complete one provides an out-of-the-box experience (with dataset). Commands described in the next section can be executed without any further configuration.minimal one provides a minimal running environment that satisfies software requirements (without dataset). To test the dataset in minimal containers, please first run bash download.sh in the home directory, and the script will start the downloading process.docker run command.For detailed script/executable usage, please refer to the documentation below.
For a quick start, you can run python replicate_rq1.py to get the results of RQ1 in the paper.
You can also use the Python scripts inside the scripts folder for: project building and testing.
README.md and all.iml are located), run python -m scripts.<name> <args>.<name>: build, testscripts.build: wrapper of maven commands; no arg; build the Java projectsscripts.test: perform tests on the dataset. Please leave <args> empty for detailed usage of this subcommand.framework/target/classes. Packing them into a jar and use the jar will lead to unexpected behaviours, due to our implementation and the classpath mechanism in newer Java versions.