ACM Home Page
Please provide us with feedback. Feedback
JunGL: a scripting language for refactoring
Full text PdfPdf (207 KB)
Source International Conference on Software Engineering archive
Proceedings of the 28th international conference on Software engineering table of contents
Shanghai, China
SESSION: Research papers: reverse engineering & refactoring table of contents
Pages: 172 - 181  
Year of Publication: 2006
ISBN:1-59593-375-1
Authors
Mathieu Verbaere  University of Oxford, United Kingdom
Ran Ettinger  University of Oxford, United Kingdom
Oege de Moor  University of Oxford, United Kingdom
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 9,   Downloads (12 Months): 83,   Citation Count: 14
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1134285.1134311
What is a DOI?

ABSTRACT

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
3
 
4
5
6
 
7
Torbjörn Ekman and Görel Hedin. Rewritable reference attributed grammars. In Martin Odersky, editor, European Conference on Object-Oriented Programming, pages 144--169, 2004.
 
8
9
 
10
Ran Ettinger and Mathieu Verbaere. Refactoring bugs in Eclipse, IntelliJ IDEA and Visual Studio. http://progtools.comlab.ox.ac.uk/projects/refactoring/bugreports, 2005.
 
11
 
12
Martin Fowler. Refactoring home page. http://www.refactoring.com, 2005.
13
 
14
Elnar Hajiyev, Mathieu Verbaere, Oege de Moor, and Kris de Volder. Codequest with datalog. In OOPSLA Companion, 2005.
15
 
16
Neil D. Jones and Alan Mycroft. Stepwise development of operational and denotational semantics for prolog. In Symposium on Logic Programming, pages 281--288, 1984.
 
17
 
18
19
 
20
21
22
23
 
24
Yanhong Annie Liu and Scott D. Stoller. Querying complex graphs. In P. Van Hentenryck, editor, Proceedings of the 8th International Symposium on Practical Aspects of Declarative Languages, pages 16--30, 2006.
25
 
26
 
27
Tom Mens, Gabriele Taentzer, and Olga Runge. Detecting structural refactoring conflicts using critical pair analysis. Electronic Notes in Theoretical Computer Science, 127(3):113--128, 2005.
 
28
 
29
Karina Olmos and Eelco Visser. Strategies for source-to-source constant propagation. In B. Gramlich and S. Lucas, editors, Workshop on Reduction Strategies in Rewriting and Programming, volume 70 of Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, May 2002.
 
30
 
31
 
32
J. Alan Robinson and Ernest E. Sibert. LOGLISP: Motivation, design and implementation. In K. L. Clark and S. A. Tänlund, editors, Logic Programming, pages 299--313. Academic Press, 1982.
 
33
34
 
35
Don Syme. F# home page. http://research.microsoft.com/projects/ilx/fsharp.aspx, 2005.
36
 
37
38
 
39
Mark Weiser. Program slicing. IEEE Transactions on Software Engineering, 10:352--357, 1984.
40

CITED BY  14

Collaborative Colleagues:
Mathieu Verbaere: colleagues
Ran Ettinger: colleagues
Oege de Moor: colleagues