Research

$ cat research.txt

Research conducted at Lund University, SDE group (2019–2024)

-rw-r–r– idriss 2024 efficient-demand-evaluation.md SLE 2024 Distinguished Paper

Efficient Demand Evaluation of Fixed-Point Attributes

Software analysis tools are everywhere—from your favorite IDE to the powerful linters running in the background of production environments. One of the driving forces behind these tools is static analysis, the technique of examining code without executing it.

In our latest research (Efficient Demand Evaluation of Fixed-Point Attributes Using Static Analysis), my co-authors and I tackled an interesting problem: how to make certain kinds of attribute grammars more efficient.

Reference Attribute Grammars (RAGs) are a powerful formalism used to specify dependencies in code. While historically aimed at compilers, RAGs are now applied to a variety of program analysis problems, including detecting things like dead code and null-pointer dereferences.

Our algorithm improves upon older methods by statically identifying attributes that can never be part of a cycle and treating them more efficiently. This leads to significant performance boosts — up to 22x faster in some cases!

We implemented this in JastAdd, a metaprogramming system for RAGs, optimizing evaluations across real-world case studies including null-pointer dereference analysis and dead-assignment analysis.

PDF

-rw-r–r– idriss 2022 jfeature.md SCAM 2022

JFeature: Exploring Java 8 Features with Static Analysis

Our initial goal was to evaluate the precision of IntraJ on Java projects from the well-known DaCapo Benchmark Suite. After diving in, I quickly realized none of the DaCapo projects are written in Java 8.

The majority of corpora commonly used in static analysis don’t include Java 8 projects either — a significant gap, especially considering features like Lambda Expressions, Intersection Casts, Default Methods, and Method/Constructor References.

That gap in the research presented a great opportunity. I began working on JFeature — a tool to identify and analyze projects that extensively use Java 8 features.

JFeature results

-rw-r–r– idriss 2021 intraj.md SCAM 2021

IntraJ: A Precise Framework for Source-Level Control-Flow Analysis

IntraJ logo

IntraJ is an application of the language independent framework IntraCFG for the Java language, built as an extension of the ExtendJ Java Compiler.

A Precise Framework for Source-Level Control-Flow Analysis, Idriss Riouak, Christoph Reichenbach, Görel Hedin, and Niklas Fors — IEEE-SCAM 2021.

With IntraJ you can:

  • Construct intra-procedural Control Flow Graphs
  • Detect dead assignments in your codebase (DAA)
  • Detect occurrences of NullPointerException (NPA)

GitHub

-rw-r–r– idriss 2019 will-it-blend.md Project

Will it Blend? Composable Source Code Analysis

In collaboration with: Khashayar Etemadi, Deepika Tiwari, Mohammad Reza, Momina Rizwan, and Matthías Páll Gissurarson.

In the beginning, there were command line tools. Each was beautifully designed and served a single function. But mankind grew vain and wrote ever more complex editors, with grand interfaces and rich graphics. They could not agree — some wanted LISP, others shouted for JavaScript. And thus, the editor wars began.

In this paper, we describe an interface and units for that interface which abstract common GUI editor operations into simple, one-feature-per-unit command line programs, and peace in our time.

PDF YouTube GitHub