SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Eclipse Code
 Recommenders




   What’s	
  in	
  Juno	
  and	
  
   what	
  will	
  be	
  in	
  Kepler?
     tw:	
  @MarcelBruch                                           h
     g+:	
  +Marcel	
  Bruch                                 ric
                                                      p	
  Zu
                                                  m
                                                Ca
                                              mo
                                         De
Samstag, 23. Juni 2012
Samstag, 23. Juni 2012
Eclipse	
  Code	
  Recommenders	
  	
  	
  	
  	
  	
  
                         All Frameworks       Code

                     Code




                    Developers Who Called “new         Text()” Also Called

                                  setText()          addListener()           setLayout()   setFont()

                                     89%                 53%                    99%          35%




                    What Do Developers Ultimately Override After Extending This Class?
                           100 % overwrote
                           PreferencePage.createContents()

                           96 % overwrote
                           PreferencePage.performOk()

                           5 % overwrote
                           PreferencePage.performCancel()




Samstag, 23. Juni 2012
“Other	
  developers	
  frequently	
  bought	
  used	
  the	
  following	
  methods…”

   INTELLIGENT	
  CODE	
  COMPLETION



Samstag, 23. Juni 2012
Code	
  Comple6on…



                   @Override
                   protected Control createDialogArea(final Composite parent) {
                       Composite container = (Composite) super.createDialogArea(parent);

                           swtTextWidget = new Text(container, SWT.BORDER);
                           swtTextWidget.|
                           return container;
                   }




                                       What	
  does	
  a	
  developer	
  need,	
  i.e.,	
  
                         which	
  methods	
  should	
  the	
  code	
  compleHon	
  present	
  to	
  him?




Samstag, 23. Juni 2012
Samstag, 23. Juni 2012
All	
  164	
  Methods	
  of	
  Text	
  ?



Samstag, 23. Juni 2012
Intelligent	
  Call	
  Comple6on




                            ...	
  what	
  the	
  developer	
  actually	
  needed.




Samstag, 23. Juni 2012
“BecausePureCamelCaseMatching****s!”
   SUBWORDS	
  COMPLETION



Samstag, 23. Juni 2012
Clean	
  Code	
  encourages	
  you	
  to	
  use	
  
              speaking	
  method	
  names.	
  But	
  some6mes....




Samstag, 23. Juni 2012
10

Samstag, 23. Juni 2012
ABen
                                                           6   on:	
  	
  W
                                                                           e	
  are	
  
                                                                                        leavin
                                                                                               g	
     “what
                                                                                                            ’s	
  the
                                                                                                                     re”	
  no
                                                                                                                               w!




   “Rethinking	
  your	
  tool	
  suite.	
  Again.”

   WHAT’S	
  PLANNED	
  FOR	
  KEPLER?



Samstag, 23. Juni 2012
“Oh	
  SWT	
  -­‐	
  your	
  style	
  bits...”

   RETHINKING	
  ARGUMENT	
  GUESSING



Samstag, 23. Juni 2012
Oh	
  SWT,	
  your	
  style	
  bits...



           @Override
           protected Control createControl(final Composite parent) {

           !     !       textWidget = new Text(toolbar, SWT.BORDER);
           !     !       textWidget.addListener(eventType, listener)




                           Which	
  event	
  type,	
  i.e.,	
  	
  which	
  int	
  constant	
  defined	
  
                                somewhere,	
  should	
  he	
  insert	
  here?	
  0?


                                                                                                            13

Samstag, 23. Juni 2012
Samstag, 23. Juni 2012
SWT.<^Space>?	
  	
  454


Samstag, 23. Juni 2012
SWT.<^Space>?	
  	
  454 ±	
  3


Samstag, 23. Juni 2012
What	
  you’d	
  like	
  to	
  see	
  is...




                                                                       15

Samstag, 23. Juni 2012
e4	
  Annota6on	
  Recommender




                                                          16

Samstag, 23. Juni 2012
“Why	
  	
  is	
  	
  was	
  Google	
  Codesearch	
  not	
  ‘google	
  for	
  code	
  search’?	
  ”

   RETHINKING	
  CODE	
  SEARCH



Samstag, 23. Juni 2012
What	
  do	
  you	
  think?




                                                       18

Samstag, 23. Juni 2012
How	
  many	
  request	
  per	
  minutes	
  do
                            code	
  search	
  engines	
  have?




Samstag, 23. Juni 2012
20
                         Number	
  for	
  koders.com	
  in	
  2009	
  according	
  to	
  	
  “Analyzing	
  and	
  mining	
  a	
  code	
  search	
  engine	
  usage	
  log”
                                                                                                     hBp://dx.doi.org/10.1007/s10664-­‐010-­‐9144-­‐6 20

Samstag, 23. Juni 2012
“Templates	
  meet	
  Social	
  and	
  Machine	
  Learning!”

   RETHINKING	
  CODE	
  SNIPPETS



Samstag, 23. Juni 2012
Eclipse	
  Java	
  Templates




                          42x	
  Java	
  Templates.
                          35x	
  SWT	
  Templates.


Samstag, 23. Juni 2012
The	
  rise	
  of	
  code	
  snippet	
  repositories




                                                                   and	
  many	
  more...


Samstag, 23. Juni 2012
Snipmatch:	
  Community	
  provided,
                             searchable	
  templates...




Samstag, 23. Juni 2012
“People	
  who	
  ‘bought’	
  this	
  NullPointerException	
  typically	
  fixed	
  this	
  by...”

   RETHINKING	
  STACKTRACE	
  SEARCH



Samstag, 23. Juni 2012
But	
  what	
  if	
  you	
  get	
  this?




Samstag, 23. Juni 2012
Debugging	
  –	
  the	
  old	
  way




Samstag, 23. Juni 2012
Debugging	
  –	
  the	
  old	
  way




Samstag, 23. Juni 2012
Debugging	
  –	
  the	
  old	
  way




Samstag, 23. Juni 2012
But	
  more	
  oden	
  we	
  get…




Samstag, 23. Juni 2012
How	
  can	
  we	
  fix	
  that?	
  
      Don’t	
  stacktraces	
  share	
  some	
  commonali6es?



      org.eclipse.swt.SWTException: Invalid thread access
        at org.eclipse.swt.SWT.error(SWT.java:3884)
        at org.eclipse.swt.SWT.error(SWT.java:3799)
        at org.eclipse.swt.SWT.error(SWT.java:3770)
        at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
        at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
        at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317)
        at org.eclipselabs.cr.stacktraces.demo.ThreadDemo$1.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:619)




Samstag, 23. Juni 2012
How	
  can	
  we	
  fix	
  that?	
  
      Don’t	
  stacktraces	
  share	
  some	
  commonali6es?



      org.eclipse.swt.SWTException: Invalid thread access
        at org.eclipse.swt.SWT.error(SWT.java:3884)
        at org.eclipse.swt.SWT.error(SWT.java:3799)
        at org.eclipse.swt.SWT.error(SWT.java:3770)
        at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
        at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
        at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317)
        at org.eclipselabs.cr.stacktraces.demo.ThreadDemo$1.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:619)




Samstag, 23. Juni 2012
How	
  about	
  “stacktrace	
  recommenders”?




Samstag, 23. Juni 2012
4	
  Tool	
  Candidates	
  for	
  Eclipse	
  Kepler
                         ❶	
  Arguments	
  &	
  AnnotaHon	
                            ❷	
  Code	
  Search
                                 Recommender




                                                           ❺	
  One	
  of	
  these!

                          ❸	
  Code	
  Snippet	
  Mining                              ❹	
  Stacktrace	
  Search




                                                                                                                  32

Samstag, 23. Juni 2012
hBp://eclipse.org/recommenders/
                                     Follow	
  me	
  on	
  twiBer:	
  @MarcelBruch
                                                       google+:	
  +Marcel	
  Bruch   33

Samstag, 23. Juni 2012

Weitere ähnliche Inhalte

Was ist angesagt?

Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Codeslicklash
 
New Ideas for Old Code - Greach
New Ideas for Old Code - GreachNew Ideas for Old Code - Greach
New Ideas for Old Code - GreachHamletDRC
 
Interpreter implementation of advice weaving
Interpreter implementation of advice weavingInterpreter implementation of advice weaving
Interpreter implementation of advice weavinginaseer
 
Java onguice20070426
Java onguice20070426Java onguice20070426
Java onguice20070426Ratul Ray
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and EvolutionEelco Visser
 
Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)
Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)
Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)Theo Jungeblut
 
Eric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDK
Eric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDKEric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDK
Eric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDKGuardSquare
 
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007Arun Kumar
 
Dev labs alliance top 20 basic java interview question for sdet
Dev labs alliance top 20 basic java interview question for sdetDev labs alliance top 20 basic java interview question for sdet
Dev labs alliance top 20 basic java interview question for sdetdevlabsalliance
 
Clean code & design patterns
Clean code & design patternsClean code & design patterns
Clean code & design patternsPascal Larocque
 
Moved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentalsMoved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentalsMilen Dyankov
 
Eric Lafortune - Fighting application size with ProGuard and beyond
Eric Lafortune - Fighting application size with ProGuard and beyondEric Lafortune - Fighting application size with ProGuard and beyond
Eric Lafortune - Fighting application size with ProGuard and beyondGuardSquare
 
Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)
Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)
Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)Theo Jungeblut
 
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術Seitaro Yuuki
 
JavaScript Parser Infrastructure for Code Quality Analysis
JavaScript Parser Infrastructure for Code Quality AnalysisJavaScript Parser Infrastructure for Code Quality Analysis
JavaScript Parser Infrastructure for Code Quality AnalysisAriya Hidayat
 

Was ist angesagt? (20)

Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Code
 
New Ideas for Old Code - Greach
New Ideas for Old Code - GreachNew Ideas for Old Code - Greach
New Ideas for Old Code - Greach
 
Interpreter implementation of advice weaving
Interpreter implementation of advice weavingInterpreter implementation of advice weaving
Interpreter implementation of advice weaving
 
Java onguice20070426
Java onguice20070426Java onguice20070426
Java onguice20070426
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and Evolution
 
Robots in Swift
Robots in SwiftRobots in Swift
Robots in Swift
 
Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)
Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)
Lego For Engineers - Dependency Injection for LIDNUG (2011-06-03)
 
Concurrency on the JVM
Concurrency on the JVMConcurrency on the JVM
Concurrency on the JVM
 
Eric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDK
Eric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDKEric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDK
Eric Lafortune - ProGuard: Optimizer and obfuscator in the Android SDK
 
Extending and scripting PDT
Extending and scripting PDTExtending and scripting PDT
Extending and scripting PDT
 
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
Lulu.com.java.j2 ee.job.interview.companion.2nd.edition.apr.2007
 
Dev labs alliance top 20 basic java interview question for sdet
Dev labs alliance top 20 basic java interview question for sdetDev labs alliance top 20 basic java interview question for sdet
Dev labs alliance top 20 basic java interview question for sdet
 
Clean code & design patterns
Clean code & design patternsClean code & design patterns
Clean code & design patterns
 
Moved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentalsMoved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentals
 
Eric Lafortune - Fighting application size with ProGuard and beyond
Eric Lafortune - Fighting application size with ProGuard and beyondEric Lafortune - Fighting application size with ProGuard and beyond
Eric Lafortune - Fighting application size with ProGuard and beyond
 
Thinking In Swift
Thinking In SwiftThinking In Swift
Thinking In Swift
 
Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)
Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)
Lego for Software Engineers at Silicon Valley Code Camp 2011 (2010-10-10)
 
Java interview question
Java interview questionJava interview question
Java interview question
 
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
ScalaMatsuri 2016 ドワンゴアカウントシステムを支えるScala技術
 
JavaScript Parser Infrastructure for Code Quality Analysis
JavaScript Parser Infrastructure for Code Quality AnalysisJavaScript Parser Infrastructure for Code Quality Analysis
JavaScript Parser Infrastructure for Code Quality Analysis
 

Ähnlich wie Eclipse Democamp Zurich

SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven DevelopmentAugusto Pascutti
 
How I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy CodeHow I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy CodeGene Gotimer
 
Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.Laurent Duveau
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in KotlinEatDog
 
Quick look at Design Patterns in Android Development
Quick look at Design Patterns in Android DevelopmentQuick look at Design Patterns in Android Development
Quick look at Design Patterns in Android DevelopmentConstantine Mars
 
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"Fwdays
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
 
ProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and TricksProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and Tricksnetomi
 
Droidcon Berlin Barcamp 2016
Droidcon Berlin Barcamp 2016Droidcon Berlin Barcamp 2016
Droidcon Berlin Barcamp 2016Przemek Jakubczyk
 
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...Edge AI and Vision Alliance
 
BarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformationsBarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformationswalkmod
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture Jiby John
 

Ähnlich wie Eclipse Democamp Zurich (20)

Jquery
JqueryJquery
Jquery
 
Responsible JavaScript
Responsible JavaScriptResponsible JavaScript
Responsible JavaScript
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven Development
 
How I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy CodeHow I Learned to Stop Worrying and Love Legacy Code
How I Learned to Stop Worrying and Love Legacy Code
 
Clean Code
Clean CodeClean Code
Clean Code
 
unit_tests_tutorial
unit_tests_tutorialunit_tests_tutorial
unit_tests_tutorial
 
Need 4 Speed FI
Need 4 Speed FINeed 4 Speed FI
Need 4 Speed FI
 
Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.
 
Dependency Injections in Kotlin
Dependency Injections in KotlinDependency Injections in Kotlin
Dependency Injections in Kotlin
 
Quick look at Design Patterns in Android Development
Quick look at Design Patterns in Android DevelopmentQuick look at Design Patterns in Android Development
Quick look at Design Patterns in Android Development
 
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
ProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and TricksProGuard / DexGuard Tips and Tricks
ProGuard / DexGuard Tips and Tricks
 
Droidcon Berlin Barcamp 2016
Droidcon Berlin Barcamp 2016Droidcon Berlin Barcamp 2016
Droidcon Berlin Barcamp 2016
 
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
 
BarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformationsBarcelonaJUG2016: walkmod: how to run and design code transformations
BarcelonaJUG2016: walkmod: how to run and design code transformations
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture
 
groovy & grails - lecture 7
groovy & grails - lecture 7groovy & grails - lecture 7
groovy & grails - lecture 7
 
CDI: How do I ?
CDI: How do I ?CDI: How do I ?
CDI: How do I ?
 

Mehr von Marcel Bruch

Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...
Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...
Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...Marcel Bruch
 
Eclipse Neon Webinar Automated Error Reporting
Eclipse Neon Webinar Automated Error ReportingEclipse Neon Webinar Automated Error Reporting
Eclipse Neon Webinar Automated Error ReportingMarcel Bruch
 
Because you can’t fix what you don’t know is broken...
Because you can’t fix what you don’t know is broken...Because you can’t fix what you don’t know is broken...
Because you can’t fix what you don’t know is broken...Marcel Bruch
 
The Sin City of Code - No Images
The Sin City of Code - No ImagesThe Sin City of Code - No Images
The Sin City of Code - No ImagesMarcel Bruch
 
Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1
Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1
Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1Marcel Bruch
 
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0Marcel Bruch
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Marcel Bruch
 
Snipmatch - Snippets for the World
Snipmatch - Snippets for the WorldSnipmatch - Snippets for the World
Snipmatch - Snippets for the WorldMarcel Bruch
 
2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler DemocampsMarcel Bruch
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011Marcel Bruch
 

Mehr von Marcel Bruch (10)

Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...
Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...
Setting up Automated Error Reporting for your Eclipse RCP App and Eclipse IDE...
 
Eclipse Neon Webinar Automated Error Reporting
Eclipse Neon Webinar Automated Error ReportingEclipse Neon Webinar Automated Error Reporting
Eclipse Neon Webinar Automated Error Reporting
 
Because you can’t fix what you don’t know is broken...
Because you can’t fix what you don’t know is broken...Because you can’t fix what you don’t know is broken...
Because you can’t fix what you don’t know is broken...
 
The Sin City of Code - No Images
The Sin City of Code - No ImagesThe Sin City of Code - No Images
The Sin City of Code - No Images
 
Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1
Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1
Eclipse DemoCamp Zurich - SnipMatch in Recommenders 2.1
 
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
 
Snipmatch - Snippets for the World
Snipmatch - Snippets for the WorldSnipmatch - Snippets for the World
Snipmatch - Snippets for the World
 
2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011
 

Kürzlich hochgeladen

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Kürzlich hochgeladen (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Eclipse Democamp Zurich

  • 1. Eclipse Code Recommenders What’s  in  Juno  and   what  will  be  in  Kepler? tw:  @MarcelBruch h g+:  +Marcel  Bruch ric p  Zu m Ca mo De Samstag, 23. Juni 2012
  • 3. Eclipse  Code  Recommenders             All Frameworks Code Code Developers Who Called “new Text()” Also Called setText() addListener() setLayout() setFont() 89% 53% 99% 35% What Do Developers Ultimately Override After Extending This Class? 100 % overwrote PreferencePage.createContents() 96 % overwrote PreferencePage.performOk() 5 % overwrote PreferencePage.performCancel() Samstag, 23. Juni 2012
  • 4. “Other  developers  frequently  bought  used  the  following  methods…” INTELLIGENT  CODE  COMPLETION Samstag, 23. Juni 2012
  • 5. Code  Comple6on… @Override protected Control createDialogArea(final Composite parent) { Composite container = (Composite) super.createDialogArea(parent); swtTextWidget = new Text(container, SWT.BORDER); swtTextWidget.| return container; } What  does  a  developer  need,  i.e.,   which  methods  should  the  code  compleHon  present  to  him? Samstag, 23. Juni 2012
  • 7. All  164  Methods  of  Text  ? Samstag, 23. Juni 2012
  • 8. Intelligent  Call  Comple6on ...  what  the  developer  actually  needed. Samstag, 23. Juni 2012
  • 9. “BecausePureCamelCaseMatching****s!” SUBWORDS  COMPLETION Samstag, 23. Juni 2012
  • 10. Clean  Code  encourages  you  to  use   speaking  method  names.  But  some6mes.... Samstag, 23. Juni 2012
  • 12. ABen 6 on:    W e  are   leavin g   “what ’s  the re”  no w! “Rethinking  your  tool  suite.  Again.” WHAT’S  PLANNED  FOR  KEPLER? Samstag, 23. Juni 2012
  • 13. “Oh  SWT  -­‐  your  style  bits...” RETHINKING  ARGUMENT  GUESSING Samstag, 23. Juni 2012
  • 14. Oh  SWT,  your  style  bits... @Override protected Control createControl(final Composite parent) { ! ! textWidget = new Text(toolbar, SWT.BORDER); ! ! textWidget.addListener(eventType, listener) Which  event  type,  i.e.,    which  int  constant  defined   somewhere,  should  he  insert  here?  0? 13 Samstag, 23. Juni 2012
  • 17. SWT.<^Space>?    454 ±  3 Samstag, 23. Juni 2012
  • 18. What  you’d  like  to  see  is... 15 Samstag, 23. Juni 2012
  • 19. e4  Annota6on  Recommender 16 Samstag, 23. Juni 2012
  • 20. “Why    is    was  Google  Codesearch  not  ‘google  for  code  search’?  ” RETHINKING  CODE  SEARCH Samstag, 23. Juni 2012
  • 21. What  do  you  think? 18 Samstag, 23. Juni 2012
  • 22. How  many  request  per  minutes  do code  search  engines  have? Samstag, 23. Juni 2012
  • 23. 20 Number  for  koders.com  in  2009  according  to    “Analyzing  and  mining  a  code  search  engine  usage  log” hBp://dx.doi.org/10.1007/s10664-­‐010-­‐9144-­‐6 20 Samstag, 23. Juni 2012
  • 24. “Templates  meet  Social  and  Machine  Learning!” RETHINKING  CODE  SNIPPETS Samstag, 23. Juni 2012
  • 25. Eclipse  Java  Templates 42x  Java  Templates. 35x  SWT  Templates. Samstag, 23. Juni 2012
  • 26. The  rise  of  code  snippet  repositories and  many  more... Samstag, 23. Juni 2012
  • 27. Snipmatch:  Community  provided, searchable  templates... Samstag, 23. Juni 2012
  • 28. “People  who  ‘bought’  this  NullPointerException  typically  fixed  this  by...” RETHINKING  STACKTRACE  SEARCH Samstag, 23. Juni 2012
  • 29. But  what  if  you  get  this? Samstag, 23. Juni 2012
  • 30. Debugging  –  the  old  way Samstag, 23. Juni 2012
  • 31. Debugging  –  the  old  way Samstag, 23. Juni 2012
  • 32. Debugging  –  the  old  way Samstag, 23. Juni 2012
  • 33. But  more  oden  we  get… Samstag, 23. Juni 2012
  • 34. How  can  we  fix  that?   Don’t  stacktraces  share  some  commonali6es? org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipselabs.cr.stacktraces.demo.ThreadDemo$1.run(Unknown Source) at java.lang.Thread.run(Thread.java:619) Samstag, 23. Juni 2012
  • 35. How  can  we  fix  that?   Don’t  stacktraces  share  some  commonali6es? org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipselabs.cr.stacktraces.demo.ThreadDemo$1.run(Unknown Source) at java.lang.Thread.run(Thread.java:619) Samstag, 23. Juni 2012
  • 36. How  about  “stacktrace  recommenders”? Samstag, 23. Juni 2012
  • 37. 4  Tool  Candidates  for  Eclipse  Kepler ❶  Arguments  &  AnnotaHon   ❷  Code  Search Recommender ❺  One  of  these! ❸  Code  Snippet  Mining ❹  Stacktrace  Search 32 Samstag, 23. Juni 2012
  • 38. hBp://eclipse.org/recommenders/ Follow  me  on  twiBer:  @MarcelBruch google+:  +Marcel  Bruch 33 Samstag, 23. Juni 2012