Abstract
Program slicing is a static analysis technique used in debugging, compiler optimization, program parallelization, and program specialization. However, current implementations for Java are proprietary software, pay-per-use, and closed source. Most public and open-source implementations for Java are not maintained anymore or they are obsolete because they do not cover novel Java features or they do not implement advanced techniques for the treatment of objects, exceptions, and unconditional jumps. This paper presents JavaSlicer, a public and open-source tool written in Java for slicing Java programs, which supports the aforementioned features. We present its usage, architecture, and performance.
This work has been partially supported by the EU (FEDER) and the Spanish MCI/AEI under grant PID2019-104735RB-C41, by the Generalitat Valenciana under grant Prometeo/2019/098 (DeepTrust), and by TAILOR, a project funded by EU Horizon 2020 research and innovation programme under GA No 952215. Sergio Pérez was partially supported by Universitat Politècnica de València under FPI grant PAID-01-18. Carlos Galindo was partially supported by the Spanish Ministerio de Universidades under grant FPU20/03861.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Available at https://github.com/mistupv/JavaSlicer/releases.
- 2.
Measured at release 1.3.1, excluding whitespace and comments, measured with cloc.
References
Allen, M., Horwitz, S.: Slicing Java programs that throw and catch exceptions. SIGPLAN Not. 38(10), 44–54 (2003)
Galindo, C., Pérez, S., Silva, J.: Data dependencies in object-oriented programs. In: 11th Workshop on Tools for Automatic Program Analysis (2020)
Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. In: Proceedings of the ACM SIGPLAN 1988 Conference on Programming Language Design and Implementation, PLDI 1988, pp. 35–46. ACM, New York (1988). https://doi.org/10.1145/53990.53994
Kumar, S., Horwitz, S.: Better slicing of programs with jumps and switches. In: Kutsche, R.-D., Weber, H. (eds.) FASE 2002. LNCS, vol. 2306, pp. 96–112. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-45923-5_7
Walkinshaw, N., Roper, M., Wood, M.: The Java system dependence graph. In: Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation, pp. 55–64 (2003)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Galindo, C., Perez, S., Silva, J. (2022). A Program Slicer for Java (Tool Paper). In: Schlingloff, BH., Chai, M. (eds) Software Engineering and Formal Methods. SEFM 2022. Lecture Notes in Computer Science, vol 13550. Springer, Cham. https://doi.org/10.1007/978-3-031-17108-6_9
Download citation
DOI: https://doi.org/10.1007/978-3-031-17108-6_9
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-17107-9
Online ISBN: 978-3-031-17108-6
eBook Packages: Computer ScienceComputer Science (R0)