Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
Moritz Beller
Delft University of Technology @Inventitech Andy Zaidman, Georgios Gousios, Alberto Bacchelli, Elmar Jürgens, Radjino Bohlanath, Shane McIntosh
Moritz Beller Delft University of Technology @Inventitech Andy - - PowerPoint PPT Presentation
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix? Moritz Beller Delft University of Technology @Inventitech Andy Zaidman, Georgios Gousios, Alberto Bacchelli, Elmar Jrgens, Radjino Bohlanath, Shane McIntosh Modern Code
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
Delft University of Technology @Inventitech Andy Zaidman, Georgios Gousios, Alberto Bacchelli, Elmar Jürgens, Radjino Bohlanath, Shane McIntosh
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDogUiThread = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDogUiThread = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDogUiThread = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ private Runnable watchDogUiThread = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ private Runnable watchDogUiThread = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ private Runnable watchDogUiThread = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** * The ui thread for WatchDog registration. From * this thread, the WatchDog program is started. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
/** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ // TODO (GG) Provide a more descriptive name public Runnable watchDog = new StartupUIThread(); /** The ui thread for WatchDog registration. */ public Runnable watchDog = new StartupUIThread();
Doc Visual Structure Resource Check Interface Logic Larger Support
ConQAT Gromacs
10% 20% 30% 40%
Doc Visual Structure Resource Check Interface Logic Larger Support
ConQAT Gromacs
10% 20% 30% 40%
Doc Visual Structure Resource Check Interface Logic Larger Support
ConQAT Gromacs
10% 20% 30% 40%
Doc Visual Structure Resource Check Interface Logic Larger Support
ConQAT Gromacs
10% 20% 30% 40%
CI Services
a) Static Analysis CI Services
a) Static Analysis b) Dynamic Analysis CI Services
a) Static Analysis b) Dynamic Analysis CI Services
1 2 2
1 2 2
1 2 2
1 2 2 1 2 2
1 2 2 1 2 2
1 2 2 36 1 2 2
1 2 2 36 1 2 2
1 2 2 36 1 2 2
Source Amount of Projects Using ASATs Using >1 ASAT Enforcing ASAT 122 59% 23%
77% 36% 36%
Source Amount of Projects Using ASATs Using >1 ASAT Enforcing ASAT 122 59% 23%
77% 36% 36%
Source Amount of Projects Using ASATs Using >1 ASAT Enforcing ASAT 122 59% 23%
77% 36% 36%
Source Amount of Projects Using ASATs Using >1 ASAT Enforcing ASAT 122 59% 23%
77% 36% 36%
Source Amount of Projects Using ASATs Using >1 ASAT Enforcing ASAT 122 59% 23%
77% 36% 36%
Source Amount of Projects Using ASATs Using >1 ASAT Enforcing ASAT 122 59% 23%
77% 36% 36% Moritz Beller, Radjino Bholanath, Shane McIntosh, Andy Zaidman: Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Source Software, SANER, Osaka (Japan), 2016
TODO: Add background with Sun
TODO: Add background with Sun
TODO: Add background with Sun
It is known.
<TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
<TL;DR>...</TL;DR>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.04 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 <TL;DR>...</TL;DR>
Moritz Beller, Georgios Gousios, Andy Zaidman: Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub, MSR, Buenos Aires (Argentina), 2017
M S R M i n i n g C h a l l e n g e 2 1 7 Public Data Set
M S R M i n i n g C h a l l e n g e 2 1 7 Public Data Set
M S R M i n i n g C h a l l e n g e 2 1 7 Public Data Set
TODO: Add background with Sun
TODO: Add background with Sun
TODO: Add background with Sun
TODO: Add background with Sun
TODO: Add background with Sun
6 2 c
u m n s
TODO: Add background with Sun
6 2 c
u m n s
TODO: Add background with Sun
6 2 c
u m n s
@Inventitech Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
@Inventitech Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
@Inventitech Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?
@Inventitech Moritz Beller, TU Delft
Modern Code Reviews in Open-Source Projects: Which Problems Do They Fix?