Figure 2.2: IntelliJ Renamer, Search Results for a Method Search
The IntelliJ Renamer [Renamer] is a commercial product which intends to support developers who have to do a lot of renaming, e.g. in order to make their code more communicating. It was created by IntelliJ Software which is located in Prague.
The tool focuses on finding uses and dependencies of packages, classes, methods and variables and offers the possibility of renaming. The general approach is to list the found occurrences and references of the symbol to be renamed in a comprehensive list. There each occurrence can be excluded from the renaming and the list may be exported to a text file. After checking the list the renaming is invoked for all occurrences on this list.
It allows to move packages and classes to other packages as well but no moving of variables or methods.
Another useful functionality covers the updating of software systems to changed API's named migration. The migration feature is used by specifying number of renamings of classes and packages which is processed at once for a whole project and can be repeated. As an example the migration map for the changes of the swing package structure (i.e. com.sun.java.swing.* to javax.swing.*) is supplied.
When using on the test classes the occurrences of the searched classes, variables and methods were correctly found. The renaming of classes worked as well including the changes to import and extend statements. But when moving classes to another package, the package statement was included at the end of the file which does not comply to the java specification and is a serious bug. The import statements for the moved class are generated in the right way.
Moving features are only available to classes and packages. The number of classes to be moved to a new packages is restricted to one at one time.
The Renamer offers unlimited undo. It worked in most cases but sometimes created an exception which put the system in a inconsistent state. After undoing a class move the code views did not reflect the change but had to be closed and reopened to do so.
Generally, it may be stated that the tool supports renaming in a very useful way (as its name already suggests) but has limited use elsewhere. Finding occurrences and references of symbols is the main focus of the tool, which is performed with a lot of options with high speed and correctly.
It shall also support a synchronization feature that allows it to react on changes to the source files done by external editors. I was not able to test this functionality because my trial license ended after a fortnight. Therefore I quote the web site [Renamer]:
Renamer can be used along with your favorite IDE or editor, because it automatically synchronizes with all external source code modifications you make. It also automatically saves all changes when you switch to other applications.