Tips, Tricks & Tools every Eclipse User should know
May 10, 2015
Tips, Tricks & Toolsevery Eclipse User should know
• Project Lead of Eclipse Code Recommenders• Eclipse Commi7er since 2010• Plug-‐in Developer for 10 years (Eclipse 2.1)• Eclipse 4 and OSGI Trainer• Co-‐Lead of Java User Group Darmstadt• Speaker at JUGs, EclipseCon, JavaOne...• PhD in Computer Science• CEO of Codetrails
• Passion to improve developers day-‐to-‐day work with intelligent and prac8cal tools -‐ mostly using Data Mining on Big (So?ware Engineering) Data.
@MarcelBruch +MarcelBruch
About me
supported by
About us
The Knowledge Transfer Company
Disclaimer ;-‐)
Not all tools I’m talking about today are free or open source.
I assume all a7endees are familiar with (i) refactorings in Eclipse, (ii) generaXng ge7ers/se7er, hashCode, equals++ with Eclipse, and (iii) you daily use keyboard shortcuts.
No refactorings and (almost) no shortcuts today!
If you don’t know your keyboard shortcuts...
No Mouse! #dcr13
⌘3
Quick Access – ⌘3
WHAT’S NEW IN ECLIPSE KEPLER?
Eclipse Kepler by Numbers
(c) Holger Voormann <[email protected]>
New and Noteworthy
• Pla[orm performance improvements
• Pla[orm builds with Eclipse CBI
• IniXal GTK+ 3 support
• Eclipse Orion 3.0
• Eclipse Jubula support for tesXng mobile devices
• Install remedia.on
• EGit 3.0
• Mylyn Reviews
• JDT (usability) improvements
REMEDIATION SUPPORT IN ECLIPSE
Installing new features can be painful...
Not (that much) with Eclipse’s new Install RemediaJon Feature!
UPDATING FROM ECLIPSE 3.X -‐-‐> 4.XOMG, I don’t want to reinstall all my plugins again...
Install soQware items from exisJng installaJon...
Select which features to import...
Want to prepare a company wide install file?
Export soQware items w/ update sites
EGIT/JGIT 3.0
Git in Eclipse -‐ EGit 3.0
Rename DetecJon
Reset Repository to Expression
Clean Repository
Commit and Push (at once)
GERRIT & MYLYN REVIEWS
Four eyes can see more than two...
Gerrit at Eclipse
Reviewing Changes with Gerrit
Gerrit Workflow
Gerrit Hudson
Git
3. Build2. Pull
4. Verified
6. Push
7. Pull
1. Push
5. Approve
HOW IS MYLYN REVIEWS GOING TO CHANGE THIS?
1. Push and Pull to Gerrit from your IDE
Feature in EGit
2. Review changes in your IDE
3. Submit the approved change
4. Get noJficaJons about new change-‐sets
Mylyn Builds
WHEN EDITING SOURCE CODEThe simple basics...
Smart Semicolons & Braces
Matching Enclosing Brackets
“Faster” IntelliJ-‐like Code CompleJon
.abcdefghijklmnopqrstuvwxyz
Favorites for import static
Type Filters
WHEN DEBUGGING IN ECLIPSEThe hidden and rarely used jewels...
Step Filtering
Debug Details Formamer
Debug Logical Structure
Extending Logical Structures
Extending Logical Structures
Heap Walking
Eclipse Memory Analyzer (MAT)
Drop to Frame
JRebel Feature Comparison Matrix
Supported Frameworks
Get it from Eclipse Marketplace
Test Coverage with EclEmma
Test Coverage with EclEmma
CODE COMPLETIONS IN ECLIPSESmarter than I expected...
Into Code-‐Comple`on Wonderland
⌘1
Quick Fix – ⌘1
⌘2
Quick Assist – ⌘2
⌃ Space
Content Assist – ⌃Space
⌃ .
SUBWORDS COMPLETION“BecauseCamelCaseMatching****s!”
Subwords CompleJon
Install Subwords from Eclipse Marketplace
So many wonderful engines?
"[In Eclipse] sort by relevance is synonymous to alphabe`cal. In other words it sucks... but in a predictably alphabe`cal
way."
@Overrideprotected Control createDialogArea(final Composite parent) { Composite container = (Composite) super.createDialogArea(parent); swtTextWidget = new Text(container, SWT.BORDER); swtTextWidget.| return container;}
What Emmanuel gets
What does Emmanuel get when triggering code comple`on here?
All 164 proposals sorted by “Relevance”
What Emanuel wants...
Learning Constructor CompleJons
Codetrails Hippie CompleJon
And win 10 Raspberry PIs!
How about IntelliJ and Netbeans? Tweet!
Netbeans:
@geertjanw Crowdsourced Hippie Comple`on is very cool! When can I have it for Netbeans?
IntelliJ:
@andrey_cheptsov Crowdsourced Hippie Comple`on is very cool! When can I have it in IntelliJ?
It’s `me to share!
CAN WE GET IT EVEN SMARTER?
What Emmanuel wants...
… the most likely ones.
Recap
Call CompleJon
Code Snippet CompleJon
Overrides CompleJon
Chain CompleJon
How it works
90
Code Recommenders Knowledge Base
❷Mine data,extract code pamerns,create recommendaJon models
❸deliver minedknowledge to Eclipse users
❶ Analyze source code
“And what about my APIs?”
Demo: Mining the JavaFX APIs
Get the Developer Preview
www.
.com/download
How about IntelliJ and Netbeans? Tweet!
Netbeans:
@geertjanw Code Recommenders is very cool! When can I have it for Netbeans?
IntelliJ:
@andrey_cheptsov Code Recommenders is very cool! When can I have it in IntelliJ?
NULL ANNOTATIONS IN ECLIPSE Gerng rid of NullPointerExcepJons...
PrevenJng NullPointerExcepJons
Enabling Null Analysis
Overriding Null Analysis AnnotaJons
GENERAL TOOLS FOR ECLIPSE 4
PIMP YOUR ECLIPSEEclipse 4 UI was torn into shreds. Is there any easy way to get a nice UI?
Eclipse 4 Chrome Theme
Eclipse 4 Chrome Theme
Get it from Eclipse Marketplace
Eclipse Color Theme
Eclipse Color Theme
Eclipse Color Theme
SHARING PREFERENCES IN ENTERPRISESSame serngs everywhere...
Any default value can be overridden by a properJes file specified on startup as follows:
Preferences
-- launch --
eclipse.exe
-plugincustomization /path/to/plugin_customization.ini
-- plugin_customization.ini --
org.eclipse.jdt.ui/content_assist_autoactivation_triggers_java=.org.eclipse.jdt.ui/content_assist_autoactivation_delay=5
Workspace Mechanic
Workspace Mechanic -‐ DetecJng Issues
Workspace Mechanic -‐ Fix it!
Configuring Workspace Mechanic
Configuring Workspace Mechanic
Configuring Workspace Mechanic
ECLIPSE AND (REMOTE) SHELLS
Easy Shell
EasyShell
Remote Systems Explorer
Virtual Machine Serngs
Take with a grain of salt!
Every VM and Eclipse installaXon is different.-‐Xincgc-‐Xss1m-‐Duser.name=FirstName LastName-‐Dfile.encoding=UTF-‐8-‐Dosgi.requiredJavaVersion=1.7-‐Declipse.p2.unsignedPolicy=allow-‐Declipse.p2.MD5Check=false-‐Xms512m-‐Xmx2g-‐XX:NewSize=16m-‐XX:PermSize=120m-‐XX:MaxPermSize=300m-‐XX:MaxPermHeapExpansion=20m-‐XX:+UseConcMarkSweepGC-‐XX:CMSInitiatingOccupancyFraction=70-‐XX:+UseCMSInitiatingOccupancyOnly-‐XX:+UseParNewGC-‐XX:+CMSConcurrentMTEnabled-‐XX:ConcGCThreads=2-‐XX:ParallelGCThreads=2-‐XX:+CMSIncrementalPacing-‐XX:CMSIncrementalDutyCycleMin=0-‐XX:CMSIncrementalDutyCycle=5-‐XX:GCTimeRatio=49-‐XX:MaxGCPauseMillis=20-‐XX:GCPauseIntervalMillis=1000-‐XX:+UseCMSCompactAtFullCollection-‐XX:+CMSClassUnloadingEnabled-‐XX:+DoEscapeAnalysis-‐XX:+UseCompressedOops-‐XX:+AggressiveOpts-‐XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
BUILD YOUR OWN ECLIPSE -‐ ECLIPSE CBI
All you need
#> git clone -b master --recursive git://git.eclipse.org/ gitroot/platform/eclipse.platform.releng.aggregator.git
#> mvn clean verify
supported by
The Knowledge Transfer Company
THANKS