If you would really want a feature and its not on the list below,
could you please enter it in the SourceForge database?
Here is how:
Go to the
JRefactory Project and click on the list of bugs or features.
Then press the button to submit a new request.
Thanks!!!
Also, if you really want a feature that is listed here, send
me e-mail
which feature it is. The more people who want a feature, the sooner
I'll get it done. (As it is, I'll never finish this list, so I prioritize
the feature based on the number of requests for it.). Better yet,
offer to help implement it!
Pretty Printer
- Removed duplicate import statements
- Remove import *
- A "remove imports not used" function (automatic or prompt at users choice?)
- Long loop for bug with super() and no ;
- Improve error reporting for the Parser and Pretty Printer.
- Removes CVS comments from the end of the file
- Blocks inside a method
- // single line comments move after the {
- When passing values to a function which spans more than one line, the
parameters should line up with the (
- If only a @return tag, don't include the double spaceafter the name
- Space in statements but not expressions and space after !
- Wrap long lines of code. They should be wrapped on parameter separator (","),
then on open bracket ("("), then on expressions but not inside brackets.
- Parse Error dialog - only a single one with error in a scrollable area box
- File header without the stars to the left
- Eliminate javadoc comments if it is already documented in the interface
- Combine javadoc comments from the interface with implementation details from the class method.
- Add a header only if no header comments are present
- Growing javadoc comments
- A single line // comment should be moved to the line before the code
- Indent variable declarations with the previous block
- Default comment for getAt and setAt
- If a method overloads a method from a parent class or abstract class or
implements a method in an interface insert a javadoc
comment that says that the description is in the appropriate
interface/abstract method/parent class with a @see tag.
- Only use the variable spacing for fields (not for variables in a method)
- Make array declarations line up with the rest of the declarations
- Array {} line up with the declaration but the contents of the array are indented
- Sort implemented classes
- Sort thrown exceptions
- Newline before extends
- Newline before implements
- Option to add blank line after "package"
- Option to add blank line after "import"
- Sort order for imports. Example: put "java" on top, then
javax, then other packages. This can be done in even more complicated,
but logical way if you sort packages by level matching.
- Option to add blank line after every "import" group (java,
javax, com...). Problem: some imports should be grouped by second
package level, like "com" because they import very different things.
Idea: if group contains more than "n" imports, split it on next level
recursively.
- Import sort looks bad if you already have blank lines
between imports because it keeps blank line after import example:
- Option to add space before block statements like for,
while, try, switch..., but only if they are not the first statement of
containing block. Javadoc template for indexed properties
(getSomething(int it), setSomething(int i))
- Sort order: add option to sort by final / non-final.
- Option to add blank line(s) between method/class
declaration and body.
- Templates for getters / setters / parameters: if property
name contains uppercase letters, {3} should be split into lowercase
words. Example: setHostName return "host name". In Javadoc, you'll get
"Sets host name" rather than "Sets hostName". But if there are more
than one uppercase letter, split and leave uppercase: setHostURL
becomes "host URL".
- Comments for add / remove listener methods are strange
(feature?!). Example:
- Add a removeSomething template.
Refactorings
- Rename method
- Rename inner class
- Rename local variable
- Accurately reflect whether a method can be moved
- Move method into field
- Deleting comment before extract method
- Automatically manage length of undo stack
- NEXT Browser - instead of class diagram view
- Rename package
- Move class to different package
- Move inner classes into their own file
- Allow user to set public/package for parent class
- Push up a constructor
- Include the javadoc from the original file when you do an extract
- Create stub operation. User enters a method with
arguments, highlights the method, and then selects create stub. System
generates a method with the correct signature based on the inputs and a
reasonable return (null or 0 or false).
- ConvertLocalVariableToInstanceVariable refactoring
- Change the parameters of the extract method
- Better at getting the return type when a return statement is included
- Encapsulate field (replace a public field with a private
one, add getters and setters and replace all usage of the field with
the appropriate accessor.
- Make field static / not static.
- Grey out / don't show refactorings that are not possible
in the current context.
UML Diagrams
- Add a tooltip for each class (especially when in 10% zoom
mode)
- Put a wait cursor over the structure pane when loading the
diagrams
- Scroll pane makes larger jumps for the key and class list
panels
- Develop a layout engine
- Moving a class changes the view back to 100%
- View inner classes in a diagram
- Center Loading dialog box for the metadata
- Hide methods/fields/classes to simplify the diagram
- Edit classes in the UML diagrams (change
class/method/field/arguments names + add/remove of the same + updates
of usage)
- Add class to a package (without relationship to other
classes)
- Sizing of classes in the UML diagram and more steps to the
zoom function. Also, there should be a tick showing what zoom level is
currently chosen
- The dialog box that pops up when "New UML diagram" is
chosen has a very narrow window, unsuitable for long pacakage names.
Resizing the dialog box does not help since the scrollpane does not
"follow".
- JDK summary loader not sized for linux
- When mouse is held at background, it would be nice to move
diagram with mouse.
- Add notes to the UML diagram, these are @todo, @fixme,
etc. as appropriate in the Java source file.
- Inheritance centric view of classes, all super-classes and
interfaces are shown in one diagram even if they are in different
packages.
- Scale diagram so that all classes are just visible.
- Scale diagram so that all classes are printed on one (or
N) page(s).
- Better use of colours and icons.
- Generate more conformant UML, e.g. associations created
from array variables.
- Show implementation of certain interfaces as Roles (e.g.
Serializable, Cloneable) as they are markers not real interfaces.
- Make package selector a tree view and make showing of
JDK packages optional.
IDEs
- Integrate into netbeans
- Moving/Adding/Renaming classes should update JBuilder
- JRefactory plugs into JEdit (like
JavaStyle)
- Plugin for VA4J I need
to learn answers to the following questions before JRefactory can
integrate with VA4J. Some answers are in Chapter 27.
- How can you get a list of all the classes in the repository?
- How can you get the text of a specific class?
- How can you set the text of a specific class?
- How can you get the current class that the user is editing?
- How can you get the text that the user selected?
- Access JRefactory from the structure pane of a .java file in JBuilder
- Add a new diagram to the project pane of JBuilder
- Integrate with Emacs JDE
- It would be nice if the default for the "New UML diagram"
was the package that one are currently viewing. In JBuilder, I often
want the UML diagram for the class that I am currently viewing.
- When a UML diagram is saved, it's (default) location is in
its place in the package hierarchy. Fine. But why is it not shown in
its place in the package hierarchy in the JBuilder project pane? Seems
that all UML diagrams are shown at top level.
- Menu item to edit pretty.settings
- Integrate error reporting with IDE (e.g. JEdit's ErrorList
plugin).
Other
- Better documentation of what the pretty printer does:
The pretty printer does these transformations on the source file:
- reindentation accoring to bla bla style...
- sorting of methods and data members according to these criteria
- ...
Just a brief overview of what changes the pretty printer
does to the source possibly intermixed with some examples.
- Color blind colors in about box
- Do a check for style (catching and ignoring exceptions,
correct case for fields and methods and classes, etc.
- Add embedded JSQL to the parser
- Online help
- Add the ability for a user to add a comment to the log
file to serve as a vote for future refactorings
- Add "usage search". There obviously is one implicitly
since the "Rename class" function updates all usages, but it would be
nice to simply have the results available in a list with a "Show
source" option.
Then it would be possible to have the questions "is this
class used at all?" and "where is this class used?" answered easily.
- A "find private fields/methods never used" function. Items
found could actually be removed (after prompting the user ?) Likewise,
a "Find protected/public/default fields/methods would be useful,
searching all available code. Here the user must evaluate wether the
items found can be deleted, since they may be used by others. But it
would be helpful when searching for obsolete code in larger systems.
- Break the JPG file into pages
- Export UML diagram to another UML tool's format
- Indent standards from Sun
|