Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
The Java Language Specification
The Java Language Specification
Formalising Behaviour Preserving Program Transformations
ICGT '02 Proceedings of the First International Conference on Graph Transformation
Practical analysis for refactoring
Practical analysis for refactoring
Refactoring for generalization using type constraints
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Converting Java classes to use generics
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Converting java programs to use generic libraries
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Deriving refactorings for AspectJ
Proceedings of the 4th international conference on Aspect-oriented software development
Deriving refactorings for AspectJ
Proceedings of the 4th international conference on Aspect-oriented software development
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
JunGL: a scripting language for refactoring
Proceedings of the 28th international conference on Software engineering
Formal Specification and Verification of Java Refactorings
SCAM '06 Proceedings of the Sixth IEEE International Workshop on Source Code Analysis and Manipulation
Automated testing of refactoring engines
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
The jastadd extensible java compiler
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Mechanical verification of refactorings
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Modularity first: a case for mixing AOP and attribute grammars
Proceedings of the 7th international conference on Aspect-oriented software development
Development of a Modelica Compiler Using JastAdd
Electronic Notes in Theoretical Computer Science (ENTCS)
Modular name analysis for java using jastadd
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Challenge proposal: verification of refactorings
Proceedings of the 3rd workshop on Programming languages meets program verification
Practical Scope Recovery Using Bridge Parsing
Software Language Engineering
Formalising and Verifying Reference Attribute Grammars in Coq
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Stepping Stones over the Refactoring Rubicon
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
From Public to Private to Absent: Refactoring Java Programs under Constrained Accessibility
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Refactoring is not (yet) about transformation
Proceedings of the 2nd Workshop on Refactoring Tools
From behaviour preservation to behaviour modification: constraint-based mutant generation
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Specifying and implementing refactorings
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Correct refactoring of concurrent java code
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Automated selective caching for reference attribute grammars
SLE'10 Proceedings of the Third international conference on Software language engineering
A refactoring constraint language and its application to eiffel
Proceedings of the 25th European conference on Object-oriented programming
Tool-supported refactoring for JavaScript
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Differential precondition checking: A lightweight, reusable analysis for refactoring tools
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Let's make refactoring tools user-extensible!
Proceedings of the Fifth Workshop on Refactoring Tools
Scripting a refactoring with Rascal and Eclipse
Proceedings of the Fifth Workshop on Refactoring Tools
RefaFlex: safer refactorings for reflective Java programs
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Use, disuse, and misuse of automated refactorings
Proceedings of the 34th International Conference on Software Engineering
Constraint-Based refactoring with foresight
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
A language generic solution for name binding preservation in refactorings
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Comparing approaches to analyze refactoring activity on software repositories
Journal of Systems and Software
Extensible intraprocedural flow analysis at the abstract syntax tree level
Science of Computer Programming
Systematic testing of refactoring engines on real software projects
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Implementing refactorings for FOP: lessons learned and challenges ahead
Proceedings of the 5th International Workshop on Feature-Oriented Software Development
OpenRefactory/C: an infrastructure for building correct and complex C transformations
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Using refactoring techniques for visual editing of hybrid languages
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Hi-index | 0.00 |
Descriptive names are crucial to understand code. However, good names are notoriously hard to choose and manually changing a globally visible name can be a maintenance nightmare. Hence, tool support for automated renaming is an essential aid for developers and widely supported by popular development environments. This work improves on two limitations in current refactoring tools: too weak preconditions that lead to unsoundness where names do not bind to the correct declarations after renaming, and too strong preconditions that prevent renaming of certain programs. We identify two main reasons for unsoundness: complex name lookup rules make it hard to define sufficient preconditions, and new language features require additional preconditions. We alleviate both problems by presenting a novel extensible technique for creating symbolic names that are guaranteed to bind to a desired entity in a particular context by inverting lookup functions. The inverted lookup functions can then be tailored to create qualified names where otherwise a conflict would occur, allowing the refactoring to proceed and improve on the problem with too strong preconditions. We have implemented renaming for Java as an extension to the JastAdd Extensible Java Compiler and integrated it in Eclipse. We show examples for which other refactoring engines have too weak preconditions, as well as examples where our approach succeeds in renaming entities by inserting qualifications. To validate the extensibility of the approach we have implemented renaming support for Java 5 and AspectJ like inter-type declarations as modular extensions to the initial Java 1.4 refactoring engine. The renaming engine is only a few thousand lines of code including extensions and performance is on par with industrial strength refactoring tools.