Upload
lqi
View
3.125
Download
3
Embed Size (px)
DESCRIPTION
Presentation slides used for my master's thesis defense on the topic of OCLInt, a static code analysis tool for Objective-C and related languages.
Citation preview
A Static Code Analysis Tool ForObjective-C and Related Languages
Longyi Qi
April 2012
1
Advisor: Dr. Venkat Subramaniam
2
* Image in this slide: Spinellis, D. Code Quality: The Open Source Perspective. (2006). Indianapolis, IN: Addison-Wesley Professional
Outline
• Motivation
• Related Work
• Open Problems• OCLint and What’s Good
• How OCLint Can Help
• Conclusion and Future Work
3
Motivation
4* Image in this slide: Copyright © 2010 Apple Inc.
Related Work
5
Open Problems
• The Objective-C programming language
• Care about code quality
• Continuous Integration
6
Theory Study
• Static Code Analysis Process
• Abstract Syntax Tree (AST)
• Analysis Techniques– Control Flow Analysis– Data Flow Analysis– Dependence Analysis
• Code Smells
7
OCLint
8
Workflow
9
Good Architecture
10
Dynamically Loading Rules
• Dynamic libraries
• Rule search path
11
Configuring & Extending Rules
• Alter thresholds
• Custom rules
12
Smart AST Traversing
• AST is traversed only once and dispatch each node to registered rules
• Intelligent traverse policy
13
High Accuracy and Low False Positive Rate
14
Report
• Support multiple output format
• Meaningful violation message
• As continuous integration artifacts
15
OCLint
• Good architecture
• Dynamically loading rules
• Configuring and extending rules• Smart AST traversing
• High accuracy and low false positive rate
• Report
16
OCLint helps
• Find code smells
• Refactor the code
• Find problems early• Add customer rules if needed
• Integrate into developers’ workflow
17
Conclusion
• A static code analysis tool for Objective-C
• Focus on code quality
• Involve many analysis techniques• Good design
• Positive case study feedback
• Research infrastructure
18
Future Work
• Accuracy and False Positives
• Better Code Quality
• Extended Rules• Compatibility
• Performance
• User Experiences
19
Acknowledgements
20
Questions?
21
Thank you!
Contact Information:•OCLint Project: http://oclint.org @oclint_project•Longyi Qi: http://longyiqi.com @longyiqi
22