Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Detecting and Visualizing Refactorings from Software Archives
IWPC '05 Proceedings of the 13th International Workshop on Program Comprehension
An interactive visualization of refactorings retrieved from software archives
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Are refactorings less error-prone than other changes?
Proceedings of the 2006 international workshop on Mining software repositories
Enriching revision history with interactions
Proceedings of the 2006 international workshop on Mining software repositories
Mining refactorings in ARGOUML
Proceedings of the 2006 international workshop on Mining software repositories
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Journal of Software Maintenance and Evolution: Research and Practice
Improving change descriptions with change contexts
Proceedings of the 2008 international working conference on Mining software repositories
An experience report on scaling tools for mining software repositories using MapReduce
Proceedings of the IEEE/ACM international conference on Automated software engineering
Comparison of similarity metrics for refactoring detection
Proceedings of the 8th Working Conference on Mining Software Repositories
An empirical investigation into the role of API-level refactorings during software evolution
Proceedings of the 33rd International Conference on Software Engineering
A field study of refactoring challenges and benefits
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Hi-index | 0.00 |
In many cases it is not sufficient to perform a refactoring only at one location of a software project. For example, refactorings may have to be performed consistently to several classes in the inheritance hierarchy, e.g. subclasses or implementing classes, to preserve equal behavior.In this paper we show how to detect incomplete refactorings - which can cause long standing bugs because some of them do not cause compiler errors - by analyzing software archives. To this end we reconstruct the class inheritance hierarchies, as well as refactorings on the level of methods. Then, we relate these refactorings to the corresponding hierarchy in order to find missing refactorings and thus, errors and inconsistencies that have been introduced in a software project at some point of the history.Finally. we demonstrate our approach by case studies on two open source projects.