SlideShare a Scribd company logo
1 of 32
Download to read offline
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 codeSEPARATOR/code.
--- 60        Operator
 * the item when the item is a codeSEPARATOR/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

More Related Content

What's hot

Introduction To Testing With Perl
Introduction To Testing With PerlIntroduction To Testing With Perl
Introduction To Testing With Perljoshua.mcadams
 
learn you some erlang - chap0 to chap2
learn you some erlang - chap0 to chap2learn you some erlang - chap0 to chap2
learn you some erlang - chap0 to chap2경미 김
 
Sydney Oracle Meetup - execution plans
Sydney Oracle Meetup - execution plansSydney Oracle Meetup - execution plans
Sydney Oracle Meetup - execution planspaulguerin
 
learn you some erlang - chap3 to chap5
learn you some erlang - chap3 to chap5learn you some erlang - chap3 to chap5
learn you some erlang - chap3 to chap5경미 김
 
Congfigure python as_ide
Congfigure python as_ideCongfigure python as_ide
Congfigure python as_ideLingfei Kong
 
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
PostgreSQL Procedural Languages: Tips, Tricks and GotchasPostgreSQL Procedural Languages: Tips, Tricks and Gotchas
PostgreSQL Procedural Languages: Tips, Tricks and GotchasJim Mlodgenski
 
Коварный code type ITGM #9
Коварный code type ITGM #9Коварный code type ITGM #9
Коварный code type ITGM #9Andrey Zakharevich
 
Zoo management adri jovin
Zoo management  adri jovinZoo management  adri jovin
Zoo management adri jovinAdri Jovin
 
11 Things About 11gr2
11 Things About 11gr211 Things About 11gr2
11 Things About 11gr2afa reg
 
Camouflage: Automated Anonymization of Field Data (ICSE 2011)
Camouflage: Automated Anonymization of Field Data (ICSE 2011)Camouflage: Automated Anonymization of Field Data (ICSE 2011)
Camouflage: Automated Anonymization of Field Data (ICSE 2011)James Clause
 
ITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему кодуITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему кодуdelimitry
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using CodeceptionJeroen van Dijk
 
Call Return Exploration
Call Return ExplorationCall Return Exploration
Call Return ExplorationPat Hawks
 
Calling Functions
Calling FunctionsCalling Functions
Calling FunctionsPat Hawks
 

What's hot (19)

Introduction To Testing With Perl
Introduction To Testing With PerlIntroduction To Testing With Perl
Introduction To Testing With Perl
 
learn you some erlang - chap0 to chap2
learn you some erlang - chap0 to chap2learn you some erlang - chap0 to chap2
learn you some erlang - chap0 to chap2
 
Sydney Oracle Meetup - execution plans
Sydney Oracle Meetup - execution plansSydney Oracle Meetup - execution plans
Sydney Oracle Meetup - execution plans
 
Linked lists
Linked listsLinked lists
Linked lists
 
learn you some erlang - chap3 to chap5
learn you some erlang - chap3 to chap5learn you some erlang - chap3 to chap5
learn you some erlang - chap3 to chap5
 
Congfigure python as_ide
Congfigure python as_ideCongfigure python as_ide
Congfigure python as_ide
 
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
PostgreSQL Procedural Languages: Tips, Tricks and GotchasPostgreSQL Procedural Languages: Tips, Tricks and Gotchas
PostgreSQL Procedural Languages: Tips, Tricks and Gotchas
 
Spss syntax
Spss syntaxSpss syntax
Spss syntax
 
Коварный code type ITGM #9
Коварный code type ITGM #9Коварный code type ITGM #9
Коварный code type ITGM #9
 
Zoo management adri jovin
Zoo management  adri jovinZoo management  adri jovin
Zoo management adri jovin
 
C99
C99C99
C99
 
Five
FiveFive
Five
 
11 Things About 11gr2
11 Things About 11gr211 Things About 11gr2
11 Things About 11gr2
 
Camouflage: Automated Anonymization of Field Data (ICSE 2011)
Camouflage: Automated Anonymization of Field Data (ICSE 2011)Camouflage: Automated Anonymization of Field Data (ICSE 2011)
Camouflage: Automated Anonymization of Field Data (ICSE 2011)
 
Lisp
LispLisp
Lisp
 
ITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему кодуITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using Codeception
 
Call Return Exploration
Call Return ExplorationCall Return Exploration
Call Return Exploration
 
Calling Functions
Calling FunctionsCalling Functions
Calling Functions
 

Viewers also liked

Action based filter_demo
Action based filter_demoAction based filter_demo
Action based filter_demoNilotpal Paul
 
Classic vs New Hiring Process
Classic vs New Hiring ProcessClassic vs New Hiring Process
Classic vs New Hiring ProcessBasem Musa
 
Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015
Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015
Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015TechMeetups
 
Vd Presentation Cvs
Vd Presentation CvsVd Presentation Cvs
Vd Presentation Cvsmetudgn
 
Drupal Best Practices
Drupal Best PracticesDrupal Best Practices
Drupal Best Practicesmanugoel2003
 
Employers Want to Hire You - Belive in this when you go to the Interview
Employers Want to Hire You - Belive in this when you go to the InterviewEmployers Want to Hire You - Belive in this when you go to the Interview
Employers Want to Hire You - Belive in this when you go to the InterviewEmployment Crossing
 
Google Recruiting Strategy
Google Recruiting StrategyGoogle Recruiting Strategy
Google Recruiting StrategyMaysoun Mohamed
 

Viewers also liked (7)

Action based filter_demo
Action based filter_demoAction based filter_demo
Action based filter_demo
 
Classic vs New Hiring Process
Classic vs New Hiring ProcessClassic vs New Hiring Process
Classic vs New Hiring Process
 
Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015
Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015
Startup CV's hiring at TechStartupJobs Fair Berlin Spring 2015
 
Vd Presentation Cvs
Vd Presentation CvsVd Presentation Cvs
Vd Presentation Cvs
 
Drupal Best Practices
Drupal Best PracticesDrupal Best Practices
Drupal Best Practices
 
Employers Want to Hire You - Belive in this when you go to the Interview
Employers Want to Hire You - Belive in this when you go to the InterviewEmployers Want to Hire You - Belive in this when you go to the Interview
Employers Want to Hire You - Belive in this when you go to the Interview
 
Google Recruiting Strategy
Google Recruiting StrategyGoogle Recruiting Strategy
Google Recruiting Strategy
 

Similar to Fine-grained Processing of CVS Archives with APFEL

Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...Dhivyaa C.R
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Eyal Vardi
 
Function Procedure Trigger Partition.pdf
Function Procedure Trigger Partition.pdfFunction Procedure Trigger Partition.pdf
Function Procedure Trigger Partition.pdfSanam Maharjan
 
PhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsPhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsBastian Feder
 
Unit testing en iOS @ MobileCon Galicia
Unit testing en iOS @ MobileCon GaliciaUnit testing en iOS @ MobileCon Galicia
Unit testing en iOS @ MobileCon GaliciaRobot Media
 
Php unit the-mostunknownparts
Php unit the-mostunknownpartsPhp unit the-mostunknownparts
Php unit the-mostunknownpartsBastian Feder
 
Test-driven Development for TYPO3
Test-driven Development for TYPO3Test-driven Development for TYPO3
Test-driven Development for TYPO3Oliver Klee
 
Speed Things Up with Transients
Speed Things Up with TransientsSpeed Things Up with Transients
Speed Things Up with TransientsCliff Seal
 
T sql denali code Day of .Net
T sql denali code Day of .NetT sql denali code Day of .Net
T sql denali code Day of .NetKathiK58
 
Php unit the-mostunknownparts
Php unit the-mostunknownpartsPhp unit the-mostunknownparts
Php unit the-mostunknownpartsBastian Feder
 
international PHP2011_Bastian Feder_The most unknown Parts of PHPUnit
international PHP2011_Bastian Feder_The most unknown Parts of PHPUnitinternational PHP2011_Bastian Feder_The most unknown Parts of PHPUnit
international PHP2011_Bastian Feder_The most unknown Parts of PHPUnitsmueller_sandsmedia
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11Michelangelo van Dam
 
20220112 sac v1
20220112 sac v120220112 sac v1
20220112 sac v1Sharon Liu
 
PerlApp2Postgresql (2)
PerlApp2Postgresql (2)PerlApp2Postgresql (2)
PerlApp2Postgresql (2)Jerome Eteve
 

Similar to Fine-grained Processing of CVS Archives with APFEL (20)

Php & my sql
Php & my sqlPhp & my sql
Php & my sql
 
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
 
UNIT IV (4).pptx
UNIT IV (4).pptxUNIT IV (4).pptx
UNIT IV (4).pptx
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0
 
Function Procedure Trigger Partition.pdf
Function Procedure Trigger Partition.pdfFunction Procedure Trigger Partition.pdf
Function Procedure Trigger Partition.pdf
 
PhpUnit - The most unknown Parts
PhpUnit - The most unknown PartsPhpUnit - The most unknown Parts
PhpUnit - The most unknown Parts
 
Unit testing en iOS @ MobileCon Galicia
Unit testing en iOS @ MobileCon GaliciaUnit testing en iOS @ MobileCon Galicia
Unit testing en iOS @ MobileCon Galicia
 
Php unit the-mostunknownparts
Php unit the-mostunknownpartsPhp unit the-mostunknownparts
Php unit the-mostunknownparts
 
PHPSpec BDD for PHP
PHPSpec BDD for PHPPHPSpec BDD for PHP
PHPSpec BDD for PHP
 
Cli deep dive
Cli deep diveCli deep dive
Cli deep dive
 
Test-driven Development for TYPO3
Test-driven Development for TYPO3Test-driven Development for TYPO3
Test-driven Development for TYPO3
 
Speed Things Up with Transients
Speed Things Up with TransientsSpeed Things Up with Transients
Speed Things Up with Transients
 
T sql denali code Day of .Net
T sql denali code Day of .NetT sql denali code Day of .Net
T sql denali code Day of .Net
 
SPL, not a bridge too far
SPL, not a bridge too farSPL, not a bridge too far
SPL, not a bridge too far
 
Php unit the-mostunknownparts
Php unit the-mostunknownpartsPhp unit the-mostunknownparts
Php unit the-mostunknownparts
 
international PHP2011_Bastian Feder_The most unknown Parts of PHPUnit
international PHP2011_Bastian Feder_The most unknown Parts of PHPUnitinternational PHP2011_Bastian Feder_The most unknown Parts of PHPUnit
international PHP2011_Bastian Feder_The most unknown Parts of PHPUnit
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11
 
20220112 sac v1
20220112 sac v120220112 sac v1
20220112 sac v1
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
PerlApp2Postgresql (2)
PerlApp2Postgresql (2)PerlApp2Postgresql (2)
PerlApp2Postgresql (2)
 

More from Thomas Zimmermann

Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing InformationThomas Zimmermann
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsThomas Zimmermann
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development Thomas Zimmermann
 
Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedThomas Zimmermann
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user researchThomas Zimmermann
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsThomas Zimmermann
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchThomas Zimmermann
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic modelsThomas Zimmermann
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software developmentThomas Zimmermann
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect predictionThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsThomas Zimmermann
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceThomas Zimmermann
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Thomas Zimmermann
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringThomas Zimmermann
 

More from Thomas Zimmermann (20)

Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing Information
 
MSR 2013 Preview
MSR 2013 PreviewMSR 2013 Preview
MSR 2013 Preview
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode Operations
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development
 
Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get Reopened
 
Klingon Countdown Timer
Klingon Countdown TimerKlingon Countdown Timer
Klingon Countdown Timer
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user research
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignments
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft Research
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic models
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software development
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixed
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect prediction
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency Graphs
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Meet Tom and his Fish
Meet Tom and his FishMeet Tom and his Fish
Meet Tom and his Fish
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
 

Recently uploaded

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
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
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Recently uploaded (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
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
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Fine-grained Processing of CVS Archives with APFEL

  • 1. Fine-grained processing of CVS archives with APFEL Tom Zimmermann Saarland University, Saarbrücken, Germany
  • 3.
  • 4.
  • 6.
  • 9. APFEL collects CVS data APFEL
  • 10. APFEL collects CVS data APFEL
  • 11. APFEL collects CVS data APFEL
  • 12. 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$ }
  • 13. 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$ }
  • 14. 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$ }
  • 15. Collecting tokens public static void main(String[] args) { System.out.println(quot;Hello Portland.quot;); System.out.println(“Hello eTX.”); }
  • 16. 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.”
  • 17. 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
  • 19. Comparing token sets A() B() C() D() E()
  • 20. Comparing token sets A() A() B() F() C() B() D() D() E() E()
  • 21. Comparing token sets A() A() B() F() C() B() D() D() E() E()
  • 23. 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; 
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. One line fixes 301 Expression 150 Method call 120 Literal (boundaries, constants) 73 Keyword (true/false confusion) 60 Operator 39 Identifier 39 Comment (!!)
  • 28. One line fixes 301 Expression 150 Method call 120 Literal (boundaries, constants) 73 Keyword (true/false confusion) 60 Operator 39 Identifier 39 Comment (!!)
  • 29. 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 codeSEPARATOR/code. --- 60 Operator * the item when the item is a codeSEPARATOR/code 39 Identifier 39 Comment (!!)
  • 30. 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.
  • 31. 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/
  • 32. 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