Tracking code patterns over multiple software versions with Herodotos
- 15 March 2010
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 169-180
- https://doi.org/10.1145/1739230.1739250
Abstract
International audienceAn important element of understanding a software code base is to identify the repetitive patterns of code it contains and how these evolve over time. Some patterns are useful to the software, and may be modularized. Others are detrimental to the software, such as patterns that represent defects. In this case, it is useful to study the occurrences of such patterns, to identify properties such as when and why they are introduced, how long they persist, and the reasons why they are corrected. To enable studying pattern occurrences over time, we propose a tool, Herodotos, that semi-automatically tracks pattern occurrences over multiple versions of a software project, independent of other changes in the source files. Guided by a user-provided configuration file, Herodotos builds various graphs showing the evolution of the pattern occurrences and computes some statistics. We have evaluated this approach on the history of a representative range of open source projects over the last three years. For each project, we track several kinds of defects that have been found by pattern matching. This tracking is done automatically in 99% of the occurrences. The results allow us to compare the evolution of the selected projects and defect kinds over timeKeywords
Funding Information
- Danish Research Council (274-08-0214)
- Agence Nationale de la Recherche (NT09 487593)
This publication has 23 references indexed in Scilit:
- Documenting and automating collateral evolutions in linux device driversPublished by Association for Computing Machinery (ACM) ,2008
- Which warnings should I fix first?Published by Association for Computing Machinery (ACM) ,2007
- ValgrindPublished by Association for Computing Machinery (ACM) ,2007
- Tracking defect warnings across versionsPublished by Association for Computing Machinery (ACM) ,2006
- Program element matching for multi-version program analysesPublished by Association for Computing Machinery (ACM) ,2006
- Thorough static analysis of device driversPublished by Association for Computing Machinery (ACM) ,2006
- DynaMinePublished by Association for Computing Machinery (ACM) ,2005
- An empirical study of code clone genealogiesPublished by Association for Computing Machinery (ACM) ,2005
- An empirical study of operating systems errorsPublished by Association for Computing Machinery (ACM) ,2001
- Enumerating longest increasing subsequences and patience sortingInformation Processing Letters, 2000