eROSE
  Guiding Programmers in Eclipse


Thomas Zimmermann, zimmerth@cs.uni-sb.de
                  Saarland University


...
Programming in the Large
                     What’s next?
         Program
         analysis


                          ...
“Programmers who
changed this function also changed…”
Demo: eROSE
Your task:
Extend Eclipse with a new preference.
Demo: eROSE
You changed the field fKeys[].
eROSE recommends further changes:
Co-Change
40                                 69
                             20
ComparePreferencePage.java        plugin.p...
Demo: Co-Change
   buildnotes_compare.html



                                               public API




              ...
Learning from History

       2003-02-19 (aweinand): fixed #13332

       createGeneralPage()
       createTextComparePage(...
Mining Associations
   #42   fKeys[], initDefaults(), …, plugin.properties, …
  #752   fKeys[], initDefaults(), …, plugin....
Mining Associations
     #42 fKeys[], initDefaults(), …, plugin.properties, …
    #752 fKeys[], initDefaults(), …, plugin....
Effective Mining
Changes made by user: A, B

Find transactions that contain A, B:
TxID   Itemset
100    A, B, C
          ...
Demo: Association Rules
Evaluation

         changes             eROSE
                                                  xml
         one item    ...
Precision vs. Recall
What EROSE finds                           What it should find




False positives                   ...
Results #1
                      ENTITIES                   FILES
             Recall   Precision   Top 3 Recall Precision...
Results #1
                  ENTITIES                 FILES
           Recall Precision Top 3 Recall Precision Top 3
   Ec...
Results #2
0.8


0.7                                                                                   Likelihood 10


0.6...
Upcoming: Reorganizer
Upcoming: Reorganizer
Upcoming: HATARI

Movie with
John Wayne
   (1962)

                       Swahili for
                        “Danger”


 ...
HATARI: Annotations

“Safe” Location
    (green)


Risky Location
  (dark red)
HATARI: Risk History
Bug, Fix, or both?
                     Change information




  Bug information
Conclusion


The history of a software project
contains a multitude of information.
eROSE recommends related changes.
http...
eROSE: Guiding programmers in Eclipse
Upcoming SlideShare
Loading in …5
×

eROSE: Guiding programmers in Eclipse

1,618 views

Published on

Demonstrated at OOPSLA 2005.

Published in: Technology, Art & Photos
  • Be the first to comment

  • Be the first to like this

eROSE: Guiding programmers in Eclipse

  1. 1. eROSE Guiding Programmers in Eclipse Thomas Zimmermann, zimmerth@cs.uni-sb.de Saarland University Joint work with Valentin Dallmeier, Konstantin Halachev, Peter Weißgerber, Stephan Diehl, Andreas Zeller
  2. 2. Programming in the Large What’s next? Program analysis 27,000 files Missed by program analysis And documentation? xml xml xml html html html 12,000 files
  3. 3. “Programmers who changed this function also changed…”
  4. 4. Demo: eROSE Your task: Extend Eclipse with a new preference.
  5. 5. Demo: eROSE You changed the field fKeys[]. eROSE recommends further changes:
  6. 6. Co-Change 40 69 20 ComparePreferencePage.java plugin.properties # # Preference Page # ComparePreferencePage.name= Compare/Patch 11 ComparePreferencePage.generalTab.label= &General ComparePreferencePage.structureCompare.label= &Open structure compare automatically fKeys[] 10 ComparePreferencePage.showMoreInfo.label= &Show additional compare information in the status line ComparePreferencePage.ignoreWhitespace.label= Ignore &white space ComparePreferencePage.saveBeforePatching.label= A&utomatically save dirty editors before patching ComparePreferencePage.filter.description= Enter member names that should be excluded from 'Compare With Each Other'.nList is comma separated (e.g. '*.class, .project, bin/') ComparePreferencePage.filter.label= &Filtered Members: 11 ComparePreferencePage.filter.invalidsegment.error= Filter is invalid: {0} ComparePreferencePage.textCompareTab.label= &Text Compare 15 ComparePreferencePage.initiallyShowAncestorPane.label= Initially show a&ncestor pane ComparePreferencePage.showPseudoConflicts.label= Show &pseudo conflicts ComparePreferencePage.synchronizeScrolling.label= 13 initDefaults() Synchronize &scrolling between panes in compare viewers ComparePreferencePage.useSingleLine.label= Connect &ranges with single line ComparePreferencePage.preview.label= Preview:
  7. 7. Demo: Co-Change buildnotes_compare.html public API internal files Coupling for ComparePreferencePage.java and plugin.properties EPOSEE icons www.eposoft.org
  8. 8. Learning from History 2003-02-19 (aweinand): fixed #13332 createGeneralPage() createTextComparePage() fKeys[] initDefaults() buildnotes_compare.html PatchMessages.properties plugin.properties 1/47,000
  9. 9. Mining Associations #42 fKeys[], initDefaults(), …, plugin.properties, … #752 fKeys[], initDefaults(), …, plugin.properties, … #9872 fKeys[], initDefaults(), …, plugin.properties, … #11386 fKeys[], initDefaults(), … #20814 fKeys[], initDefaults(), …, plugin.properties, … #30989 fKeys[], initDefaults(), …, plugin.properties, … #41999 fKeys[], initDefaults(), …, plugin.properties, … #47423 fKeys[], initDefaults(), …, plugin.properties, …
  10. 10. Mining Associations #42 fKeys[], initDefaults(), …, plugin.properties, … #752 fKeys[], initDefaults(), …, plugin.properties, … #9872 fKeys[], initDefaults(), …, plugin.properties, … #11386 fKeys[], initDefaults(), … #20814 fKeys[], initDefaults(), …, plugin.properties, … #30989 fKeys[], initDefaults(), …, plugin.properties, … #41999 fKeys[], initDefaults(), …, plugin.properties, … {fKeys[], initDefaults()} {plugin.properties} #47423 fKeys[], initDefaults(), …, plugin.properties, … Support 7, Confidence 7/8 = 0.875
  11. 11. Effective Mining Changes made by user: A, B Find transactions that contain A, B: TxID Itemset 100 A, B, C TxID Itemset Item Count 200 A,D 300 A, B, C 100 A, B, C A 3 { A, B } find group & sort 400 B, D 300 A, B, C B 3 { A, B } 500 A, D 700 A, B C 2 { A, B, C } 600 B, E 700 A, B Create recommendations on the fly: Item Count { A, B } => { A } is trivial A count = 3 { A, B } => { B } is trivial B 3 { A, B } => { C } has count=2, confidence=2/3 and is strong C 2
  12. 12. Demo: Association Rules
  13. 13. Evaluation changes eROSE xml one item recommends User foo() bar() Can eROSE suggest related entities? Evaluation using eight open-source projects Training: all transactions before evaluation
  14. 14. Precision vs. Recall What EROSE finds What it should find False positives False negatives Correct prediction High precision = returned entities are relevant High recall = relevant entities are returned
  15. 15. Results #1 ENTITIES FILES Recall Precision Top 3 Recall Precision Top 3 Eclipse 0.34 0.30 0.57 0.36 0.29 0.57 GCC 0.45 0.31 0.91 0.59 0.35 0.88 Gimp 0.35 0.30 0.92 0.48 0.28 0.92 JBoss 0.36 0.31 0.62 0.36 0.19 0.51 jEdit 0.21 0.31 0.86 0.41 0.31 0.88 KOffice 0.24 0.23 0.54 0.45 0.30 0.70 Postgres 0.29 0.29 0.65 0.37 0.29 0.72 Python 0.37 0.27 0.54 0.46 0.34 0.61 AVERAGE 0.33 0.29 0.70 0.44 0.29 0.72
  16. 16. Results #1 ENTITIES FILES Recall Precision Top 3 Recall Precision Top 3 Eclipse 0.34 0.30 0.57 0.36 0.29 0.57 eROSE predicts 33% 0.91 changed 0.35 of all 0.59 entities 0.88 GCC 0.45 0.31 (files: 44%) 0.30 Gimp 0.35 0.92 0.48 0.28 0.92 JBoss70% of all0.31 In 0.36 transactions, eROSE’s topmost 0.51 0.62 0.36 0.19 jEdit 0.21 three suggestions contain a 0.41 0.31 0.86 changed0.31entity 0.88 KOffice 0.24 (files: 72%) 0.23 0.54 0.45 0.30 0.70 Postgres 0.29 0.29 0.65 0.37 0.29 0.72 Python 0.37 0.27 0.54 0.46 0.34 0.61 AVERAGE 0.33 0.29 0.70 0.44 0.29 0.72
  17. 17. Results #2 0.8 0.7 Likelihood 10 0.6 Feedback 0.5 0.4 0.3 Recall Precision 0.2 0.1 Txs per Day 0 OSS (Xmas) (Freeze) 2.0 2.0.1 (Xmas) 2.1 2.1.1 2.1.2 (Xmas) 2.1.3 3.0 Releases
  18. 18. Upcoming: Reorganizer
  19. 19. Upcoming: Reorganizer
  20. 20. Upcoming: HATARI Movie with John Wayne (1962) Swahili for “Danger” Raising Risk Awareness
  21. 21. HATARI: Annotations “Safe” Location (green) Risky Location (dark red)
  22. 22. HATARI: Risk History Bug, Fix, or both? Change information Bug information
  23. 23. Conclusion The history of a software project contains a multitude of information. eROSE recommends related changes. http://www.st.cs.uni-sb.de/softevo/

×