Expressive and Scalable Program Analysis Tool Notifications


High software quality is of ever growing importance with our growing reliance on software systems. This leads to an increase in the need for software developers to design and implement software at a higher quality without compromising the timeline or budget. Program analysis tools, such as static analysis, code coverage and refactoring tools are made available to assist developers in their quest for quality, maintainable software. Program analysis tools communicate with developers using notifications that can be textual, visual or a combination of both. It is important the developers be able to understand these notifications however many suffer from two fundamental problem: they are not expressive enough to communicate the problem and they are often not scalable leaving developers to deal with what can be overwhelming numbers of notifications as they try to find the most useful and relevant ones. The goal of this research is to understand how expressive and scalable current tools are, how these traits can be increased, and how increased expressiveness and scalability affect a developer's ability to create software. For our research, we have integrated our study with an intro level Java programming course at NC State (CSC216) and also plan to conduct one-on-one sessions with students and expert developers. At the conclusion of this research, we hope to have a better understanding of how programmers with varying levels of expertise use and understand program analysis tool notifications and what can be done to alleviate any difficulties they may come across.


Brittany Johnson
Emerson Murphy-Hill
Sarah Heckman
Rahul Pandita (Senior Research Scientist, Phase Change Software)
Justin Smith (PhD student, NCSU)
Sarah Elder (PhD student, NCSU)
Denae Ford (PhD student, NCSU)
Caitlin Sadowski (Google)

Study Materials

Tools Under Investigation

The one-on-one sessions investigated FindBugs, EclEmma, and the Eclipse Java Compiler. The classroom study focused on FindBugs and EclEmma.

FindBugs 2.0
FindBugs uses textual and visual notifications to describe the potential defect and represent its location and severity. FindBugs places bug icons at the location of the defect and color to convey severity; for example, orange represents severity level ``Scary''. Mousing over and clicking the bug icon brings up textual notifications describing various aspects of the defect the defect. The current verison of FindBugs is 3.0.0.

EclEmma 2.2
EclEmma uses code highlighting to communicate code coverage. Code that executes, does not execute, and partially executes, is highlighted green, red and yellow, respectively. EclEmma typically uses text when describing branch coverage in form of ``x of y branches missed''. The text is accessed by hovering over the diamond icon. The current version of EclEmma is 2.3.2.

One-on-One Sessions

Classroom Study