Skip to content

Open-science repository containing our experiments about debloating for software diversification using DepTrim.

License

Notifications You must be signed in to change notification settings

ASSERT-KTH/deptrim-experiments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

deptrim-experiments

DOI

Open-science repository containing our experiments about automatic specialization of third-party dependencies using DepTrim.

Organization

This repository is organized as follows:

  • pipeline contains the data collection pipeline.
  • notebooks contains the R notebooks used analyze the results obtained with the pipeline.
  • dataset contains part of the dataset of third party dependencies that we filtered to select the study subjects for experiments.

Collecting the results

To run the automatic data collection pipeline, you need the following installed:

Execute the run_pipeline.sh script. This will create a directory named results with 30 subdirectories, each representing the result for a Java project. For example, for the project java-faker, the results/java-faker directory contains the following files:

├── depclean # This directory contains the results of running DepClean with the original POM.
│   ├── depclean.log # DepClean execution logs.
│   └── pom-debloated # This directory contains the results when building with `pom-debloate.xml`.
│       ├── all-dependencies # This directory contains all the JAR files of the analyzed dependencies.
│       │   ├── automaton-1.11-8.jar
│       │   ├── byte-buddy-1.9.3.jar
│       │   ├── byte-buddy-agent-1.9.3.jar
│       │   ├── commons-lang3-3.5.jar
│       │   ├── commons-validator-1.6.jar
│       │   ├── generex-1.0.2.jar
│       │   ├── guava-20.0.jar
│       │   ├── hamcrest-core-1.3.jar
│       │   ├── hamcrest-library-1.3.jar
│       │   ├── javassist-3.21.0-GA.jar
│       │   ├── junit-4.12.jar
│       │   ├── mockito-core-2.23.4.jar
│       │   ├── objenesis-2.6.jar
│       │   ├── reflections-0.9.11.jar
│       │   ├── slf4j-api-1.7.25.jar
│       │   ├── slf4j-simple-1.7.25.jar
│       │   └── snakeyaml-1.26-android.jar
│       ├── all-dependencies.log # Maven dependecies:copy-dependency logs.
│       ├── javafaker-1.0.3-SNAPSHOT.jar # Maven build JAR file of the project.
│       ├── maven.log # Maven build logs when using pom-debloated.xml.
│       └── pom-debloated.xml # The debloated POM generated by DepClean.
├── deptrim # This directory contains the results of running DepTrim.
│   ├── deptrim.log # DepTrim execution log with parameter `createSinglePomSpecialized`.
│   ├── libs-specialized # This directory contains the JAR files of all the specialized dependencies.
│   │   ├── automaton-1.11-8.jar
│   │   ├── commons-lang3-3.5.jar
│   │   ├── generex-1.0.2.jar
│   │   └── snakeyaml-1.26-android.jar
│   ├── pom-specialized # This directory contains the results when building with `pom-specialized.xml`.
│   │   ├── dependency-tree.log # Maven dependency tree.
│   │   ├── javafaker-1.0.3-SNAPSHOT.jar # Maven build JAR file of the project.
│   │   ├── maven.log # Maven build execution log when running with `pom-specialized.xml`.
│   │   └── pom-specialized.xml # The POM with all the specialized dependencies.
│   ├── pom-specialized_1_4 # This directory contains the Maven build results when using a pom file with 1 specialized dependency.
│   │   ├── dependency-tree.log
│   │   ├── javafaker-1.0.3-SNAPSHOT.jar
│   │   ├── maven.log
│   │   └── pom-specialized_1_4.xml
│   ├── pom-specialized_2_4 # This directory contains the Maven build results when using a pom file with 2 specialized dependency.
│   │   ├── dependency-tree.log
│   │   ├── javafaker-1.0.3-SNAPSHOT.jar
│   │   ├── maven.log
│   │   └── pom-specialized_2_4.xml
│   ├── pom-specialized_3_4 # This directory contains the Maven build results when using a pom file with 3 specialized dependency.
│   │   ├── dependency-tree.log
│   │   ├── javafaker-1.0.3-SNAPSHOT.jar
│   │   ├── maven.log
│   │   └── pom-specialized_3_4.xml
│   └── pom-specialized_4_4 # This directory contains the Maven build results when using a pom file with 4 specialized dependency.
│       ├── dependency-tree.log
│       ├── javafaker-1.0.3-SNAPSHOT.jar
│       ├── maven.log
│       └── pom-specialized_4_4.xml
├── deptrim.log
├── original # This directory contains the results of the original building the original project.
│   ├── all-dependencies # This directory contains all the JAR files of all the dependencies.
│   │   └── dependency
│   │       ├── automaton-1.11-8.jar
│   │       ├── byte-buddy-1.9.3.jar
│   │       ├── byte-buddy-agent-1.9.3.jar
│   │       ├── commons-beanutils-1.9.2.jar
│   │       ├── commons-collections-3.2.2.jar
│   │       ├── commons-digester-1.8.1.jar
│   │       ├── commons-lang3-3.5.jar
│   │       ├── commons-logging-1.2.jar
│   │       ├── commons-validator-1.6.jar
│   │       ├── generex-1.0.2.jar
│   │       ├── guava-20.0.jar
│   │       ├── hamcrest-core-1.3.jar
│   │       ├── hamcrest-library-1.3.jar
│   │       ├── javassist-3.21.0-GA.jar
│   │       ├── junit-4.12.jar
│   │       ├── mockito-core-2.23.4.jar
│   │       ├── objenesis-2.6.jar
│   │       ├── reflections-0.9.11.jar
│   │       ├── slf4j-api-1.7.25.jar
│   │       ├── slf4j-simple-1.7.25.jar
│   │       └── snakeyaml-1.26-android.jar
│   ├── all-dependencies.log # Maven dependecies:copy-dependency logs.
│   ├── compile-scope-dependencies # This directory contains only the `compile` scope dependencies.
│   │   └── dependency
│   │       ├── automaton-1.11-8.jar
│   │       ├── commons-lang3-3.5.jar
│   │       ├── generex-1.0.2.jar
│   │       └── snakeyaml-1.26-android.jar
│   ├── compile-scope-dependencies.log
│   ├── dependency-list.log # List of all the dependencies.
│   ├── dependency-tree.log # Dependency tree.
│   ├── javafaker-1.0.3-SNAPSHOT.jar # Artifact from the original build.
│   ├── maven.log # Maven build log.
│   └── pom-original.xml # Original POM file.

For your convenience, we provide a Dockerfile will all the necessary to run the data collection pipeline.

License

Distributed under the MIT License. See LICENSE for more information.

Funding

DepTrim is partially funded by the Wallenberg Autonomous Systems and Software Program (WASP).

Wallenberg Autonomous Systems and Software Program (WASP)

About

Open-science repository containing our experiments about debloating for software diversification using DepTrim.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published