DynaMine: Finding Usage Patterns and Their Violations by Mining Software Repositories – Mining Software Specifications

by Benjamin Livshits, Thomas Zimmermann

In this chapter we propose an automatic way to extract likely error patterns by mining software revision histories. Moreover, in order to ensure that all the errors we find are relatively easy to confirm and fix, we pay particular attention in our experiments to errors that can be fixed with a one-line change. It is worth pointing out that many well-known error patterns such as memory leaks, double-free's, mismatched locks, open and close operations on operating system resources, buffer overruns, and format string errors can often be addressed with a one-line fix. Looking at incremental changes between revisions as opposed to complete snapshots of the source allows us to better focus our mining strategy and obtain more precise results. Our approach uses revision history information to infer likely error patterns. We then experimentally evaluate the patterns we extracted by checking for them dynamically.

See also: http://www.crcpress.com/product/isbn/9781439806265

Reference

Benjamin Livshits, Thomas Zimmermann. DynaMine: Finding Usage Patterns and Their Violations by Mining Software Repositories. In Mining Software Specifications: Methodologies and Applications (Mining Software Specifications), May 2011.

BibTeX Entry

@inbook{livshits-mining-2011,
    title = "DynaMine: Finding Usage Patterns and Their Violations by Mining Software Repositories",
    author = "Benjamin Livshits and Thomas Zimmermann",
    year = "2011",
    month = "May",
    booktitle = "Mining Software Specifications: Methodologies and Applications",
    chapter = "DynaMine: Finding Usage Patterns and Their Violations by Mining Software Repositories",
    editors = "David Lo and Siau-Cheng Khoo and Jiawei Han and Chao Liu",
    publisher = "CRC Press",
    ISBN = "9781439806265",
}