Making Offline Analyses Continuous
by Kıvanç Muşlu, Yuriy Brun, Michael D. Ernst, David Notkin
Abstract:

Developers use analysis tools to help write, debug, and understand software systems under development. A developer's change to the system source code may affect analysis results. Typically, to learn those effects, the developer must explicitly initiate the analysis. This may interrupt the developer's workflow and/or the delay until the developer learns the implications of the change. The situation is even worse for impure analyses --- ones that modify the code on which it runs --- because such analyses block the developer from working on the code.

This paper presents Codebase Replication, a novel approach to easily convert 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. Codebase Replication copies the developer's codebase, incrementally keeps this copy codebase in sync with the developer's codebase, makes that copy codebase available for offline analyses to run without disturbing the developer and without the developer's changes disturbing the analyses, and makes analysis results available to be presented to the developer.

We have implemented Codebase Replication in Solstice, an open-source, publicly-available Eclipse plug-in. We have used Solstice to convert three offline analyses --- FindBugs, PMD, and unit testing --- into continuous ones. Each conversion required on average 436 NCSL and took, on average, 18 hours. Solstice-based analyses experience no more than 2.5 milliseconds of runtime overhead per developer action.

Citation:
Kıvanç Muşlu, Yuriy Brun, Michael D. Ernst, and David Notkin, Making Offline Analyses Continuous, in Proceedings of the 9th Joint Meeting of the European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE), 2013, pp. 323–333.
Bibtex:
@inproceedings{Muslu13fse,
  author = {K{\i}van{\c{c}} Mu{\c{s}}lu and Yuriy Brun and Michael D.
  Ernst and David Notkin},
  title =
  {\href{http://people.cs.umass.edu/brun/pubs/pubs/Muslu13fse.pdf}{Making
  Offline Analyses Continuous}},
  booktitle = {Proceedings of the 9th Joint Meeting of the European
  Software Engineering Conference and ACM SIGSOFT Symposium on the
  Foundations of Software Engineering (ESEC/FSE)},
  venue = {ESEC/FSE},
  month = {August},
  year = {2013},
  date = {18--26},
  address = {Saint Petersburg, Russia},
  accept = {$\frac{51}{251} \approx 20\%$},
  pages = {323--333},
  note = {\href{https://doi.org/10.1145/2491411.2491460}{DOI:
  10.1145/2491411.2491460}},
  doi = {10.1145/2491411.2491460},

  abstract = {<p>Developers use analysis tools to help write, debug, and
  understand software systems under development. A developer's change
  to the system source code may affect analysis results. Typically, to
  learn those effects, the developer must explicitly initiate the
  analysis. This may interrupt the developer's workflow and/or the
  delay until the developer learns the implications of the change. The
  situation is even worse for impure analyses --- ones that modify the
  code on which it runs --- because such analyses block the developer
  from working on the code.</p>

  <p>This paper presents Codebase Replication, a novel approach to easily
  convert 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.
  Codebase Replication copies the developer's codebase, incrementally
  keeps this copy codebase in sync with the developer's codebase,
  makes that copy codebase available for offline analyses to run
  without disturbing the developer and without the developer's changes
  disturbing the analyses, and makes analysis results available to be
  presented to the developer.</p>

  <p>We have implemented Codebase Replication in Solstice, an
  open-source, publicly-available Eclipse plug-in. We have used
  Solstice to convert three offline analyses --- FindBugs, PMD, and
  unit testing --- into continuous ones. Each conversion required on
  average 436 NCSL and took, on average, 18 hours. Solstice-based
  analyses experience no more than 2.5 milliseconds of runtime
  overhead per developer action.</p>},

  fundedBy = {NSF CCF-0963757, NSF CCF-1016701},
}