Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Change-Based Refactoring Mining

Change-Based Refactoring Mining

Mining refactorings from source code repositories has been an active research topic in the past decade. However, the state of the art infers refactorings by comparing two snapshots of a system, as such missing so-called “floss refactoring” activities. In this paper we propose a solution that identifies refactorings not on snapshots of a system but on the actual changes as they are performed in an integrated development environment. As such, we should get a more precise picture on how refactorings intersperse between other editing operations. Presented at RefTest 2013 (http://reftest2013.wordpress.com).

Javier Pérez

June 03, 2013
Tweet

More Decks by Javier Pérez

Other Decks in Research

Transcript

  1. Mining Refactorings Move Method Rename Method Extract M ethod Extract

    Superclass Inline Method Hide Delegate Inline Temp M ove Field Pull Up Method Rem ove Param eter Identify which refactorings were performed during evolution of a software system.
  2. SVNKit Change Distiller Model Logger Distiller ChEOPSJ ChangeRecorders Applications TestSelection

    ChEOPSJ: Change-Based Test Optimization
 Quinten David Soetens and Serge Demeyer
 In "Proceedings of 16th European Conference on Software Maintenance and Reengineering, CSMR 2012
 Change-Based Test Selection in the Presence of Developer Tests
 Quinten David Soetens, Serge Demeyer and Andy Zaidman
 In "Proceedings of 17th European Conference on Software Maintenance and Reengineering, CSMR 2013

  3. First Class Change Objects Changes act on Source Code (FAMIX)

    Entities (e.g. AddClassChange, AddMethodChange, etc.)
  4. Refactoring Patterns FamixClass FamixMethod FamixMethod string name name RenameMethod Refactoring

    string ≠ FamixClass FamixMethod FamixMethod string name name string ≠ From To FamixClass FamixClass ≠ FamixMethod FamixMethod string name name FamixClass FamixClass ≠ FamixMethod FamixMethod string name name MoveMethod Refactoring From To
  5. Future Directions • Implement and evaluate this approach • Use

    Groove as Graph Transformation Engine • Compare with RefFinder • Extend with more Refactoring Patterns • Industrial Case Study