A Soundness and Precision Benchmark for Java Debloating Tools
Jonas Klauke, Tom Ohlmer, Stefan Schott, Serena Elisa Ponta, Wolfram Fischer, Eric Bodden

TL;DR
This paper introduces Deblometer, a benchmark for evaluating Java debloating tools' ability to balance removing unnecessary code with preserving program correctness, revealing significant soundness issues in existing tools.
Contribution
We created Deblometer, a comprehensive benchmark with ground truth for systematically assessing Java debloating tools' support for language features and their soundness and precision.
Findings
All evaluated tools remove required constructs, causing semantic changes or crashes.
Dynamic class loading causes unsoundness in all tools.
ProGuard often removes more required constructs than others.
Abstract
Modern software development reuses code by importing libraries as dependencies. Software projects typically include an average of 36 dependencies, with 80% being transitive, meaning they are dependencies of dependencies. Recent research indicates that only 24.9% of these dependencies are required at runtime, and even within those, many program constructs remain unused, adding unnecessary code to the project. This has led to the development of debloating tools that remove unnecessary dependencies and program constructs while balancing precision by eliminating unused constructs and soundness by preserving all required constructs. To systematically evaluate this trade-off, we developed Deblometer, a micro-benchmark consisting of 59 test cases designed to assess support for various Java language features in debloating tools. Each test case includes a manually curated ground truth specifying…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Security and Verification in Computing · Software Testing and Debugging Techniques
