Fine-grained Processing of CVS Archives with APFEL

50 %
50 %
Information about Fine-grained Processing of CVS Archives with APFEL

Published on August 5, 2007

Author: tom.zimmermann

Source: slideshare.net

Description

Presented at ETX 2006.

Fine-grained processing of CVS archives with APFEL Tom Zimmermann Saarland University, Saarbrücken, Germany

Guiding developers Zimmermann, Weissgerber, Diehl, Zeller (TSE 2005)

eROSE suggests further locations.

eROSE prevents incomplete changes.

eROSE is customizable.

APFEL collects CVS data APFEL

APFEL collects CVS data APFEL

APFEL collects CVS data APFEL

Fine-grained changes initDefaults(IPreferenceStore store) public static void initDefaults(IPreferenceStore store) { store.setDefault(OPEN_STRUCTURE_COMPARE, true); store.setDefault(SYNCHRONIZE_SCROLLING, true); store.setDefault(SHOW_PSEUDO_CONFLICTS, false); store.setDefault(INITIALLY_SHOW_ANCESTOR_PANE, false); store.setDefault(SHOW_MORE_INFO, false); store.setDefault(IGNORE_WHITESPACE, false); store.setDefault(PREF_SAVE_ALL_EDITORS, false); //store.setDefault(USE_SPLINES, false); store.setDefault(USE_SINGLE_LINE, true); //store.setDefault(USE_RESOLVE_UI, false); store.setDefault(PATH_FILTER, quot;quot;); //$NON-NLS-1$ }

Fine-grained changes initDefaults(IPreferenceStore store) public static void initDefaults(IPreferenceStore store) { store.setDefault(OPEN_STRUCTURE_COMPARE, true); D store.setDefault(SYNCHRONIZE_SCROLLING, true); E store.setDefault(SHOW_PSEUDO_CONFLICTS, false); G store.setDefault(INITIALLY_SHOW_ANCESTOR_PANE, false); N A store.setDefault(SHOW_MORE_INFO, false); H store.setDefault(IGNORE_WHITESPACE, false); C store.setDefault(PREF_SAVE_ALL_EDITORS, false); //store.setDefault(USE_SPLINES, false); store.setDefault(USE_SINGLE_LINE, true); //store.setDefault(USE_RESOLVE_UI, false); store.setDefault(PATH_FILTER, quot;quot;); //$NON-NLS-1$ }

Fine-grained changes initDefaults(IPreferenceStore store) public static void initDefaults(IPreferenceStore store) { store.setDefault(OPEN_STRUCTURE_COMPARE, true); Removed call to setDefault (2x): store.setDefault(SYNCHRONIZE_SCROLLING, true); store.setDefault(USE_SPLINES, false); store.setDefault(SHOW_PSEUDO_CONFLICTS, false); store.setDefault(INITIALLY_SHOW_ANCESTOR_PANE, false); store.setDefault(USE_RESOLVE_UI, false); store.setDefault(SHOW_MORE_INFO, false); store.setDefault(IGNORE_WHITESPACE, false); Inserted comments (2x): store.setDefault(PREF_SAVE_ALL_EDITORS, false); //store.setDefault(USE_SPLINES, false); //store.setDefault(USE_SPLINES, false); store.setDefault(USE_SINGLE_LINE, true); //store.setDefault(USE_RESOLVE_UI, false); //store.setDefault(USE_RESOLVE_UI, false); store.setDefault(PATH_FILTER, quot;quot;); //$NON-NLS-1$ }

Collecting tokens public static void main(String[] args) { System.out.println(quot;Hello Portland.quot;); System.out.println(“Hello eTX.”); }

Collecting tokens public static void main(String[] args) { System.out.println(quot;Hello Portland.quot;); System.out.println(“Hello eTX.”); } P-public T-String[] P-static V-args T-System T-System V-out V-out M-println M-println Y-”Hello eTX.” Y-”Hello eTX.”

Collecting tokens Modularization packages, imports Inheritance extends, implements Method calls inner vs final call Variable usage identifiers, types Exceptions throws, throw, catch Comments Javadoc, blocks, lines modifiers, literals, Various operator, keywords

Comparing token sets

Comparing token sets A() B() C() D() E()

Comparing token sets A() A() B() F() C() B() D() D() E() E()

Comparing token sets A() A() B() F() C() B() D() D() E() E()

Cross-cutting changes

Cross-cutting changes SELECT token_name, COUNT(DISTINCT element_id)  FROM cvs_tokens_method NATURAL JOIN cvs_revisions  WHERE token_type='M' AND change_type='CHG'  GROUP BY transaction_id, token_name   ORDER BY COUNT(DISTINCT element_id) DESC; 

Cross-cutting changes SELECT token_name, COUNT(DISTINCT element_id)  FROM cvs_tokens_method NATURAL JOIN cvs_revisions  WHERE token_type='M' AND change_type='CHG'  GROUP BY transaction_id, token_name   ORDER BY COUNT(DISTINCT element_id) DESC;  token_name count getString 1462 lock 1284 unlock 1284 error 996 isValidWidget 988

Cross-cutting changes SELECT token_name, COUNT(DISTINCT element_id)  FROM cvs_tokens_method NATURAL JOIN cvs_revisions  WHERE token_type='M' AND change_type='CHG'  GROUP BY transaction_id, token_name   ORDER BY COUNT(DISTINCT element_id) DESC;  token_name count getString 1462 ASPECTS? lock 1284 unlock 1284 error 996 isValidWidget 988

Cross-cutting changes SELECT token_name, COUNT(DISTINCT element_id)  FROM cvs_tokens_method NATURAL JOIN cvs_revisions  WHERE token_type='M' AND change_type='CHG'  GROUP BY transaction_id, token_name   ORDER BY COUNT(DISTINCT element_id) DESC;  token_name count getString 1462 SOON! lock 1284 unlock 1284 HAM: Cross-Cutting error 996 Concerns in Eclipse isValidWidget 988

One line fixes >301 Expression 150 Method call 120 Literal (boundaries, constants) 73 Keyword (true/false confusion) 60 Operator 39 Identifier 39 Comment (!!)

One line fixes >301 Expression 150 Method call 120 Literal (boundaries, constants) 73 Keyword (true/false confusion) 60 Operator 39 Identifier 39 Comment (!!)

One line fixes >301 Expression 150 Method call 120 Literal (boundaries, constants) Bug report: 119638 - Typo in ToolItem.getControl 73 Keyword (true/false confusion) 252c252 < * the item when the items is a <code>SEPARATOR</code>. --- 60 Operator > * the item when the item is a <code>SEPARATOR</code> 39 Identifier 39 Comment (!!)

Future work • Capture the context of a change, e.g., within an if/while/switch expression. • Integrate with dynamic analysis, i.e., signature in addition to handles. • Package and ship APFEL.

Conclusion • APFEL collects CVS and change data. • APFEL supports software evolution research, in particular early testing of hypotheses. • http://www.st.cs.uni-sb.de/softevo/

Conclusion • APFEL collects CVS and change data. • APFEL supports software evolution research, in particular early testing of hypotheses. • http://www.st.cs.uni-sb.de/softevo/ MSR Challenge 2007

Add a comment

Related pages

Fine-grained Processing of CVS Archives with APFEL

Fine-grained Processing of CVS Archives with APFEL Thomas Zimmermann Department of Computer Science Saarland University, Saarbrücken, Germany
Read more

Fine-grained processing of CVS archives with APFEL ...

Publication » Fine-grained processing of CVS archives with APFEL.. ... High Speed Video Processing Using Fine-Grained Processing on FPGA Platform.
Read more

CiteULike: Fine-grained Processing of CVS Archives with APFEL

x. CiteULike uses cookies, some of which may already have been set. Read about how we use cookies. We will interpret your continued use of this site as ...
Read more

Fine-grained processing of CVS archives with APFEL (2006)

CiteSeerX - Scientific documents that cite the following paper: Fine-grained processing of CVS archives with APFEL
Read more

Fine-grained Processing of CVS Archives with APFEL ...

Software Engineering Chair (Prof. Zeller) ... Fine-grained Processing of CVS Archives with APFEL ... Fine-grained Processing of CVS Archives with ...
Read more

CiteULike: duckysherwood's Zimmermann [3 articles]

duckysherwood's Zimmermann [3 articles] ... Processing of CVS Archives with APFEL ... from version archives in a database. APFEL is built upon ...
Read more

ETX 2006: Portland, Oregon, USA - dblp: Eclipse Technology ...

... ETX 2006, Portland, Oregon, USA, October 22-23, 2006. ACM 2006, ISBN 1-59593-621-1. view. ... Fine-grained processing of CVS archives with APFEL. 16-20.
Read more

High Speed Video Processing Using Fine-Grained Processing ...

High Speed Video Processing Using Fine-Grained Processing on FPGA Platform on ... Fine-grained processing of CVS archives with APFEL. Thomas Zimmermann.
Read more

Supporting Empirical Studies by Non-Intrusive Collection ...

... {Supporting Empirical Studies by Non-Intrusive Collection and Visualization of Fine-Grained ... Fine-grained processing of CVS archives with APFEL ...
Read more