SlideShare a Scribd company logo
Investigating Code Review Practices
in Defective Files
Patanamon (Pick)
Thongtanunam
Shane McIntosh
Ahmed E.
Hassan
Hajimu Iida
May 16-17, 2015.
Firenze, Italy
patanamon-t@is.naist.jp @pamon
Modern Code Review: A lightweight, tool-supported
code review process
Code Review Tool
Modern Code Review: A lightweight, tool-supported
code review process
Code Review Tool
Code change
Modern Code Review: A lightweight, tool-supported
code review process
Code Review Tool
Code change
Modern Code Review: A lightweight, tool-supported
code review process
Code Review Tool
Code change
Examine Code
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code Review Tool
Code change
Examine Code
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
Examine Code
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
How should reviewers do a code
review to reduce the risk of
having defects?
Examine Code
What is the difference between code review
practices of defective and clean files?
What is the difference between code review
practices of defective and clean files?
Review Practice A
Defective
i.e., files that have defects
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
We measure 3 dimensions of review activity metrics
Review Intensity
e.g., #Review Iterations,
Discussion Length
Review Participation
e.g., #Reviewers, 

Review Agreement
Reviewing Time
e.g., Review Length,
Code Reading Speed
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
Defective
i.e., files that have defects
We investigate defective files along 2 perspectives
Defective
i.e., files that have defects
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
Past Defective
i.e., files that have defects
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
Past FutureDefective
i.e., files that have defects
Future-Defective Files
Files that will eventually have defects
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
Past FutureDefective
i.e., files that have defectsFuture-Defective Files
Files that will eventually have defects
Conjecture: Reviews of Future-
Defective will be
• less intense,
• with less team participation,
• completed with a shorter time
than reviews of clean files
We investigate defective files along 2 perspectives
Future-Defective Files: Files that have post-release defects
VCS
Repositories
Future-Defective Files: Files that have post-release defects
VCS
Repositories
Release date Bug-fixing commit
Future-Defective Files: Files that have post-release defects
VCS
Repositories
Release date Bug-fixing commit
Future-Defective
Future-Defective Files: Files that have post-release defects
VCS
Repositories
Release date
No bug-fixing commits
Release date
Bug-fixing commit
Future-Defective
Future-Defective Files: Files that have post-release defects
VCS
Repositories
Release date
No bug-fixing commits
Release date
Bug-fixing commit
Future-Defective
Clean
Future-Defective Files: Files that have post-release defects
Studied ReviewsVCS
Repositories
Release date
No bug-fixing commits
Release date
Bug-fixing commit
6 months
Future-Defective
Clean
Future-Defective Files: Files that have post-release defects
Studied ReviewsVCS
Repositories
Release date
No bug-fixing commits
Release date
Bug-fixing commit
6 months
1,176 Files
3,470 Reviews
10,513 Files
2,727 Reviews
5.0.0
866 Files
2,849 Reviews
11,931 Files
2,690 Reviews
5.1.0
Future-Defective
Clean
#Reviewers
#Reviews of Clean files
#Reviewers
#Reviews of Future-Defective files
VS
Review Activity Analysis: Compare code review activity
that has been applied to future-defective and clean files
#Reviewers
#Reviews of Clean files
#Reviewers
#Reviews of Future-Defective files
VS
Using a statistical test to determine the difference between
the distributions of code review activity
Review Activity Analysis: Compare code review activity
that has been applied to future-defective and clean files
#Reviewers
#Reviews of Clean files
#Reviewers
#Reviews of Future-Defective files
VS
Using a statistical test to determine the difference between
the distributions of code review activity
Raw code review activity metric is
normalized by patch size
Review Activity Analysis: Compare code review activity
that has been applied to future-defective and clean files
Findings
Code review activity in
the reviews of future-defective files
Conjecture
Results
Review Intensity
Review Participation
Reviewing Time
Less Intense
Less Team
Participation
Completed with
a shorter time
Findings
Code review activity in
the reviews of future-defective files
Conjecture
Less Intense
Results
Review Intensity
Review Participation
Reviewing Time
Less Intense
Less Team
Participation
Completed with
a shorter time
Findings
Code review activity in
the reviews of future-defective files
Conjecture
Less Intense
Less Team
Participation
Results
Review Intensity
Review Participation
Reviewing Time
Less Intense
Less Team
Participation
Completed with
a shorter time
Findings
Code review activity in
the reviews of future-defective files
Conjecture
Less Intense
Less Team
Participation
Faster Code
Reading Rate
Results
Review Intensity
Review Participation
Reviewing Time
Less Intense
Less Team
Participation
Completed with
a shorter time
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
FutureFuture-Defective Files
Files that will eventually have defects
Conjecture: Reviews of Future-
Defective will be
• less intense,
• with less team participation,
• completed with a shorter time
than reviews of clean files
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
FutureFuture-Defective Files
Files that will eventually have defects
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
FutureFuture-Defective Files
Files that will eventually have defects
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Risky Files
Files that have historically been defective
Conjecture: Reviews of risky files
should be
• more intense,
• with more team participation,
• reviewed for a longer time
to reduce the risk of having defects
in the future
FutureFuture-Defective Files
Files that will eventually have defects
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Risky Files: Files that had post-release defects

in prior release
VCS
Repositories
Risky Files: Files that had post-release defects

in prior release
VCS
Repositories
Release date
Prior release date
Bug-fixing
commit
Risky Files: Files that had post-release defects

in prior release
VCS
Repositories
Release date
Prior release date
Bug-fixing
commit
Risky
Risky Files: Files that had post-release defects

in prior release
VCS
Repositories
No bug-fixing commits
Release date
Prior release
date
Release date
Prior release date
Bug-fixing
commit
Risky
Risky Files: Files that had post-release defects

in prior release
VCS
Repositories
No bug-fixing commits
Release date
Prior release
date
Release date
Prior release date
Bug-fixing
commit
Normal
Risky
Risky Files: Files that had post-release defects

in prior release
Studied ReviewsVCS
Repositories
No bug-fixing commits
Release date
Prior release
date
Release date
Prior release date
Bug-fixing
commit
6 months
Normal
Risky
Risky Files: Files that had post-release defects

in prior release
Studied ReviewsVCS
Repositories
No bug-fixing commits
Release date
Prior release
date
Release date
Prior release date
Bug-fixing
commit
6 months
1,168 Files
2,671 Reviews
11,629 Files
2,868 Reviews
5.1.0
Normal
Risky
Findings
Code review activity in
the reviews of risky files
Conjecture
Results
Review Intensity
Review Participation
Reviewing Time
More Intense
More Team
Participation
Completed with
a longer time
Findings
Code review activity in
the reviews of risky files
Conjecture
Less Intense
Results
Review Intensity
Review Participation
Reviewing Time
More Intense
More Team
Participation
Completed with
a longer time
Findings
Code review activity in
the reviews of risky files
Conjecture
Less Intense
Less Team
Participation
Results
Review Intensity
Review Participation
Reviewing Time
More Intense
More Team
Participation
Completed with
a longer time
Findings
Code review activity in
the reviews of risky files
Conjecture
Less Intense
Less Team
Participation
Receive Slow
Feedback &
Faster Code
Reading Rate
Results
Review Intensity
Review Participation
Reviewing Time
More Intense
More Team
Participation
Completed with
a longer time
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
FutureFuture-Defective Files
Files that will eventually have defects
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Risky Files
Files that have historically been defective
Conjecture: Reviews of risky files
should be
• more intense,
• with more team participation,
• reviewed for a longer time
to reduce the risk of having defects
in the future
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
FutureFuture-Defective Files
Files that will eventually have defects
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Risky Files
Files that have historically been defective
Developers are not as careful
when they review risky files.
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Will careless reviews of risky files lead to future defects?
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Will careless reviews of risky files lead to future defects?
Investigating code review
practice in risky & future-
defective files
Risky & Future-Defective Files: Risky files that will
eventually have defects
VCS
Repositories
Risky & Future-Defective Files: Risky files that will
eventually have defects
VCS
Repositories
Bug-fixing commit
Release date
Prior release date
Bug-fixing
commit
Risky & Future-Defective Files: Risky files that will
eventually have defects
VCS
Repositories
Bug-fixing commit
Release date
Prior release date
Bug-fixing
commit
Risky & Future-Defective
Risky & Future-Defective Files: Risky files that will
eventually have defects
VCS
Repositories
Bug-fixing commit
Release date
Prior release date
Bug-fixing
commit
No bug-fixing
commits
Release datePrior release date
Bug-fixing commit
Risky & Future-Defective
Risky & Future-Defective Files: Risky files that will
eventually have defects
VCS
Repositories
Bug-fixing commit
Release date
Prior release date
Bug-fixing
commit
No bug-fixing
commits
Release datePrior release date
Bug-fixing commit
Risky & Clean
Risky & Future-Defective
Risky & Future-Defective Files: Risky files that will
eventually have defects
Studied Reviews
VCS
Repositories
Bug-fixing commit
Release date
Prior release date
Bug-fixing
commit
No bug-fixing
commits
Release datePrior release date
Bug-fixing commit
6 months
Risky & Clean
Risky & Future-Defective
Risky & Future-Defective Files: Risky files that will
eventually have defects
Studied Reviews
VCS
Repositories
Bug-fixing commit
Release date
Prior release date
Bug-fixing
commit
No bug-fixing
commits
Release datePrior release date
Bug-fixing commit
6 months
206 Files
1,299 Reviews
962 Files
1,372 Reviews
5.1.0
Risky & Clean
Risky & Future-Defective
Findings
Code review activity in the reviews of
risky & future-defective files
Conjecture
Less Intense
Less Team
Participation
Receive Slow
Feedback &
Faster Code
Reading Rate
Results
Review Intensity
Review Participation
Reviewing Time
Less Intense
Less Team
Participation
Completed with
a shorter time
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Will careless reviews of risky files lead to future defects?
Investigating code review
practice in risky & future-
defective files
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Reviews of files that are both risky & future defective are less
rigorous than files that are risky but clean
Evolvability
e.g., Fixing code comments,

Decomposing complex function
Functionality
e.g., Fixing incorrect 

program logic
Traceability
e.g., Updating commit
message
We compare concerns that are addressed during
reviews of defective and clean files
Evolvability
Functionality Traceability
Proportion of reviews in future-defective files in Qt5.0.0
82%
40%40%
Reviews of defective files often address
evolvability concernsResults
10% higher than
clean files
5% higher than
clean files
10% lower than
clean files
We observe the similar results for the reviews of risky files and
risky & future-defective files
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
How should reviewers do a code
review to reduce the risk of
having defects?
Examine Code
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
How should reviewers do a code
review to reduce the risk of
having defects?
Examine Code
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
How should reviewers do a code
review to reduce the risk of
having defects?
Examine Code
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
We measure 3 dimensions of review activity metrics
Review Intensity
e.g., #Review Iterations,
Discussion Length
Review Participation
e.g., #Reviewers, 

Review Agreement
Reviewing Time
e.g., Review Length,
Code Reading Speed
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
How should reviewers do a code
review to reduce the risk of
having defects?
Examine Code
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
We measure 3 dimensions of review activity metrics
Review Intensity
e.g., #Review Iterations,
Discussion Length
Review Participation
e.g., #Reviewers, 

Review Agreement
Reviewing Time
e.g., Review Length,
Code Reading Speed
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Reviews of files that are both risky & future defective are less
rigorous than files that are risky but clean
Defect-free (Clean)
i.e., files that do not have defects
Review Practice B
What is the difference between code review
practices of defective and clean files?
Review Practice A
VS
Defective
i.e., files that have defects
We measure 3 dimensions of review activity metrics
Review Intensity
e.g., #Review Iterations,
Discussion Length
Review Participation
e.g., #Reviewers, 

Review Agreement
Reviewing Time
e.g., Review Length,
Code Reading Speed
Defective
i.e., files that have defects
Past
We investigate defective files along 2 perspectives
Future
Reviews of future-defective files
tend to be less rigorous than
reviews of clean files
Developers are not as careful
when they review risky files.
Future-Defective Files
Files that will eventually have defects
Risky Files
Files that have historically been defective
Reviews of files that are both risky & future defective are less
rigorous than files that are risky but cleanpatanamon-t@is.naist.jp @pamon
Investigating Code Review Practices in Defective Files
Modern Code Review: A lightweight, tool-supported
code review process
Upstream VCS
repositories
Code change
A lack of code review
activity can increase the
risk of post-release defects 

[McIntosh et. al., MSR2014]
My code is awesome!
No needs for a review
Code Review Tool
Code change
How should reviewers do a code
review to reduce the risk of
having defects?
Examine Code

More Related Content

Similar to Presentationpick 150517080804-lva1-app6892

Using HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review AnalyticsUsing HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review Analytics
The University of Adelaide
 
OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...
OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...
OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...
FINOS
 
Three Interviews About Static Code Analyzers
Three Interviews About Static Code AnalyzersThree Interviews About Static Code Analyzers
Three Interviews About Static Code Analyzers
Andrey Karpov
 
Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0
The Linux Foundation
 
Points.com fisheye crucible code reviews 2011
Points.com fisheye crucible code reviews 2011Points.com fisheye crucible code reviews 2011
Points.com fisheye crucible code reviews 2011
pointstechgeeks
 
Ph.D. Thesis Defense: Studying Reviewer Selection and Involvement in Modern ...
Ph.D. Thesis Defense:  Studying Reviewer Selection and Involvement in Modern ...Ph.D. Thesis Defense:  Studying Reviewer Selection and Involvement in Modern ...
Ph.D. Thesis Defense: Studying Reviewer Selection and Involvement in Modern ...
The University of Adelaide
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
VincitOy
 
Software Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for Software EngineeringSoftware Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for Software Engineering
Tao Xie
 
DevOps & Security: Here & Now
DevOps & Security: Here & NowDevOps & Security: Here & Now
DevOps & Security: Here & Now
Checkmarx
 
How's it Going?
How's it Going?How's it Going?
How's it Going?
bibliomation
 
Genetic Malware
Genetic MalwareGenetic Malware
Genetic Malware
Lauren Sheppard
 
Genetic Malware
Genetic MalwareGenetic Malware
Genetic Malware
Okta
 
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald BelchamGetting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
.NET Conf UY
 
Software Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecuritySoftware Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and Security
Tao Xie
 
My life as a cyborg
My life as a cyborg My life as a cyborg
My life as a cyborg
Alexander Serebrenik
 
How to improve the quality of your application
How to improve the quality of your applicationHow to improve the quality of your application
How to improve the quality of your application
EUR ING Ioannis Kolaxis MSc
 
Dev opsandsecurity owasp
Dev opsandsecurity owaspDev opsandsecurity owasp
Dev opsandsecurity owasp
Helen Bravo
 
Current state of Jenkins
Current state of JenkinsCurrent state of Jenkins
Current state of Jenkins
Kohsuke Kawaguchi
 
Case study
Case studyCase study
Case study
karan saini
 
Load-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.ioLoad-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.io
Hassy Veldstra
 

Similar to Presentationpick 150517080804-lva1-app6892 (20)

Using HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review AnalyticsUsing HPC Resources to Exploit Big Data for Code Review Analytics
Using HPC Resources to Exploit Big Data for Code Review Analytics
 
OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...
OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...
OSSF 2018 - Jamie Jones of GitHub - Pull what where? Contributing to Open Sou...
 
Three Interviews About Static Code Analyzers
Three Interviews About Static Code AnalyzersThree Interviews About Static Code Analyzers
Three Interviews About Static Code Analyzers
 
Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0
 
Points.com fisheye crucible code reviews 2011
Points.com fisheye crucible code reviews 2011Points.com fisheye crucible code reviews 2011
Points.com fisheye crucible code reviews 2011
 
Ph.D. Thesis Defense: Studying Reviewer Selection and Involvement in Modern ...
Ph.D. Thesis Defense:  Studying Reviewer Selection and Involvement in Modern ...Ph.D. Thesis Defense:  Studying Reviewer Selection and Involvement in Modern ...
Ph.D. Thesis Defense: Studying Reviewer Selection and Involvement in Modern ...
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
 
Software Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for Software EngineeringSoftware Analytics: Data Analytics for Software Engineering
Software Analytics: Data Analytics for Software Engineering
 
DevOps & Security: Here & Now
DevOps & Security: Here & NowDevOps & Security: Here & Now
DevOps & Security: Here & Now
 
How's it Going?
How's it Going?How's it Going?
How's it Going?
 
Genetic Malware
Genetic MalwareGenetic Malware
Genetic Malware
 
Genetic Malware
Genetic MalwareGenetic Malware
Genetic Malware
 
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald BelchamGetting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
Getting Ahead of Delivery Issues with Deep SDLC Analysis by Donald Belcham
 
Software Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecuritySoftware Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and Security
 
My life as a cyborg
My life as a cyborg My life as a cyborg
My life as a cyborg
 
How to improve the quality of your application
How to improve the quality of your applicationHow to improve the quality of your application
How to improve the quality of your application
 
Dev opsandsecurity owasp
Dev opsandsecurity owaspDev opsandsecurity owasp
Dev opsandsecurity owasp
 
Current state of Jenkins
Current state of JenkinsCurrent state of Jenkins
Current state of Jenkins
 
Case study
Case studyCase study
Case study
 
Load-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.ioLoad-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.io
 

More from SAIL_QU

Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...
SAIL_QU
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
SAIL_QU
 
Improving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load testsImproving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load tests
SAIL_QU
 
Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...
SAIL_QU
 
Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...
SAIL_QU
 
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
SAIL_QU
 
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
SAIL_QU
 
Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...
SAIL_QU
 
Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?
SAIL_QU
 
Towards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log ChangesTowards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log Changes
SAIL_QU
 
The Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution AnalysesThe Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution Analyses
SAIL_QU
 
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
SAIL_QU
 
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
SAIL_QU
 
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
SAIL_QU
 
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
SAIL_QU
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
SAIL_QU
 
What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?
SAIL_QU
 
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
SAIL_QU
 
Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...
SAIL_QU
 
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with ProfessionalsMeasuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
SAIL_QU
 

More from SAIL_QU (20)

Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...Studying the Integration Practices and the Evolution of Ad Libraries in the G...
Studying the Integration Practices and the Evolution of Ad Libraries in the G...
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
 
Improving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load testsImproving the testing efficiency of selenium-based load tests
Improving the testing efficiency of selenium-based load tests
 
Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...Studying User-Developer Interactions Through the Distribution and Reviewing M...
Studying User-Developer Interactions Through the Distribution and Reviewing M...
 
Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...Studying online distribution platforms for games through the mining of data f...
Studying online distribution platforms for games through the mining of data f...
 
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
Understanding the Factors for Fast Answers in Technical Q&A Websites: An Empi...
 
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
Investigating the Challenges in Selenium Usage and Improving the Testing Effi...
 
Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...Mining Development Knowledge to Understand and Support Software Logging Pract...
Mining Development Knowledge to Understand and Support Software Logging Pract...
 
Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?Which Log Level Should Developers Choose For a New Logging Statement?
Which Log Level Should Developers Choose For a New Logging Statement?
 
Towards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log ChangesTowards Just-in-Time Suggestions for Log Changes
Towards Just-in-Time Suggestions for Log Changes
 
The Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution AnalysesThe Impact of Task Granularity on Co-evolution Analyses
The Impact of Task Granularity on Co-evolution Analyses
 
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
A Framework for Evaluating the Results of the SZZ Approach for Identifying Bu...
 
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
How are Discussions Associated with Bug Reworking? An Empirical Study on Open...
 
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
A Study of the Relation of Mobile Device Attributes with the User-Perceived Q...
 
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
A Large-Scale Study of the Impact of Feature Selection Techniques on Defect C...
 
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...Studying the Dialogue Between Users and Developers of Free Apps in the Google...
Studying the Dialogue Between Users and Developers of Free Apps in the Google...
 
What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?What Do Programmers Know about Software Energy Consumption?
What Do Programmers Know about Software Energy Consumption?
 
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
 
Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...Revisiting the Experimental Design Choices for Approaches for the Automated R...
Revisiting the Experimental Design Choices for Approaches for the Automated R...
 
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with ProfessionalsMeasuring Program Comprehension: A Large-Scale Field Study with Professionals
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
 

Presentationpick 150517080804-lva1-app6892

  • 1. Investigating Code Review Practices in Defective Files Patanamon (Pick) Thongtanunam Shane McIntosh Ahmed E. Hassan Hajimu Iida May 16-17, 2015. Firenze, Italy patanamon-t@is.naist.jp @pamon
  • 2. Modern Code Review: A lightweight, tool-supported code review process Code Review Tool
  • 3. Modern Code Review: A lightweight, tool-supported code review process Code Review Tool Code change
  • 4. Modern Code Review: A lightweight, tool-supported code review process Code Review Tool Code change
  • 5. Modern Code Review: A lightweight, tool-supported code review process Code Review Tool Code change Examine Code
  • 6. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code Review Tool Code change Examine Code
  • 7. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change Examine Code
  • 8. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change How should reviewers do a code review to reduce the risk of having defects? Examine Code
  • 9. What is the difference between code review practices of defective and clean files?
  • 10. What is the difference between code review practices of defective and clean files? Review Practice A Defective i.e., files that have defects
  • 11. Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects
  • 12. Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects
  • 13. We measure 3 dimensions of review activity metrics Review Intensity e.g., #Review Iterations, Discussion Length Review Participation e.g., #Reviewers, 
 Review Agreement Reviewing Time e.g., Review Length, Code Reading Speed
  • 14. Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects
  • 15. Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects
  • 16. Defective i.e., files that have defects We investigate defective files along 2 perspectives
  • 17. Defective i.e., files that have defects We investigate defective files along 2 perspectives
  • 18. Risky Files Files that have historically been defective Past Defective i.e., files that have defects We investigate defective files along 2 perspectives
  • 19. Risky Files Files that have historically been defective Past FutureDefective i.e., files that have defects Future-Defective Files Files that will eventually have defects We investigate defective files along 2 perspectives
  • 20. Risky Files Files that have historically been defective Past FutureDefective i.e., files that have defectsFuture-Defective Files Files that will eventually have defects Conjecture: Reviews of Future- Defective will be • less intense, • with less team participation, • completed with a shorter time than reviews of clean files We investigate defective files along 2 perspectives
  • 21. Future-Defective Files: Files that have post-release defects VCS Repositories
  • 22. Future-Defective Files: Files that have post-release defects VCS Repositories Release date Bug-fixing commit
  • 23. Future-Defective Files: Files that have post-release defects VCS Repositories Release date Bug-fixing commit Future-Defective
  • 24. Future-Defective Files: Files that have post-release defects VCS Repositories Release date No bug-fixing commits Release date Bug-fixing commit Future-Defective
  • 25. Future-Defective Files: Files that have post-release defects VCS Repositories Release date No bug-fixing commits Release date Bug-fixing commit Future-Defective Clean
  • 26. Future-Defective Files: Files that have post-release defects Studied ReviewsVCS Repositories Release date No bug-fixing commits Release date Bug-fixing commit 6 months Future-Defective Clean
  • 27. Future-Defective Files: Files that have post-release defects Studied ReviewsVCS Repositories Release date No bug-fixing commits Release date Bug-fixing commit 6 months 1,176 Files 3,470 Reviews 10,513 Files 2,727 Reviews 5.0.0 866 Files 2,849 Reviews 11,931 Files 2,690 Reviews 5.1.0 Future-Defective Clean
  • 28. #Reviewers #Reviews of Clean files #Reviewers #Reviews of Future-Defective files VS Review Activity Analysis: Compare code review activity that has been applied to future-defective and clean files
  • 29. #Reviewers #Reviews of Clean files #Reviewers #Reviews of Future-Defective files VS Using a statistical test to determine the difference between the distributions of code review activity Review Activity Analysis: Compare code review activity that has been applied to future-defective and clean files
  • 30. #Reviewers #Reviews of Clean files #Reviewers #Reviews of Future-Defective files VS Using a statistical test to determine the difference between the distributions of code review activity Raw code review activity metric is normalized by patch size Review Activity Analysis: Compare code review activity that has been applied to future-defective and clean files
  • 31. Findings Code review activity in the reviews of future-defective files Conjecture Results Review Intensity Review Participation Reviewing Time Less Intense Less Team Participation Completed with a shorter time
  • 32. Findings Code review activity in the reviews of future-defective files Conjecture Less Intense Results Review Intensity Review Participation Reviewing Time Less Intense Less Team Participation Completed with a shorter time
  • 33. Findings Code review activity in the reviews of future-defective files Conjecture Less Intense Less Team Participation Results Review Intensity Review Participation Reviewing Time Less Intense Less Team Participation Completed with a shorter time
  • 34. Findings Code review activity in the reviews of future-defective files Conjecture Less Intense Less Team Participation Faster Code Reading Rate Results Review Intensity Review Participation Reviewing Time Less Intense Less Team Participation Completed with a shorter time
  • 35. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Risky Files Files that have historically been defective FutureFuture-Defective Files Files that will eventually have defects Conjecture: Reviews of Future- Defective will be • less intense, • with less team participation, • completed with a shorter time than reviews of clean files
  • 36. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Risky Files Files that have historically been defective FutureFuture-Defective Files Files that will eventually have defects Reviews of future-defective files tend to be less rigorous than reviews of clean files
  • 37. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Risky Files Files that have historically been defective FutureFuture-Defective Files Files that will eventually have defects Reviews of future-defective files tend to be less rigorous than reviews of clean files
  • 38. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Risky Files Files that have historically been defective Conjecture: Reviews of risky files should be • more intense, • with more team participation, • reviewed for a longer time to reduce the risk of having defects in the future FutureFuture-Defective Files Files that will eventually have defects Reviews of future-defective files tend to be less rigorous than reviews of clean files
  • 39. Risky Files: Files that had post-release defects
 in prior release VCS Repositories
  • 40. Risky Files: Files that had post-release defects
 in prior release VCS Repositories Release date Prior release date Bug-fixing commit
  • 41. Risky Files: Files that had post-release defects
 in prior release VCS Repositories Release date Prior release date Bug-fixing commit Risky
  • 42. Risky Files: Files that had post-release defects
 in prior release VCS Repositories No bug-fixing commits Release date Prior release date Release date Prior release date Bug-fixing commit Risky
  • 43. Risky Files: Files that had post-release defects
 in prior release VCS Repositories No bug-fixing commits Release date Prior release date Release date Prior release date Bug-fixing commit Normal Risky
  • 44. Risky Files: Files that had post-release defects
 in prior release Studied ReviewsVCS Repositories No bug-fixing commits Release date Prior release date Release date Prior release date Bug-fixing commit 6 months Normal Risky
  • 45. Risky Files: Files that had post-release defects
 in prior release Studied ReviewsVCS Repositories No bug-fixing commits Release date Prior release date Release date Prior release date Bug-fixing commit 6 months 1,168 Files 2,671 Reviews 11,629 Files 2,868 Reviews 5.1.0 Normal Risky
  • 46. Findings Code review activity in the reviews of risky files Conjecture Results Review Intensity Review Participation Reviewing Time More Intense More Team Participation Completed with a longer time
  • 47. Findings Code review activity in the reviews of risky files Conjecture Less Intense Results Review Intensity Review Participation Reviewing Time More Intense More Team Participation Completed with a longer time
  • 48. Findings Code review activity in the reviews of risky files Conjecture Less Intense Less Team Participation Results Review Intensity Review Participation Reviewing Time More Intense More Team Participation Completed with a longer time
  • 49. Findings Code review activity in the reviews of risky files Conjecture Less Intense Less Team Participation Receive Slow Feedback & Faster Code Reading Rate Results Review Intensity Review Participation Reviewing Time More Intense More Team Participation Completed with a longer time
  • 50. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives FutureFuture-Defective Files Files that will eventually have defects Reviews of future-defective files tend to be less rigorous than reviews of clean files Risky Files Files that have historically been defective Conjecture: Reviews of risky files should be • more intense, • with more team participation, • reviewed for a longer time to reduce the risk of having defects in the future
  • 51. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives FutureFuture-Defective Files Files that will eventually have defects Reviews of future-defective files tend to be less rigorous than reviews of clean files Risky Files Files that have historically been defective Developers are not as careful when they review risky files.
  • 52. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective
  • 53. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective Will careless reviews of risky files lead to future defects?
  • 54. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective Will careless reviews of risky files lead to future defects? Investigating code review practice in risky & future- defective files
  • 55. Risky & Future-Defective Files: Risky files that will eventually have defects VCS Repositories
  • 56. Risky & Future-Defective Files: Risky files that will eventually have defects VCS Repositories Bug-fixing commit Release date Prior release date Bug-fixing commit
  • 57. Risky & Future-Defective Files: Risky files that will eventually have defects VCS Repositories Bug-fixing commit Release date Prior release date Bug-fixing commit Risky & Future-Defective
  • 58. Risky & Future-Defective Files: Risky files that will eventually have defects VCS Repositories Bug-fixing commit Release date Prior release date Bug-fixing commit No bug-fixing commits Release datePrior release date Bug-fixing commit Risky & Future-Defective
  • 59. Risky & Future-Defective Files: Risky files that will eventually have defects VCS Repositories Bug-fixing commit Release date Prior release date Bug-fixing commit No bug-fixing commits Release datePrior release date Bug-fixing commit Risky & Clean Risky & Future-Defective
  • 60. Risky & Future-Defective Files: Risky files that will eventually have defects Studied Reviews VCS Repositories Bug-fixing commit Release date Prior release date Bug-fixing commit No bug-fixing commits Release datePrior release date Bug-fixing commit 6 months Risky & Clean Risky & Future-Defective
  • 61. Risky & Future-Defective Files: Risky files that will eventually have defects Studied Reviews VCS Repositories Bug-fixing commit Release date Prior release date Bug-fixing commit No bug-fixing commits Release datePrior release date Bug-fixing commit 6 months 206 Files 1,299 Reviews 962 Files 1,372 Reviews 5.1.0 Risky & Clean Risky & Future-Defective
  • 62. Findings Code review activity in the reviews of risky & future-defective files Conjecture Less Intense Less Team Participation Receive Slow Feedback & Faster Code Reading Rate Results Review Intensity Review Participation Reviewing Time Less Intense Less Team Participation Completed with a shorter time
  • 63. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective Will careless reviews of risky files lead to future defects? Investigating code review practice in risky & future- defective files
  • 64. Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective Reviews of files that are both risky & future defective are less rigorous than files that are risky but clean
  • 65. Evolvability e.g., Fixing code comments,
 Decomposing complex function Functionality e.g., Fixing incorrect 
 program logic Traceability e.g., Updating commit message We compare concerns that are addressed during reviews of defective and clean files
  • 66. Evolvability Functionality Traceability Proportion of reviews in future-defective files in Qt5.0.0 82% 40%40% Reviews of defective files often address evolvability concernsResults 10% higher than clean files 5% higher than clean files 10% lower than clean files We observe the similar results for the reviews of risky files and risky & future-defective files
  • 67.
  • 68. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change How should reviewers do a code review to reduce the risk of having defects? Examine Code
  • 69. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change How should reviewers do a code review to reduce the risk of having defects? Examine Code Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects
  • 70. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change How should reviewers do a code review to reduce the risk of having defects? Examine Code Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects We measure 3 dimensions of review activity metrics Review Intensity e.g., #Review Iterations, Discussion Length Review Participation e.g., #Reviewers, 
 Review Agreement Reviewing Time e.g., Review Length, Code Reading Speed
  • 71. Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change How should reviewers do a code review to reduce the risk of having defects? Examine Code Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects We measure 3 dimensions of review activity metrics Review Intensity e.g., #Review Iterations, Discussion Length Review Participation e.g., #Reviewers, 
 Review Agreement Reviewing Time e.g., Review Length, Code Reading Speed Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective Reviews of files that are both risky & future defective are less rigorous than files that are risky but clean
  • 72. Defect-free (Clean) i.e., files that do not have defects Review Practice B What is the difference between code review practices of defective and clean files? Review Practice A VS Defective i.e., files that have defects We measure 3 dimensions of review activity metrics Review Intensity e.g., #Review Iterations, Discussion Length Review Participation e.g., #Reviewers, 
 Review Agreement Reviewing Time e.g., Review Length, Code Reading Speed Defective i.e., files that have defects Past We investigate defective files along 2 perspectives Future Reviews of future-defective files tend to be less rigorous than reviews of clean files Developers are not as careful when they review risky files. Future-Defective Files Files that will eventually have defects Risky Files Files that have historically been defective Reviews of files that are both risky & future defective are less rigorous than files that are risky but cleanpatanamon-t@is.naist.jp @pamon Investigating Code Review Practices in Defective Files Modern Code Review: A lightweight, tool-supported code review process Upstream VCS repositories Code change A lack of code review activity can increase the risk of post-release defects 
 [McIntosh et. al., MSR2014] My code is awesome! No needs for a review Code Review Tool Code change How should reviewers do a code review to reduce the risk of having defects? Examine Code