WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541355
L. Wasserman
{"title":"Scalable, example-based refactorings with refaster","authors":"L. Wasserman","doi":"10.1145/2541348.2541355","DOIUrl":"https://doi.org/10.1145/2541348.2541355","url":null,"abstract":"We discuss Refaster, a tool that uses normal, compilable before-and-after examples of Java code to specify a Java refactoring. Refaster has been used successfully by the Java Core Libraries Team at Google to perform a wide variety of refactorings across Google's massive Java codebase. Our main contribution is that a large class of useful refactorings can be expressed in pure Java, without a specialized DSL, while keeping the tool easily accessible to average Java developers.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123385530","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541353
Niklas Fors, G. Hedin
{"title":"Using refactoring techniques for visual editing of hybrid languages","authors":"Niklas Fors, G. Hedin","doi":"10.1145/2541348.2541353","DOIUrl":"https://doi.org/10.1145/2541348.2541353","url":null,"abstract":"In this paper we describe how techniques for refactoring can be used for visual editing of hybrid languages, that is, languages that have both a visual and a textual syntax. Textual languages have name rules that define how name uses are bound to name declarations. These bindings often correspond to connections in the visual language, and need to be taken into account in order to implement the visual edit operations correctly. We use inverse lookup functions, originally devised for renaming, for implementing visual editing operations for hybrid languages.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114721762","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541354
F. Steimann
{"title":"Befactoring: preserving non-functional properties under behavioural change","authors":"F. Steimann","doi":"10.1145/2541348.2541354","DOIUrl":"https://doi.org/10.1145/2541348.2541354","url":null,"abstract":"We define befactoring as the converse of refactoring, and discuss some issues concerning befactoring tool support as well as how both refactoring and befactoring are comprised under the more general notion of a controlled change.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124145182","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541356
Dominic A. Orchard, A. Rice
{"title":"Upgrading fortran source code using automatic refactoring","authors":"Dominic A. Orchard, A. Rice","doi":"10.1145/2541348.2541356","DOIUrl":"https://doi.org/10.1145/2541348.2541356","url":null,"abstract":"Many of the computer models used in scientific research have been developed in Fortran over many years. This evolutionary process means these models often use deprecated language features and idioms that impede software maintenance, understandability, extension, and verification. To mitigate this, we built CamFort, an open-source automatic refactoring tool for upgrading Fortran source code. We describe functionality in CamFort for removing equivalence statements and common blocks, and for introducing structured data types, and give examples of how these transformations can benefit codebase robustness.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121037099","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541351
Jongwook Kim, D. Batory, Danny Dig
{"title":"Can undergraduates script their own refactorings?","authors":"Jongwook Kim, D. Batory, Danny Dig","doi":"10.1145/2541348.2541351","DOIUrl":"https://doi.org/10.1145/2541348.2541351","url":null,"abstract":"We present a status report on a project to build a refactoring engine whose primary goal is to allow undergraduate students to write classical and neo-classical refactorings (pull-up, class partitioning) and design patterns (visitor, framework) as parameterized refactoring scripts in Java. We explain the first step of our work that creates a reflection-like interface to expose the structure of an Eclipse JDT application as Java objects; methods of these objects are refactorings. Doing so hides the complexity of JDT refactoring code and tools, so that refactoring scripts can be written as compact Java methods. We present preliminary performance results of scripting JDT refactorings and sketch the next steps of our work.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128747553","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541350
Philip Mayer, Andreas Schroeder
{"title":"Towards automated cross-language refactorings between Java and DSLs used by Java frameworks","authors":"Philip Mayer, Andreas Schroeder","doi":"10.1145/2541348.2541350","DOIUrl":"https://doi.org/10.1145/2541348.2541350","url":null,"abstract":"Today, software applications are usually not written in just one programming language. In many cases, a general-purpose language such as Java is combined with multiple domain-specific languages (DSLs) for diverse purposes such as system configuration, UI description, or database querying. The artifacts defined in those different languages reference each other, often by name; in most cases these references are essential for the functionality of the overall system. This introduces problems if an artifact is refactored in any single language, since most current refactoring tools are not aware of language-external uses of the artifact. What is therefore needed is extended refactoring support across language boundaries. In this work, we explore the area of cross-language linking and refactoring, and present an approach and tool which we evaluate in a systematic fashion using automated renaming and unit testing on an open-source case study.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124512540","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541349
M. Hafiz, J. Overbey, Farnaz Behrang, Jillian Hall
{"title":"OpenRefactory/C: an infrastructure for building correct and complex C transformations","authors":"M. Hafiz, J. Overbey, Farnaz Behrang, Jillian Hall","doi":"10.1145/2541348.2541349","DOIUrl":"https://doi.org/10.1145/2541348.2541349","url":null,"abstract":"OpenRefactory/C is a refactoring tool and, more generally, an infrastructure that resolves the challenges of building C program transformations. In this paper, we describe its architecture, extensibility features, and the transformations implemented. We also discuss features that will make OpenRefactory/C attractive to researchers interested in collaborating to build new C program analyses and transformations.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131053831","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541352
Norihiro Yoshida, Eunjong Choi, Katsuro Inoue
{"title":"Active support for clone refactoring: a perspective","authors":"Norihiro Yoshida, Eunjong Choi, Katsuro Inoue","doi":"10.1145/2541348.2541352","DOIUrl":"https://doi.org/10.1145/2541348.2541352","url":null,"abstract":"Clone refactoring (merging duplicate code) is a promising solution to improve the maintainability of source code. In this position paper, we discuss directions towards the advancement of clone refactoring, and show a perspective of active support based on online analysis of code modification on an editor of IDE.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125155101","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
WRT '13Pub Date : 2013-10-27DOI: 10.1145/2541348.2541357
G. Pinto, F. Kamei
{"title":"What programmers say about refactoring tools?: an empirical investigation of stack overflow","authors":"G. Pinto, F. Kamei","doi":"10.1145/2541348.2541357","DOIUrl":"https://doi.org/10.1145/2541348.2541357","url":null,"abstract":"Programmers often use forums, such as StackOverflow, to easily and quickly solve their issues. Researchers then investigate those questions to better understand the state-of-use of software engineering techniques. Also, due to the quality and the great number questions and answers, the results found using such method might be difficult, or even impossible, to find using common survey techniques. In this study, we conducted a qualitative and quantitative research in order to categorize questions about refactoring tools. As a result, we presented a comprehensive classification of flaws and desirable features in refactoring tools. We also reported that programmers do not often rely on refactoring tools, but, at the same time, they are desiring number of unimplemented features.","PeriodicalId":131474,"journal":{"name":"WRT '13","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126631825","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}