TL;DR: Tidier is a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient, and a set of refactorings which are general enough to be applied to the source code of programs written in Haskell or Clean and possibly even in non-functional languages.
Abstract: This paper describes the design goals and current status of tidier, a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient. In contrast to other refactoring tools, tidier is completely automatic and is not tied to any particular editor or IDE. Instead, tidier comes with a suite of code transformations that can be selected by its user via command-line options and applied in bulk on a set of modules or entire applications using a simple command. Alternatively, users can use tidier's GUI to inspect one by one the transformations that will be performed on their code and manually select only those that they fancy. We have used tidier to clean up various applications of Erlang/OTP and have tested it on many open source Erlang code bases of significant size. We briefly report our experiences and show opportunities for tidier's current set of transformations on existing Erlang code out there. As a by-product, our paper also documents what we believe are good coding practices in Erlang. Last but not least, our paper describes in detail the automatic code cleanup methodology we advocate and a set of refactorings which are general enough to be applied, as is or with only small modifications, to the source code of programs written in Haskell or Clean and possibly even in non-functional languages.
TL;DR: Opportunities for automatically modernizing Erlang applications, cleaning them up, eliminating certain bad smells from their code and occasionally also improving their performance are described.
Abstract: This paper describes opportunities for automatically modernizing Erlang applications, cleaning them up, eliminating certain bad smells from their code and occasionally also improving their performance. In addition, we present concrete examples of code improvements and our experiences from using a software tool with these capabilities, tidier, on Erlang code bases of significant size.
TL;DR: A key contribution is the first framework for effective refinement-based handling of object-oriented data structures; pervasive use of such data structures thwarts the effectiveness of most existing analyses and tools.
Abstract: Refinement-Based Program Analysis Tools by Manu Sridharan Doctor of Philosophy in Computer Science University of California, Berkeley Professor Rastislav Bodik, Chair Program analysis tools are starting to change how software is developed. Verifiers can now eliminate certain complex bugs in large code bases, and automatic refactoring tools can greatly simplify code cleanup. Nevertheless, writing robust large-scale software remains a challenge, as greater use of component frameworks complicates debugging and program understanding. Developers need more powerful programming tools to combat this complexity and produce reliable code. This dissertation presents two techniques for more powerful debugging and program understanding tools based on refinement. In general, refinement-based techniques aim to discover interesting properties of a large program by only reasoning about the most important parts of the program (typically a small amount of code) precisely, abstracting away the behavior of much of the program. Our key contribution is the first framework for effective refinement-based handling of object-oriented data structures; pervasive use of such data structures thwarts the effectiveness of most existing analyses and tools. Our two refinement-based techniques significantly advance the state-of-the-art in program analyses and tools for object-oriented languages. The first technique is a refinement-based points-to analysis that can compute precise answers in interactive
TL;DR: Tidier is a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient, and a set of refactorings which are general enough to be applied to the source code of programs written in Haskell or Clean and possibly even in non-functional languages.
Abstract: This thesis describes the design goals and current status of tidier, a software tool that tidies Erlang source code, making it cleaner, simpler, and often also more efficient. In contrast to other refactoring tools, tidier is completely automatic and is not tied to any particular editor or IDE. Instead, tidier comes with a suite of code transformations that can be selected by its user via command-line options and applied in bulk on a set of modules or entire applications using a simple command. Alternatively, users can use tidier’s GUI to inspect one by one the transformations that will be performed on their code and manually select only those that they fancy. We have used tidier to clean up various applications of Erlang/OTP and have tested it on many open source Erlang code bases of significant size. We report our experiences and show opportunities for tidier’s current set of transformations on existing Erlang code out there. As a by-product, this thesis also documents what we believe are good coding practices in Erlang. Last but not least, we describe in detail the automatic code cleanup methodology we advocate and a set of refactorings which are general enough to be applied, as is or with only small modifications, to the source code of programs written in Haskell or Clean and possibly even in non-functional languages.
TL;DR: Refactoring is a disciplined and controlled technique for improving the software code by changing the internal structure of code without affecting the functionalities.
Abstract: There is a constant need for practical, efficient, and cost effective software evaluation techniques. As the application code becomes older & older, maintaining it becomes a challenge for the enterprises due to increased cost of any further change in it. Refactoring is a technique to keep the code cleaner, simpler, extendable, reusable and maintainable. Code Clean Up Refactoring includes code refactoring to achieve removal of unused code and classes, renaming of classes methods and variables which are misleading or confusing. Code Standard Refactoring includes code refactoring to achieve the quality code. Developers should regularly refactor the code as per the Standard code lines. Refactoring leads to constant improvement in software quality while providing reusable, modular and service oriented components. It is a disciplined and controlled technique for improving the software code by changing the internal structure of code without affecting the functionalities. Code is not easily maintainable, extending/adding new features in the application are not possible or very expensive, Application is using older version of software’s instead of using latest version and hence new features can’t be used and explored in the application.