Compilation of Commit Changes Within Java Source Code Repositories
Java applications include third-party dependencies as bytecode. To keep these applications secure, researchers have proposed tools to re-identify dependencies that contain known vulnerabilities. Yet, to allow such re-identification, one must obtain, for each vulnerability patch, the bytecode fixing the respective vulnerability at first. Such patches for dependencies are curated in databases in the form of fix-commits. But fix-commits are in source code, and automatically compiling whole Java projects to bytecode is notoriously hard, particularly for non-current versions of the code. In this paper, we thus propose JESS, an approach that largely avoids this problem by compiling solely the relevant code that was modified within a given commit. JESS reduces the code, retaining only those parts that the committed change references. To avoid name-resolution errors, JESS automatically infers stubs for references to entities that are unavailable to the compiler. A challenge is here that, to facilitate the above mentioned re-identification, JESS must seek to produce bytecode that is almost identical to the bytecode which one would obtain by a successful compilation of the full project. An evaluation on 347 GitHub projects shows that JESS is able to compile, in isolation, 72% of methods and constructors, of which 89% have bytecode equal to the original one. Furthermore, on the Project KB database of fix-commits, in which only 8% of files modified within the commits can be compiled with the provided build scripts, JESS is able to compile 73% of all files that these commits modify.
Authors
- Serena Elisa Ponta (ORCID: https://orcid.org/0000-0002-6208-4743)
- Jonas Klauke
- Stefan Schott (ORCID: https://orcid.org/0000-0002-0644-3297)
- Eric Bodden (ORCID: https://orcid.org/0000-0003-3470-3647)
- W. Fischer (ORCID: https://orcid.org/0000-0001-9668-2170)
Institutions
- Paderborn University (DE)
- Fraunhofer Institute for Mechatronic Systems Design (DE)
Publication Details
- Published
- 2024-10-06
- DOI
- https://doi.org/10.1109/icsme58944.2024.00038
- Primary Topic
- Software Engineering Research
- Type
- article
- Field-Weighted Citation Impact
- 0.00
Funders
- Deutsche Forschungsgemeinschaft