Skip to main content

Lund University Publications

LUND UNIVERSITY LIBRARIES

IntraJ: An On-Demand Framework for Intraprocedural Java Code Analysis

Riouak, Idriss LU orcid ; Fors, Niklas LU orcid ; Hedin, Görel LU orcid and Reichenbach, Christoph LU orcid (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:
author
; ; and
organization
publishing date
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}},
}