IntraJ: An On-Demand Framework for Intraprocedural Java Code Analysis
(2025) Challenges of Software Verification Symposium 2024 In International Journal on Software Tools for Technology Transfer- Abstract
- Static analysis tools play a crucial role in software development by detecting bugs and vulnerabilities. However, running these tools separately from the code editing process often causes developers to switch contexts, which can reduce productivity. Previous work has shown how Reference Attribute Grammars (RAGs) can be used for declarative implementation of competitive tooling for intraprocedural control-flow and dataflow analysis of Java source code, embodied in the tool IntraJ. In this paper, we demonstrate how IntraJ can be leveraged to provide interactive analysis results directly in the editor, similar to compile-time error detection, relying on automatic on-demand evaluation of RAGs. We discuss the architecture of IntraJ, and... (More)
- Static analysis tools play a crucial role in software development by detecting bugs and vulnerabilities. However, running these tools separately from the code editing process often causes developers to switch contexts, which can reduce productivity. Previous work has shown how Reference Attribute Grammars (RAGs) can be used for declarative implementation of competitive tooling for intraprocedural control-flow and dataflow analysis of Java source code, embodied in the tool IntraJ. In this paper, we demonstrate how IntraJ can be leveraged to provide interactive analysis results directly in the editor, similar to compile-time error detection, relying on automatic on-demand evaluation of RAGs. We discuss the architecture of IntraJ, and demonstrate how it can be integrated into the development process in three different ways: in the command line, in an editor integration based on the Language Server Protocol, and in an integration with the debugging tool CodeProber. We showcase the extensibility of IntraJ by illustrating how new client analyses and language constructs can be added to the framework through RAG specifications. Finally, we evaluate the interactive performance of IntraJ on a set of real-world Java benchmarks, demonstrating that IntraJ can provide interactive feedback to developers, achieving a response time of under 0.1 seconds for most compilation units. (Less)
Please use this url to cite or link to this publication:
https://lup.lub.lu.se/record/823ca334-4a4c-4795-966c-e84449c80757
- author
- Riouak, Idriss
LU
; Fors, Niklas LU
; Hedin, Görel LU
and Reichenbach, Christoph LU
- organization
- publishing date
- 2025
- type
- Contribution to journal
- publication status
- published
- subject
- keywords
- Static Program Analysis, Reference Attribute Grammars, Control flow analysis, Dataflow Analysis, Bug detection, Interactive bug detection and fixing
- in
- International Journal on Software Tools for Technology Transfer
- publisher
- Springer
- conference name
- Challenges of Software Verification Symposium 2024
- conference location
- Venice, Italy
- conference dates
- 2024-06-06 - 2024-06-07
- external identifiers
-
- scopus:85217187595
- ISSN
- 1433-2779
- DOI
- 10.1007/s10009-024-00771-0
- project
- Explainable Declarative Programming Analysis
- language
- English
- LU publication?
- yes
- id
- 823ca334-4a4c-4795-966c-e84449c80757
- date added to LUP
- 2024-11-29 13:33:00
- date last changed
- 2025-04-09 09:42:11
@article{823ca334-4a4c-4795-966c-e84449c80757, abstract = {{Static analysis tools play a crucial role in software development by detecting bugs and vulnerabilities. However, running these tools separately from the code editing process often causes developers to switch contexts, which can reduce productivity. Previous work has shown how Reference Attribute Grammars (RAGs) can be used for declarative implementation of competitive tooling for intraprocedural control-flow and dataflow analysis of Java source code, embodied in the tool IntraJ. In this paper, we demonstrate how IntraJ can be leveraged to provide interactive analysis results directly in the editor, similar to compile-time error detection, relying on automatic on-demand evaluation of RAGs. We discuss the architecture of IntraJ, and demonstrate how it can be integrated into the development process in three different ways: in the command line, in an editor integration based on the Language Server Protocol, and in an integration with the debugging tool CodeProber. We showcase the extensibility of IntraJ by illustrating how new client analyses and language constructs can be added to the framework through RAG specifications. Finally, we evaluate the interactive performance of IntraJ on a set of real-world Java benchmarks, demonstrating that IntraJ can provide interactive feedback to developers, achieving a response time of under 0.1 seconds for most compilation units.}}, author = {{Riouak, Idriss and Fors, Niklas and Hedin, Görel and Reichenbach, Christoph}}, issn = {{1433-2779}}, keywords = {{Static Program Analysis; Reference Attribute Grammars; Control flow analysis; Dataflow Analysis; Bug detection; Interactive bug detection and fixing}}, language = {{eng}}, publisher = {{Springer}}, series = {{International Journal on Software Tools for Technology Transfer}}, title = {{IntraJ: An On-Demand Framework for Intraprocedural Java Code Analysis}}, url = {{https://lup.lub.lu.se/search/files/201032112/intraj-sttt.pdf}}, doi = {{10.1007/s10009-024-00771-0}}, year = {{2025}}, }