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

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
 
[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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
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
 

Recently uploaded (20)

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
 
[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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

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