Skip to content

1. Course Introduction

1 PL and Static Analysis

image.png

2 Why We Need Static Analysis

  • Program Reliability
    • Null pointer dereference, memory leak, etc.
  • Program Security
    • Private information leak, injection attack, etc.
  • Compiler Optimization
    • Dead code elimination, code motion, etc.
  • Program Understanding
    • IDE call hierarchy, type indication, etc.

3 What is Static Analysis

image.png

4 Rice's Theorem

image.png

5 Sound and Complete

image.png image.png

5.1 Necessity of Soundness

image.png

6 Static Analysis - Bird's Eye View

image.png

7 Abstraction + Over-approximation

Two Words to Conclude Static Analysis

7.1 Example

image.png

7.2 Abstraction

image.png

7.3 Over-approximation: Transfer Functions

image.png image.png

7.3 Over-approximation: Control Flows

image.png