The use of program dependence graphs in software engineering
ICSE '92 Proceedings of the 14th international conference on Software engineering
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
An approach for exploring code improving transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Interface Compilation: Steps Toward Compiling Program Interfaces as Languages
IEEE Transactions on Software Engineering
OPTIMIX—a tool for rewriting and optimizing programs
Handbook of graph grammars and computing by graph transformation
An annotation language for optimizing software libraries
Proceedings of the 2nd conference on Domain-specific languages
Proving correctness of compiler optimizations by temporal logic
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modern Compiler Implementation: In ML
Modern Compiler Implementation: In ML
Transforming the .NET intermediate language using path logic programming
Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming
Universal Regular Path Queries
Higher-Order and Symbolic Computation
Meta-programming with Concrete Object Syntax
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
DFA&OPT-METAFrame: A Tool Kit for Program Analysis and Optimazation
TACAs '96 Proceedings of the Second International Workshop on Tools and Algorithms for Construction and Analysis of Systems
Formalising Behaviour Preserving Program Transformations
ICGT '02 Proceedings of the First International Conference on Graph Transformation
UnQL: a query language and algebra for semistructured data based on structural recursion
The VLDB Journal — The International Journal on Very Large Data Bases
Automatically proving the correctness of compiler optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
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
Incremental execution of transformation specifications
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Untangling: a slice extraction refactoring
Proceedings of the 3rd international conference on Aspect-oriented software development
C# Precisely
Refactoring to Patterns
Jedd: a BDD-based relational extension of Java
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
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
Automated soundness proofs for dataflow analyses and transformations via local rules
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
PADL'06 Proceedings of the 8th international conference on Practical Aspects of Declarative Languages
Semantic patches considered helpful
ACM SIGOPS Operating Systems Review
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Scripting refactorings with JunGL
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Semantic patches for documenting and automating collateral evolutions in Linux device drivers
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
SmPL: A Domain-Specific Language for Specifying Collateral Evolutions in Linux Device Drivers
Electronic Notes in Theoretical Computer Science (ENTCS)
Structured co-evolution of models and web application platforms
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Fusing a Transformation Language with an Open Compiler
Electronic Notes in Theoretical Computer Science (ENTCS)
Towards easing the diagnosis of bugs in OS code
Proceedings of the 4th workshop on Programming languages and operating systems
Example-Based Program Transformation
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Test code differencing for test-driven refactoring automation
ACM SIGSOFT Software Engineering Notes
Object-oriented transformations for extracting aspects
Information and Software Technology
Addressing common crosscutting problems with Arcum
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Towards end-user adaptable model versioning: The By-Example Operation Recorder
CVSM '09 Proceedings of the 2009 ICSE Workshop on Comparison and Versioning of Software Models
FOOD: An Intermediate Model for Automated Refactoring
Proceedings of the 2006 conference on New Trends in Software Methodologies, Tools and Techniques: Proceedings of the fifth SoMeT_06
Automated module interface upgrade
Proceedings of the 8th ACM SIGPLAN workshop on ERLANG
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
Stepping Stones over the Refactoring Rubicon
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
Re-approaching the refactoring Rubicon
Proceedings of the 2nd Workshop on Refactoring Tools
Enhancing source-level programming tools with an awareness of transparent program transformations
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
An Example Is Worth a Thousand Words: Composite Operation Modeling By-Example
MODELS '09 Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems
A declarative framework for analysis and optimization
CC'07 Proceedings of the 16th international conference on Compiler construction
Graph queries through datalog optimizations
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Specifying and implementing refactorings
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Refactoring Java programs for flexible locking
Proceedings of the 33rd International Conference on Software Engineering
A refactoring constraint language and its application to eiffel
Proceedings of the 25th European conference on Object-oriented programming
Framework-Specific modeling languages with round-trip engineering
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
The SOUL tool suite for querying programs in symbiosis with Eclipse
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
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
A framework for the checking and refactoring of crosscutting concepts
ACM Transactions on Software Engineering and Methodology (TOSEM)
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
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
A compositional paradigm of automating refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Can undergraduates script their own refactorings?
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Hi-index | 0.00 |
Refactorings are behaviour-preserving program transformations, typically for improving the structure of existing code. A few of these transformations have been mechanised in interactive development environments. Many more refactorings have been proposed, and it would be desirable for programmers to script their own refactorings. Implementing such source-to-source transformations, however, is quite complex: even the most sophisticated development environments contain significant bugs in their refactoring tools.We present a domain-specific language for refactoring, named JunGL. It manipulates a graph representation of the program: all information about the program, including ASTs for its compilation units, variable binding, control flow and so on is represented in a uniform graph format. The language is a hybrid of a functional language (in the style of ML) and a logic query language (akin to Datalog). JunGL furthermore has a notion of demand-driven evaluation for constructing computed information in the graph, such as control flow edges. Borrowing from earlier work on the specification of compiler optimisations, JunGL uses so-called `path queries' to express dataflow properties.We motivate the design of JunGL via a number of non-trivial refactorings, and describe its implementation on the.NET platform.