60 likes | 68 Views
Discover the capabilities, limitations, and practical considerations of static analysis tools in software development. Learn about type checking, style checking, program verification, bug finding, and more.
E N D
Introduction to Static Analysis Chapter 2
Chapter Outline • Capabilities and Limitations of Static Analysis • Type checking • Style checking • Program understanding tools • Program verification • Bug finding • Some theory and implications
Capabilities and Limitations of SA • SA tools are thorough and consistent. • Examine the code itself, not the symptoms. • Find errors early in development, thereby cutting costs. • Easy to retool for new vulnerabilities. • Not perfect
Solving Problems with Static Analysis • Type Checking • Style Checking (lint, PMD) • Programming Understanding tools (fujaba) • Program Verification and Property Checking • Temporal safety properties – counterexamples • “sound with respect to the specifiication” • Bug finding (“bug idioms”) • Security Review
A little theory, a little reality • Reduction to halting problem • Itself undecidable • Practical Considerations • Making sense of the program • Tradeoffs (depth vs precision and depth • Right set of rules • Ease of use • Analyzing source vs analyzing compiled code (next slide)
Analyzing Source vs analyzing object code • Mainly disadavnatgeous: • Making sense of object code may be difficult if not impossible, specially with variable length instructions. • No type information • Difficult to produce reports in terms of source code.