SlideShare a Scribd company logo
1 of 24
Impact of Coding Style Checker on
Code Review
-A case study on the OpenStack
projects-
Yuki Ueda1, Akinori Ihara2,
Takashi Ishio1 , Kenichi Matsumoto1
1Nara Institute of Science and Technology
2Wakayama University
The 9th International Workshop on Empirical Software Engineering in Practice
Background Approach Results Future Work
Code review process:
Reviewer detect potential issues
Patch
author
ReviewerSubmit Project
2
Background
It can be better
- i=key
+ i=dic[“key”]
Review, Fix Request
Initial Patch
Background Approach Results Future Work
Code review process:
Reviewer detect potential issues
Patch
author
ReviewerSubmit Project
OK!
Integrate
- i=key
+ i=dic[“key”]
Review, Fix Request
- i=key
+ i_=_dic.get(“key”)
Initial Patch Integrated Patch
3
Background
Background Approach Results Future Work
Code improvement is important [1]
[1] Alberto Bacchelli and Christian Bird. Expectations, outcomes, and challenges
of modern code review. In Proc. ICSE’13, pp. 712–721
4
Background
Background Approach Results Future Work
Problem:
Reviewers need check several times
Patch
author
ReviewerSubmit Project
Integrate
- i=key
+ i=dic[“key”]
5
Background
- i=key
+ i_=_dic.get(“key”)
Integrated PatchInitial Patch
Review, Fix Coding Style
Review, Fix Coding Style
Review, Fix Coding Style
Background Approach Results Future Work
Coding style checkers are used to reduce
the review cost
6
Background
Patch
author
ReviewerChecker Fix Fix
ADI (Automatically Detected Issues)
MDI (Manually Detected Issues)
Background Approach Results Future Work
Coding style checkers detect style issues
automatically
FOO=0
print(“var =_” + var)
foo_=_0
print(“var =”, var)
7
Invalid name
Format for string
Space deficiency
Background
ADI (Automatically Detected Issues)
Example of pylint on python
Other tool: ESlint, Pmd, checkstyle
Background Approach Results Future Work
Goal:
Understand the impact of adopting
checkers to patch authors style
8
Background
i=dic[“key”]
i_=_dic[“key”]
Patch
author
ReviewerSubmit Fix Fix
i_=_dic.get(“key”)
Checker
Background Approach Results Future Work
Hypothesis: Patch authors avoid
ADI/MDI before submitting to the review
i=dic[“key”]
9
Patch
author
ReviewerSubmit Checker Fix Fix
Approach
ADI (Automatically Detected Issues)
MDI (Manually Detected Issues)
[Filtered to only fix of small size changes]
i_=_dic[“key”]
i_=_dic.get(“key”)
Background Approach Results Future Work
Classify MDIs by changed tokens
10
Patch
author
ReviewerSubmit Fix Fix
MDI (Manually Detected Issues)
Approach
print(“String”) if (i == 0){
StringAlphabet Number
if (i == 0){
i␣=␣dic.get(“key”)
Checker
Background Approach Results Future Work
Approach: How often do the patch authors
repeatedly introduce ADIs/MDIs in future patch
submissions?
i=dic[“key”]
i_=_dic[“key”]
11
Patch
author
ReviewerSubmit Fix Fix
i_=_dic.get(“key”)
ADI (Automatically Detected Issues)
MDI (Manually Detected Issues)
Approach
i=dic[“key”]
……
Count Target
Checker
Background Approach Results Future Work
- i=key
+ i=dic[“key”]
- i=key
+ i=dic.get(“key”)
- i=dic[“key”]
+ i=dic.get(“key”)
12
Patch author ReviewerSubmit Project
Integrate
Review, Fix Request
Approach
Diff of initial and
Integrated patches
Detected ADI/MDI
ADI/MDI count by
each patch author
Initial Patch Integrated Patch
Background Approach Results Future Work
13
- FOO = 0
+ foo = 0
………
- bar = 0
+ bar = 1
- FOO = 0
+ foo = 0
ADI Count
Invalid-
name
1
Approach
Run checker Count
Diff of initial and
Integrated patches
Detected ADI/MDI
ADI/MDI count by
each patch author
Background Approach Results Future Work
14
- FOO = 0
+ foo = 0
………
- bar = 0
+ bar = 1
- FOO
+ foo
- 0
+ 1
Alphabet
Number
MDI Count
Alphabet 1
Number 1
- FOO = 0
+ foo = 0
ADI Count
Invalid-
name
1
Approach
Diff of initial and
Integrated patches
Detected ADI/MDI
ADI/MDI count by
each patch author
Identify
token type
Count
Background Approach Results Future Work
15
Diff of initial and
Integrated patches
Detected ADI/MDI
ADI/MDI count by
each patch author
Approach
MDI Count
Alphabet 5
Number 1Author A
A B C
AlphabetCount
MDI Count
Alphabet 2
String 2Author B
MDI Count
Alphabet 3
Space 4Author B
Background Approach Results Future Work
Target Dataset
Project OpenStack
Language Python3
Time-period 2011-2015
# Patches 228,099
# Patch authors 6,575
Coding Style Checker Pylint
16
Approach
Background Approach Results Future Work
Frequently fixed ADIs
unused-argument
invalid-name
bad-continuation
- FOO = 0
- cmelCase = 1
+ foo = 0
+ snake_case = 1
if foo > 0 and
- foo < 1:
if foo > 0 and
+ ___foo < 1:
17
def foo(x, y):
- return x
def foo(x, y):
+ return x + y
Results
Background Approach Results Future Work
Coding style checker are effective for
improving patch authors’ coding style
18
# of
Introduced
each author
ADI (%) MDI (%)
invalid-
name
bad-
continuation
alphabet strings
1 36.6 44.9 8.7 9.5
2 21.0 22.2 9.3 10.1
3 11.9 11.4 7.3 7.7
4 7.2 5.7 5.9 6.3
5 5.0 4.4 5.1 5.4
>5 18.3 11.5 63.7 61.0
Results
The ratio (%) of patch authors who introduced each of ADIs/MDIs n times
Background Approach Results Future Work
Coding style checker are effective for
improving patch authors’ coding style
19
# of
Introduced
each author
ADI (%) MDI (%)
invalid-
name
bad-
continuation
alphabet strings
1 36.6 44.9 8.7 9.5
2 21.0 22.2 9.3 10.1
3 11.9 11.4 7.3 7.7
4 7.2 5.7 5.9 6.3
5 5.0 4.4 5.1 5.4
>5 18.3 11.5 63.7 61.0
Most patch authors will not introduce same ADI
more than 3 times
Results
The ratio (%) of patch authors who introduced each of ADIs/MDIs n times
Background Approach Results Future Work
Coding style checker are effective for
improving patch authors’ coding style
20
# of
Introduced
each author
ADI (%) MDI (%)
invalid-
name
bad-
continuation
alphabet strings
1 36.6 44.9 8.7 9.5
2 21.0 22.2 9.3 10.1
3 11.9 11.4 7.3 7.7
4 7.2 5.7 5.9 6.3
5 5.0 4.4 5.1 5.4
>5 18.3 11.5 63.7 61.0
Code reviewers should carefully verify issues that
can not be detected automatically
Results
The ratio (%) of patch authors who introduced each of ADIs/MDIs n times
Background Approach Results Future Work
Impact:
Automation of MDIs will reduce
the review cost
21
Patch
author
ReviewerChecker Fix Fix
Review, Fix Coding Style
Review, Fix Coding Style
Review, Fix Coding Style
Results
Background Approach Results Future Work
Patterns of MDIs
- i=dic[“key”] + i=dic.get(“key”)
Why fixed?:To avoid ”KeyError” and get “None” value
- assertEqual(x,None)
Why fixed?:To make it works with python custom class
+ assertIsNone(x)
22
Future Work
Some MDIs can be automatically fixed
based on patterns
Background Approach Results Future Work
Future review process
Patch
author
Submit Project
Integrate
- i=key
+ i=dic[“key”]
23
- i=key
+ i_=_dic.get(“key”)
Integrated PatchInitial Patch
Review, Fix Coding Style
Checker
Future Work
Background Approach Results Future Work
24📩ueda.yuki.un7@is.naist.jp

More Related Content

What's hot

Leveraging HPC Resources to Improve the Experimental Design of Software Analy...
Leveraging HPC Resources to Improve the Experimental Design of Software Analy...Leveraging HPC Resources to Improve the Experimental Design of Software Analy...
Leveraging HPC Resources to Improve the Experimental Design of Software Analy...Chakkrit (Kla) Tantithamthavorn
 
Presentation slides: "How to get 100% code coverage"
Presentation slides: "How to get 100% code coverage" Presentation slides: "How to get 100% code coverage"
Presentation slides: "How to get 100% code coverage" Rapita Systems Ltd
 
Do you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well plannedDo you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well plannedJosé San Román A. de Lara
 
Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Sung Kim
 
Software testing lab manual
Software testing lab manualSoftware testing lab manual
Software testing lab manualTanzeem Syed
 
Www.istqb.guru istqb question-paper5
Www.istqb.guru istqb question-paper5Www.istqb.guru istqb question-paper5
Www.istqb.guru istqb question-paper5Tomas Vileikis
 
Developer + tester = quality++
Developer + tester = quality++Developer + tester = quality++
Developer + tester = quality++Mikalai Alimenkou
 
Personalized Defect Prediction
Personalized Defect PredictionPersonalized Defect Prediction
Personalized Defect PredictionSung Kim
 
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Shinpei Hayashi
 
Istqb question-paper-dump-2
Istqb question-paper-dump-2Istqb question-paper-dump-2
Istqb question-paper-dump-2TestingGeeks
 
Generate Test Cases for GCC Compilers (ASE-LBR 2019)
Generate Test Cases for GCC Compilers (ASE-LBR 2019)Generate Test Cases for GCC Compilers (ASE-LBR 2019)
Generate Test Cases for GCC Compilers (ASE-LBR 2019)Rafiqul Rabin
 
Software testing
Software testingSoftware testing
Software testingprasad g
 
Testing Neural Program Analyzers (ASE-LBR 2019)
Testing Neural Program Analyzers (ASE-LBR 2019)Testing Neural Program Analyzers (ASE-LBR 2019)
Testing Neural Program Analyzers (ASE-LBR 2019)Rafiqul Rabin
 

What's hot (19)

Leveraging HPC Resources to Improve the Experimental Design of Software Analy...
Leveraging HPC Resources to Improve the Experimental Design of Software Analy...Leveraging HPC Resources to Improve the Experimental Design of Software Analy...
Leveraging HPC Resources to Improve the Experimental Design of Software Analy...
 
Presentation slides: "How to get 100% code coverage"
Presentation slides: "How to get 100% code coverage" Presentation slides: "How to get 100% code coverage"
Presentation slides: "How to get 100% code coverage"
 
Do you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well plannedDo you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well planned
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Thinking in software testing
Thinking in software testingThinking in software testing
Thinking in software testing
 
Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)
 
Software testing lab manual
Software testing lab manualSoftware testing lab manual
Software testing lab manual
 
Www.istqb.guru istqb question-paper5
Www.istqb.guru istqb question-paper5Www.istqb.guru istqb question-paper5
Www.istqb.guru istqb question-paper5
 
Block 1 ms-034 unit-1
Block 1 ms-034 unit-1Block 1 ms-034 unit-1
Block 1 ms-034 unit-1
 
Developer + tester = quality++
Developer + tester = quality++Developer + tester = quality++
Developer + tester = quality++
 
Personalized Defect Prediction
Personalized Defect PredictionPersonalized Defect Prediction
Personalized Defect Prediction
 
312 50-demo
312 50-demo312 50-demo
312 50-demo
 
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
 
Istqb question-paper-dump-2
Istqb question-paper-dump-2Istqb question-paper-dump-2
Istqb question-paper-dump-2
 
FEB-08 ISTQB PAPER
FEB-08 ISTQB PAPERFEB-08 ISTQB PAPER
FEB-08 ISTQB PAPER
 
Generate Test Cases for GCC Compilers (ASE-LBR 2019)
Generate Test Cases for GCC Compilers (ASE-LBR 2019)Generate Test Cases for GCC Compilers (ASE-LBR 2019)
Generate Test Cases for GCC Compilers (ASE-LBR 2019)
 
Software testing
Software testingSoftware testing
Software testing
 
AUG-17 (2013) ISTQB PAPER
AUG-17 (2013) ISTQB PAPERAUG-17 (2013) ISTQB PAPER
AUG-17 (2013) ISTQB PAPER
 
Testing Neural Program Analyzers (ASE-LBR 2019)
Testing Neural Program Analyzers (ASE-LBR 2019)Testing Neural Program Analyzers (ASE-LBR 2019)
Testing Neural Program Analyzers (ASE-LBR 2019)
 

Similar to Impact of Coding Style Checker on Code Review -A case study on the OpenStack projects-

Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
Wait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debtWait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debtRungrojMaipradit1
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review Works奈良先端大 情報科学研究科
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksYuki Ueda
 
Devry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menuDevry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menunoahjamessss
 
Devry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menuDevry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menucskvsmi44
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategiesRaquel Pau
 
Week 2PRG 218 Variables and Input and Output OperationsWrite.docx
Week 2PRG 218   Variables and Input and Output OperationsWrite.docxWeek 2PRG 218   Variables and Input and Output OperationsWrite.docx
Week 2PRG 218 Variables and Input and Output OperationsWrite.docxmelbruce90096
 
Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Sebastiano Panichella
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsMohamed Samy
 
estimation(Risk).ppt
estimation(Risk).pptestimation(Risk).ppt
estimation(Risk).pptJmsshivRam1
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationBoris Dominic
 

Similar to Impact of Coding Style Checker on Code Review -A case study on the OpenStack projects- (20)

Test-Driven Code Review: An Empirical Study
Test-Driven Code Review: An Empirical StudyTest-Driven Code Review: An Empirical Study
Test-Driven Code Review: An Empirical Study
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
Wait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debtWait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debt
 
Spi Cost Roi
Spi Cost RoiSpi Cost Roi
Spi Cost Roi
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review Works
 
Mining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review WorksMining Source Code Improvement Patterns from Similar Code Review Works
Mining Source Code Improvement Patterns from Similar Code Review Works
 
Devry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menuDevry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menu
 
Devry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menuDevry cis-170-c-i lab-6-of-7-menu
Devry cis-170-c-i lab-6-of-7-menu
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 
Week 2PRG 218 Variables and Input and Output OperationsWrite.docx
Week 2PRG 218   Variables and Input and Output OperationsWrite.docxWeek 2PRG 218   Variables and Input and Output OperationsWrite.docx
Week 2PRG 218 Variables and Input and Output OperationsWrite.docx
 
Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?
 
Stacker's
Stacker'sStacker's
Stacker's
 
The Knowledgeable Software Engineer
The Knowledgeable Software EngineerThe Knowledgeable Software Engineer
The Knowledgeable Software Engineer
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
estimation(Risk).ppt
estimation(Risk).pptestimation(Risk).ppt
estimation(Risk).ppt
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Cocomomodel
CocomomodelCocomomodel
Cocomomodel
 
COCOMO Model
COCOMO ModelCOCOMO Model
COCOMO Model
 
Cocomo model
Cocomo modelCocomo model
Cocomo model
 

Recently uploaded

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 

Recently uploaded (20)

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 

Impact of Coding Style Checker on Code Review -A case study on the OpenStack projects-

  • 1. Impact of Coding Style Checker on Code Review -A case study on the OpenStack projects- Yuki Ueda1, Akinori Ihara2, Takashi Ishio1 , Kenichi Matsumoto1 1Nara Institute of Science and Technology 2Wakayama University The 9th International Workshop on Empirical Software Engineering in Practice
  • 2. Background Approach Results Future Work Code review process: Reviewer detect potential issues Patch author ReviewerSubmit Project 2 Background It can be better - i=key + i=dic[“key”] Review, Fix Request Initial Patch
  • 3. Background Approach Results Future Work Code review process: Reviewer detect potential issues Patch author ReviewerSubmit Project OK! Integrate - i=key + i=dic[“key”] Review, Fix Request - i=key + i_=_dic.get(“key”) Initial Patch Integrated Patch 3 Background
  • 4. Background Approach Results Future Work Code improvement is important [1] [1] Alberto Bacchelli and Christian Bird. Expectations, outcomes, and challenges of modern code review. In Proc. ICSE’13, pp. 712–721 4 Background
  • 5. Background Approach Results Future Work Problem: Reviewers need check several times Patch author ReviewerSubmit Project Integrate - i=key + i=dic[“key”] 5 Background - i=key + i_=_dic.get(“key”) Integrated PatchInitial Patch Review, Fix Coding Style Review, Fix Coding Style Review, Fix Coding Style
  • 6. Background Approach Results Future Work Coding style checkers are used to reduce the review cost 6 Background Patch author ReviewerChecker Fix Fix ADI (Automatically Detected Issues) MDI (Manually Detected Issues)
  • 7. Background Approach Results Future Work Coding style checkers detect style issues automatically FOO=0 print(“var =_” + var) foo_=_0 print(“var =”, var) 7 Invalid name Format for string Space deficiency Background ADI (Automatically Detected Issues) Example of pylint on python Other tool: ESlint, Pmd, checkstyle
  • 8. Background Approach Results Future Work Goal: Understand the impact of adopting checkers to patch authors style 8 Background i=dic[“key”] i_=_dic[“key”] Patch author ReviewerSubmit Fix Fix i_=_dic.get(“key”) Checker
  • 9. Background Approach Results Future Work Hypothesis: Patch authors avoid ADI/MDI before submitting to the review i=dic[“key”] 9 Patch author ReviewerSubmit Checker Fix Fix Approach ADI (Automatically Detected Issues) MDI (Manually Detected Issues) [Filtered to only fix of small size changes] i_=_dic[“key”] i_=_dic.get(“key”)
  • 10. Background Approach Results Future Work Classify MDIs by changed tokens 10 Patch author ReviewerSubmit Fix Fix MDI (Manually Detected Issues) Approach print(“String”) if (i == 0){ StringAlphabet Number if (i == 0){ i␣=␣dic.get(“key”) Checker
  • 11. Background Approach Results Future Work Approach: How often do the patch authors repeatedly introduce ADIs/MDIs in future patch submissions? i=dic[“key”] i_=_dic[“key”] 11 Patch author ReviewerSubmit Fix Fix i_=_dic.get(“key”) ADI (Automatically Detected Issues) MDI (Manually Detected Issues) Approach i=dic[“key”] …… Count Target Checker
  • 12. Background Approach Results Future Work - i=key + i=dic[“key”] - i=key + i=dic.get(“key”) - i=dic[“key”] + i=dic.get(“key”) 12 Patch author ReviewerSubmit Project Integrate Review, Fix Request Approach Diff of initial and Integrated patches Detected ADI/MDI ADI/MDI count by each patch author Initial Patch Integrated Patch
  • 13. Background Approach Results Future Work 13 - FOO = 0 + foo = 0 ……… - bar = 0 + bar = 1 - FOO = 0 + foo = 0 ADI Count Invalid- name 1 Approach Run checker Count Diff of initial and Integrated patches Detected ADI/MDI ADI/MDI count by each patch author
  • 14. Background Approach Results Future Work 14 - FOO = 0 + foo = 0 ……… - bar = 0 + bar = 1 - FOO + foo - 0 + 1 Alphabet Number MDI Count Alphabet 1 Number 1 - FOO = 0 + foo = 0 ADI Count Invalid- name 1 Approach Diff of initial and Integrated patches Detected ADI/MDI ADI/MDI count by each patch author Identify token type Count
  • 15. Background Approach Results Future Work 15 Diff of initial and Integrated patches Detected ADI/MDI ADI/MDI count by each patch author Approach MDI Count Alphabet 5 Number 1Author A A B C AlphabetCount MDI Count Alphabet 2 String 2Author B MDI Count Alphabet 3 Space 4Author B
  • 16. Background Approach Results Future Work Target Dataset Project OpenStack Language Python3 Time-period 2011-2015 # Patches 228,099 # Patch authors 6,575 Coding Style Checker Pylint 16 Approach
  • 17. Background Approach Results Future Work Frequently fixed ADIs unused-argument invalid-name bad-continuation - FOO = 0 - cmelCase = 1 + foo = 0 + snake_case = 1 if foo > 0 and - foo < 1: if foo > 0 and + ___foo < 1: 17 def foo(x, y): - return x def foo(x, y): + return x + y Results
  • 18. Background Approach Results Future Work Coding style checker are effective for improving patch authors’ coding style 18 # of Introduced each author ADI (%) MDI (%) invalid- name bad- continuation alphabet strings 1 36.6 44.9 8.7 9.5 2 21.0 22.2 9.3 10.1 3 11.9 11.4 7.3 7.7 4 7.2 5.7 5.9 6.3 5 5.0 4.4 5.1 5.4 >5 18.3 11.5 63.7 61.0 Results The ratio (%) of patch authors who introduced each of ADIs/MDIs n times
  • 19. Background Approach Results Future Work Coding style checker are effective for improving patch authors’ coding style 19 # of Introduced each author ADI (%) MDI (%) invalid- name bad- continuation alphabet strings 1 36.6 44.9 8.7 9.5 2 21.0 22.2 9.3 10.1 3 11.9 11.4 7.3 7.7 4 7.2 5.7 5.9 6.3 5 5.0 4.4 5.1 5.4 >5 18.3 11.5 63.7 61.0 Most patch authors will not introduce same ADI more than 3 times Results The ratio (%) of patch authors who introduced each of ADIs/MDIs n times
  • 20. Background Approach Results Future Work Coding style checker are effective for improving patch authors’ coding style 20 # of Introduced each author ADI (%) MDI (%) invalid- name bad- continuation alphabet strings 1 36.6 44.9 8.7 9.5 2 21.0 22.2 9.3 10.1 3 11.9 11.4 7.3 7.7 4 7.2 5.7 5.9 6.3 5 5.0 4.4 5.1 5.4 >5 18.3 11.5 63.7 61.0 Code reviewers should carefully verify issues that can not be detected automatically Results The ratio (%) of patch authors who introduced each of ADIs/MDIs n times
  • 21. Background Approach Results Future Work Impact: Automation of MDIs will reduce the review cost 21 Patch author ReviewerChecker Fix Fix Review, Fix Coding Style Review, Fix Coding Style Review, Fix Coding Style Results
  • 22. Background Approach Results Future Work Patterns of MDIs - i=dic[“key”] + i=dic.get(“key”) Why fixed?:To avoid ”KeyError” and get “None” value - assertEqual(x,None) Why fixed?:To make it works with python custom class + assertIsNone(x) 22 Future Work Some MDIs can be automatically fixed based on patterns
  • 23. Background Approach Results Future Work Future review process Patch author Submit Project Integrate - i=key + i=dic[“key”] 23 - i=key + i_=_dic.get(“key”) Integrated PatchInitial Patch Review, Fix Coding Style Checker Future Work
  • 24. Background Approach Results Future Work 24📩ueda.yuki.un7@is.naist.jp

Editor's Notes

  1. Hello, I’m Yuki Ueda, a masters course student at Nara Institute of Science and Technology in Japan. Today, I’d like to talk about “Impact of Coding Style Checker on Code Review -A case study on the OpenStack projects-”. 
  2. In software development, many patch author submit source code change request, that is called patch. Especially, we defined first submitted patch as the initial patch However, code changes aren’t always merged into the repository, because a code reviewer may indicate issues with the code, such as bugs and code readability. Then, the reviewer gives change requests to the patch author, and the author will fix them.
  3. After fixing the patches several times, the patch may finally be merged into the repository. We defined this merged final path to integrated patch.
  4. As the research of review purpose, 39% of developers said code improvement is important We focus concrete source code are improved or not
  5. As the problem of this review process, when the reviewer needs to check the patches several times, reviewer take 6 hour per week. Because, patch author and reviewer can not detect all problem at once. As the problem, I show the review change example. In this example, left side of source code is not so bad. However, to fill the space, avoid small error, reviewer should fix them.
  6. To reduce code review cost, some projects are using coding style checker. That can find potential issue automatically. The code review process of coding style checker, we defined two potential issue kinds. First is ADI, it is short of manually detected issue by coding style checker. Second is MDI, it is short of manually detected issue by reviewer. What is about ADI/MDI rough As the problem of this review process, when the reviewer needs to check the patches several times, reviewer take 6 hour per week. Because, patch author and reviewer can not detect all problem at once. 検証と投稿を繰り返し, 最終的にレビューアがよいと判断した安全なソースコードがプロジェクトに統合されます この提案,再投稿のループにかかる時間的コストは開発作業の中で最も高く,レビューア一人あたりが週に6時間も費やします その原因としてあらかじめ開発者がどのようにソースコードを修正すればよいのかがわからないためです
  7. This is example of ADIs Left side python source has a three potential issue. We found other 100 adis from pylint
  8. In this study, to reduce the code review cost, we suggest automatic code changes.
  9. As our hypothesis, patch authors avoid adi/mdi before submitting to the review. It mearn checker and reviewers can improve patch authors’ coding style.
  10. In this research, we defined them as the 6 MDI category. For example they alphabet, string, number
  11. In this study, to reduce the code review cost, we suggest automatic code changes.
  12. To get How often do the patch authors repeatedly introduce ADIs/MDIs in future patch submissions, we have a three steps. First, In this study we target diff of first and integrated patches that changed through review
  13. Second, we detected ADI and MDIs. First, I explain about ADIs
  14. Next about MDIs, First we extracted changed character, and identify to type. Finally count
  15. Final process, we count ADI/MDI count by each patch author
  16. About our target project, it is openstack. This project
  17. We found seven frequently fixed ADIs. Today, I will introduce three ADIs. There are most freauently fixed ADIs, invalid-name, bad-continuation, unused-argument. As the causing This unused-argument has 2 solve way, first is just removing value of y, second is use value of y
  18. This show the main result. This table show the ratio (%) of patch authors who introduced each of ADIs/MDIs n times
  19. First about ADIs result, Most patch authors will not introduce same ADI more than 3 times. Not once, but 2 times is enough to careful patch author.
  20. coding style checker are effective for improving patch authors’ coding style. However, code reviewers should carefully verify issues that can not be detected automatically, no matter how many reviews they undergo. In right side, most patch author introduce same MDIs automatically.
  21. As the our research impact,
  22. MDIs are discussed on StackOverflow 既存のツールでは検出できない修正例としてはこれらが挙げられます. 例えば上の例は辞書へのアクセスに対してエラーを防ぐ目的があります 2つ目は可読性の向上とを目的としています 引数と合わせてNoneとequalであるという書き方よりもNoneであるという関数を利用することでわかりやすくしています これらはStackOverflowなどを調べると説明されている言語に詳しい開発者の経験を必要とする修正例です
  23. Finally, I summarize our research. To measure the impact of adopting coding style checkers to patch authors style, We counted how patch author repeatedly introduce same type of issue. As the result, automatically detected issues will not introduce by same author more than 3 times. I would appreciate if you could ask by slow English.