blob: dd684ebfca9d690e32ae00e42d61cceee89d7b3c [file] [log] [blame]
Things to remember when contributing code to jdt ui:
- legal issues: all code/icons/doc etc. that is _not_ authored by the contributor should be
indicated as such. we then need PMC approval, about.html etc. Ideally, there's no third-party code in the contribution.
- all files must have appropriate copyright notices, indicating the original contributor
The triggering bug report number is good to have, for easier tracking.
- code has to adhere to jdt ui's naming convention and honor our style conventions, like compact assignments
- the contributor should write junit test cases and contribute them as well
- for new views: all 1-view specific settings should be located as close to the view as possible. Often,
the view's dropdown menu (the triangle) is the right place.
- for new views: adapters should be used, and standard jdt ui actions groups (ccp, source, refactor etc) added.
- exceptions should be handled by using JavaPlugin or ExceptionHandler classes
- general: no RuntimeExceptions or Errors should be caught in the code
- in general, code should adhere to our 'endgame' standards:
--no calls to System.out.println
--no use of internal API
--no illegal subclassing of API classes
--no unused imports [compiler opt],
--no unused private members [compiler opt],
--no ignored exceptions [compiler opt],
--no non-nls strings [compiler opt],
--no use of deprecated API [compiler opt]
--no methods with constructor name [compiler opt]
--no static references made in a non-static way [compiler opt]
--no 'methods overriden but package visible' [compiler opt]
--no hidden catch blocks [compiler opt]
--no-op assignments [compiler opt]
--no unreachable code [compiler opt]
--no unresolved imports [compiler opt]
--etc.
- all translatable strings should be externalized - also plugin.xml
(note that .properties files should include copyright notices as well)
- all actions, views, dialogs should have help context ids and register them
- key bindings should not be hard-coded (by KeyListeners) - instead, the platform mechanism should be used
- when appropriate, IJavaElements should be displays using JavaElementLabel provider. That way, they look consistent.
- all menu entries, labels in dialogs etc should have unique mnemonics
- all menu entries, toolbar tooltips, etc should use chapter capitalization
(note that it's OK to capitalize a short word if it's the last in the label)
Dumping some general Issues:
- don't submit a patch that has any warning (We have the rule that if we touch a file that has warnings, we also go and fix those, even if not created by us)
- make sure your code is formatted
- this should happen automatically if you use save actions
- example of wrong formatting: if (!<space>condition)
- however: do not format the whole file - only format the code you add or touch
- labels:
- must have mnemonic (use same if used in same button elsewhere if possible)
- never use (s) but have both forms, e.g. working set and working sets
- if only one, then show the name, e.g. delete working set 'foo'
- use single quotes when displaying a UI element
- never put UI strings into code: they must be externalized
- enable spell checking so you don't have typos like 'Dont'