Skip to main content

Lund University Publications

LUND UNIVERSITY LIBRARIES

Property Probes: Live Exploration of Source Code Analysis

Risberg Alaküla, Anton LU orcid (2024) In Licentiate theis 2024(3).
Abstract
Source code analysis is ubiquitous in the development of software tools, for example in compilers to detect compile-time errors and possible optimizations, in
IDEs to provide interactive coding assistance, and in stand-alone analysis tools to
detect bugs. There are several techniques that have been developed to help the
analysis developer, including one called Reference Attribute Grammars (RAGs).
With RAGs, the developer specifies functionality for their analysis as a set of high
level equations. The concern of how to apply the equations is abstracted away,
and handled by a RAG evaluation system. This abstraction can enable more concise and efficient implementations, but also calls for adequate debugging... (More)
Source code analysis is ubiquitous in the development of software tools, for example in compilers to detect compile-time errors and possible optimizations, in
IDEs to provide interactive coding assistance, and in stand-alone analysis tools to
detect bugs. There are several techniques that have been developed to help the
analysis developer, including one called Reference Attribute Grammars (RAGs).
With RAGs, the developer specifies functionality for their analysis as a set of high
level equations. The concern of how to apply the equations is abstracted away,
and handled by a RAG evaluation system. This abstraction can enable more concise and efficient implementations, but also calls for adequate debugging tools.
When things break down, being able to see how things execute in terms of these
abstractions helps the developer identify and fix issues.
The aim of this thesis is to provide source code analysis developers with a live,
exploratory view of the inner workings of their analyses. We are particularly interested in helping developers using the RAG formalism. In this thesis, we introduce
the concept of property probes to support this goal. Property probes enable efficient and robust interaction with computation associated with nodes on abstract
syntax trees (ASTs). The different kinds of probes, and associated algorithms for
creating and applying them, are presented in this thesis. We also present benchmarks showing that performance scales well for real-world development tasks.
We have implemented property probes in a tool called CODEPROBER. CODEPROBER has been integrated into two university courses on compilers and program
analysis, as an aid during lab assignments. We wanted to determine the use- and
user experience of the students that used it, and to this end we performed a mixedmethod user study with students from the program analysis course. The focus of
the study is a set of in-person interviews, and the overall feedback from students
has been very positive. (Less)
Please use this url to cite or link to this publication:
author
supervisor
organization
publishing date
type
Thesis
publication status
published
subject
in
Licentiate theis
volume
2024
issue
3
publisher
Department of Computer Science, Lund University
ISSN
1652-4691
ISBN
978-91-8104-221-4
978-91-8104-222-1
project
Cloud Based Language Tooling
Cloud Based Language Tooling
language
English
LU publication?
yes
id
ec884e25-67e9-4ca2-92a6-b658fab1f82e
date added to LUP
2024-10-09 11:25:16
date last changed
2024-10-30 11:15:53
@misc{ec884e25-67e9-4ca2-92a6-b658fab1f82e,
  abstract     = {{Source code analysis is ubiquitous in the development of software tools, for example in compilers to detect compile-time errors and possible optimizations, in<br/>IDEs to provide interactive coding assistance, and in stand-alone analysis tools to<br/>detect bugs. There are several techniques that have been developed to help the<br/>analysis developer, including one called Reference Attribute Grammars (RAGs).<br/>With RAGs, the developer specifies functionality for their analysis as a set of high<br/>level equations. The concern of how to apply the equations is abstracted away,<br/>and handled by a RAG evaluation system. This abstraction can enable more concise and efficient implementations, but also calls for adequate debugging tools.<br/>When things break down, being able to see how things execute in terms of these<br/>abstractions helps the developer identify and fix issues.<br/>The aim of this thesis is to provide source code analysis developers with a live,<br/>exploratory view of the inner workings of their analyses. We are particularly interested in helping developers using the RAG formalism. In this thesis, we introduce<br/>the concept of property probes to support this goal. Property probes enable efficient and robust interaction with computation associated with nodes on abstract<br/>syntax trees (ASTs). The different kinds of probes, and associated algorithms for<br/>creating and applying them, are presented in this thesis. We also present benchmarks showing that performance scales well for real-world development tasks.<br/>We have implemented property probes in a tool called CODEPROBER. CODEPROBER has been integrated into two university courses on compilers and program<br/>analysis, as an aid during lab assignments. We wanted to determine the use- and<br/>user experience of the students that used it, and to this end we performed a mixedmethod user study with students from the program analysis course. The focus of<br/>the study is a set of in-person interviews, and the overall feedback from students<br/>has been very positive.}},
  author       = {{Risberg Alaküla, Anton}},
  isbn         = {{978-91-8104-221-4}},
  issn         = {{1652-4691}},
  language     = {{eng}},
  month        = {{10}},
  note         = {{Licentiate Thesis}},
  number       = {{3}},
  publisher    = {{Department of Computer Science, Lund University}},
  series       = {{Licentiate theis}},
  title        = {{Property Probes: Live Exploration of Source Code Analysis}},
  url          = {{https://lup.lub.lu.se/search/files/197484552/licentiate_thesis_property_probes.pdf}},
  volume       = {{2024}},
  year         = {{2024}},
}