In a bug tracking system (e.g. Bugzilla), the lifetime of a bug report usually consists of a sequence of revisions to itself, referred to as bug report evolution in this paper. Each revision contains changes to one or more fields in the bug report. Such evolution information is an essential indicator of software process maturity evaluation in an organization. Understanding bug report evolution is also useful for research on mining bug repositories. However, current bug tracking systems provide limited support to retrieve bug reports from an evolutionary perspective, for example, they are only able to retrieve bug reports of which a field was changed to a certain value.
In this paper, we present a report evolution query language (REVEL) to facilitate the analysis of bug report evolution. The language is based on regular languages, and enhanced with complex matching predicates and global variables. It is capable of expressing temporal properties of bug report evolution, and therefore enables a user to easily investigate complex evolution patterns in a bug repository, which is not feasible in the current bug tracking systems. We have applied our technique to 181,213 Eclipse bug reports from 2001 to 2007. The case studies reveal that it can enable stake holders to effectively analyze how bug reports evolve with few lines of code and negligible matching overhead.