Heurac: A heuristic-based tool for extracting refactoring data from open-source software versions

Refactoring is considered as a means to enhance software quality and maintainability. In pursuit of investigating trends in changes made via refactorings, this paper focuses on building a tool for detecting various refactorings performed on Java software. The tool automates the identification of refactorings as program transformations between consecutive software releases. For each release, Java source is parsed and key information about class entities is collected and saved as XML document. The XML tree representations corresponding to consecutive releases are compared according to a selected set of criteria, which define the refactorings to be identified. In doing so, our tool allows for empirical analysis of software development and aging from the perspective of refactorings transformations.