|Title||Making offline analyses continuous|
|Publication Type||Conference Paper|
|Year of Publication||2013|
|Authors||Muşlu K\ivanç, Brun Y, Ernst MD, Notkin D|
|Conference Name||ESEC/FSE 2013: The 9th joint meeting of the European Software Engineering Conference (ESEC) and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE)|
|Date or Month Published||August|
|Conference Location||St. Petersburg, Russia|
It is beneficial for a developer to know whether a code change affects the results of some analysis. Often, the developer must explicitly run each analysis. This interrupts the developer's workflow and/or lengthens the delay between the time when the developer makes a change and when the developer learns its effects and implications. The situation is even worse for an impure analysis –- one that modifies the code on which it runs –- because such an analysis blocks the developer from working on the code.
This paper presents a novel approach to easily converting an offline analysis –- even an impure one –- into a continuous analysis that informs the developer of the implications of recent changes as quickly as possible after the change is made. Our approach copies the developer's codebase, incrementally keeps this codebase in sync with the developer's copy, and makes that copy available for offline analyses to run without disturbing the developer, and without the developer's changes disturbing the analyses.
We have implemented our approach in Solstice, an open-source, publicly-available Eclipse plug-in for implementing continuous analyses. We used Solstice to convert three offline analyses –- FindBugs, PMD, and unit testing –- into continuous ones. Each conversion required only 700 LoC (600 LoC NCSL) and took, on aver- age, 18 hours by a single developer (who was experienced in using Solstice). Solstice-based analyses experience under 3 milliseconds in runtime overhead per developer action, which is negligible in practice.
|Downloads||https://bitbucket.org/kivancmuslu/solstice/ Solstice implementation|