Automatic refactoring of dynamic languages
|Název práce v češtině:|
|Název v anglickém jazyce:||Automatic refactoring of dynamic languages|
|Klíčová slova:||dynamic languages, refactoring, static analysis, type inference|
|Akademický rok vypsání:||2011/2012|
|Typ práce:||diplomová práce|
|Ústav:||Katedra distribuovaných a spolehlivých systémů (32-KDSS)|
|Vedoucí / školitel:||Mgr. David Hauzar, Ph.D.|
|Zásady pro vypracování|
|Recently, as business world has moved its focus towards the Internet, a number of applications
have been moved on-line, and this trend is still continuing. According to the
CENSUS, the online retail sales in the US in 2010 reached over 160 billion US
dollars. The development of tools that would support development of safe, secure, and reliable web applications is therefore of the top priority.
Refactoring is “a technique for restructuring an existing body of code, altering its internal structure without changing its external behavior” . It is an important mean to develop readable, maintainable, reliable, and safe code. Because manual refactoring is tedious and error-prone, there is a strong need for automatic support of refactoring. While tools for automatic refactoring of statically typed programing languages such as Java and C# are mature and reliable, existing tools for automatic refactoring of most dynamic languages (e.g. these present in Netbeans and Eclipse) can introduce errors to the refactored application. The reason is that the most refactoring tools for dynamic languages are based on string matching and do not support usage of type information. The attributes and methods of an object are identified by the type of the object, hence, such an approach cannot be correct.
The goal of the thesis is to design and implement refactoring of dynamic language, preferably PHP. It should provide support for basic refactoring operations such as method renaming and field renaming. The approach should be safe and should be based on the type information. That is, the refactoring should be performed only if it does not introduce errors. If refactoring cannot be performed, the tool should mark places where it cannot infer enough information to proceed. It should be possible to supply the refactoring tool with such information manually, e.g., by code annotations.
|Seznam odborné literatury|
| Martin Fowler, http://refactoring.com
 Analýza programů a verifikace kódu (NSWI132), lecture notes
 F. Nielson, H. R. Nielson, and Chris Hankin. Principles of Program Analysis, Springer, 2005
 Biggar, P., & Gregg, D. (2009). Static analysis of dynamic scripting languages.