CSE599L: On the Design and Implementation of Static Analysis Tools
Instructor: Thomas Ball,
Microsoft Research
E-mail: \com\microsoft\tball
Course Time:Tues/Thurs 1030-1150
Course Location: CSE 303 (Allen Center)
Office Hours/Location: immediately after class (CSE 334)
March 27: Course Overview
March 29: Some Representative Static Analysis Tools
April 3: Automata and Temporal Safety
April 5: Pushdown Systems and Temporal Safety
April 10: Temporal Safety, Finally?
April 12: Typestate Verification
April 17: Dataflow analysis over finite domains
April 19: Interprocedural dataflow analysis over finite domains
April 24: Abstract Interpretation (i)
April 26: Abstract Interpretation (ii)
May 1: Engineering Abstractions (i)
May 3: Engineering Abstractions (ii)
May 8: Procedures and
Pointers (i)
May 10: Procedures and
Pointers (ii)Eight papers, summarized in one lecture (you don't
need to read them all!):
May 15: Floyd/Hoare Logic,
King's Symbolic Execution, Dijkstra's WP and Verification Conditions (i)
May 17:
Floyd/Hoare Logic, King's
Symbolic Execution, Dijkstra's WP and Verification Conditions (ii)
May 22: SAT Solvers
May 24: SMT Solvers
May 29: Tool
presentation/discussion
May 31: Tool
presentation/discussion
Other Potential Topics:
- Combining under- and over-approximation
- Automated abstraction refinement
- Shape analysis
- Specification inference
- Combining abstract interpretation and theorem proving
Tools/Infrastructure We Will be Evaluating (not necessarily in order)
- Tools:
- FindBugs: defect
detection for Java
-
Windows
Vista SDK: PREfast/SAL buffer overflow detection for C/C++
- FxCop: defect
detection for .NET assemblies
- Spec#:
verification for C# using specifications, verification conditions and
automated theorem proving
- CBMC,
Saturn: using SAT solvers for
defection detection for C
- BLAST: automated
abstraction refinement for C
- CQual/Oink:
type qualifiers for C/C++ polymorphic qualifier dataflow analysis
- Infrastructure:
- Apron: numerical
abstract domain library
- bddbddb: BDD-based
implementation of Datalog
- BANSHEE: constraint-based
analysis engine
- CIL:
infrastructure for C program analysis and transformation
- Phoenix:
Microsoft software optimization and analysis framework
Possible Project Ideas:
Create a Temporal Safety Checker for C
- Translate pLTL into a SPIN "never" claim (a safety automata) that Moped
can read
- Translate CIL CFG into Moped format or into bddbddb
- Extra credit: add Caret matching of call/returns.
Create User Documentation and Tutorial for bddbddb