Reducing feedback delay of software development tools via continuous analyses
by Kıvanç Muşlu, Yuriy Brun, Michael D. Ernst, David Notkin
Abstract:

During software development, the sooner a developer learns how code changes affect program analysis results, the more helpful that analysis is. Manually invoking an analysis may interrupt the developer’s workflow or cause a delay before the developer learns the implications of the change. A better approach is continuous analysis tools that always provide up-to-date results. We present Codebase Replication, a technique that eases the implementation of continuous analysis tools by converting an existing offline analysis into an IDE-integrated, continuous tool with two desirable properties: isolation and currency. Codebase Replication creates and keeps in sync a copy of the developer’s codebase. The analysis runs on the copy codebase without disturbing the developer and without being disturbed by the developer’s changes. We develop Solstice, an open-source, publicly-available Eclipse plug-in that implements Codebase Replication. Solstice has less than 2.5 milliseconds overhead for most common developer actions. We use Solstice to implement four Eclipse-integrated continuous analysis tools that convert the offline versions of FindBugs, PMD, data race detection, and unit testing. Each conversion requires on average 710 LoC and 20 hours of implementation effort. Case studies indicate that Solstice-based continuous analysis tools are intuitive and easy-to-use.

Citation:
Kıvanç Muşlu, Yuriy Brun, Michael D. Ernst, and David Notkin, Reducing feedback delay of software development tools via continuous analyses, IEEE Transactions on Software Engineering (TSE), vol. 41, no. 8, August 2015, pp. 745–763.
Related:
Extended and revised version of "Making Offline Analyses Continuous" in FSE 2013.
Bibtex:
@article{Muslu15tse,
  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/Muslu15tse.pdf}{Reducing
  feedback delay of software development tools via continuous analyses}},
  journal = {IEEE Transactions on Software Engineering (TSE)},
  venue = {TSE},
  year = {2015},
  doi = {10.1109/TSE.2015.2417161},
  volume = {41},
  number = {8},
  month = {August},
  pages = {745--763},
  issn = {0098-5589},
	
  previous = {Extended and revised version of "Making Offline Analyses
  Continuous" in FSE 2013.},
  note = {Extended and revised version of~\cite{}{Muslu13fse}.
  \href{http://dx.doi.org/10.1109/TSE.2015.2417161}{DOI:
  10.1109/TSE.2015.2417161}},

  abstract = {<p>During software development, the sooner a developer learns
  how code changes affect program analysis results, the more helpful that
  analysis is. Manually invoking an analysis may interrupt the developer’s
  workflow or cause a delay before the developer learns the implications of
  the change. A better approach is continuous analysis tools that always
  provide up-to-date results. We present Codebase Replication, a technique
  that eases the implementation of continuous analysis tools by converting an
  existing offline analysis into an IDE-integrated, continuous tool with two
  desirable properties: isolation and currency. Codebase Replication creates
  and keeps in sync a copy of the developer’s codebase. The analysis runs on
  the copy codebase without disturbing the developer and without being
  disturbed by the developer’s changes. We develop Solstice, an open-source,
  publicly-available Eclipse plug-in that implements Codebase Replication.
  Solstice has less than 2.5 milliseconds overhead for most common developer
  actions. We use Solstice to implement four Eclipse-integrated continuous
  analysis tools that convert the offline versions of FindBugs, PMD, data
  race detection, and unit testing. Each conversion requires on average 710
  LoC and 20 hours of implementation effort. Case studies indicate that
  Solstice-based continuous analysis tools are intuitive and
  easy-to-use.</p>},

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