论文标题

Java字节码的基于覆盖范围的去隔板

Coverage-Based Debloating for Java Bytecode

论文作者

Soto-Valero, César, Durieux, Thomas, Harrand, Nicolas, Baudry, Benoit

论文摘要

软件膨胀是包装在应用程序中的代码,但实际上不是运行该应用程序的代码。软件膨胀的存在是安全性,性能和维护的问题。在本文中,我们介绍了一种新颖的去隔离技术,我们称其为基于覆盖范围的去覆盖率。我们实施一种单一语言的技术:Java bytecode。我们利用最先进的Java字节码覆盖工具的组合来精确捕获项目的哪些部分及其依赖项在使用特定工作负载运行时使用。然后,我们会自动删除未覆盖的零件,以生成项目的放置版本。我们成功地从94个独特的开源Java库的数据集中删除211库版本。 Debloated版本在句法上是正确的,并根据工作量保留其原始行为。我们的结果表明,可以通过基于覆盖范围的去覆盖率来删除68.3%的库的字节码和其总依赖性的20.3%。在文献中,有关软件去封闭式的文献中,我们第一次评估了将库的库在重复使用它们的客户应用程序方面的实用性。我们选择了988个客户端项目,这些项目要么直接引用其源代码中的Debloated Library,要么测试套件涵盖至少一个我们去蓝色的库中的一类。我们的结果表明,有81.5%的客户,至少一个使用该库的测试,在原始库被其Debloated版本取代时,成功编译并通过了其测试套件。

Software bloat is code that is packaged in an application but is actually not necessary to run the application. The presence of software bloat is an issue for security, for performance, and for maintenance. In this paper, we introduce a novel technique for debloating, which we call coverage-based debloating. We implement the technique for one single language: Java bytecode. We leverage a combination of state-of-the-art Java bytecode coverage tools to precisely capture what parts of a project and its dependencies are used when running with a specific workload. Then, we automatically remove the parts that are not covered, in order to generate a debloated version of the project. We succeed to debloat 211 library versions from a dataset of 94 unique open-source Java libraries. The debloated versions are syntactically correct and preserve their original behavior according to the workload. Our results indicate that 68.3% of the libraries' bytecode and 20.3% of their total dependencies can be removed through coverage-based debloating. For the first time in the literature on software debloating, we assess the utility of debloated libraries with respect to client applications that reuse them. We select 988 client projects that either have a direct reference to the debloated library in their source code or which test suite covers at least one class of the libraries that we debloat. Our results show that 81.5% of the clients, with at least one test that uses the library, successfully compile and pass their test suite when the original library is replaced by its debloated version.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源