L1 Flashcards
Program Analysis
automatically discover useful fact about the programs
3 kinds of analysis
dynamic (run-time)
static (compile-time)
hybrid
dynamic analysis
infers facts of the program by monitoring its run
purify
array bound checking
eraser
data race detection
valgrind
memory leak detection
daikon
finding likely invariants
static analysis
by inspecting its code. sacrifices completeness, but sounds
lint, findbugs, coverity
a suspicious error pattern
facebook infer
memory leak detection
microsoft slam
API usage rule
esc/java
verify invariants
discovering invariants
dynamic: finds what might be an invariant and what is definitely not an invariant
static: definitely is or is not an invariant
compiler
bridges the gap between high-level languages and architecture
use program analyses to generate efficient code
software quality tools
testing, debugging, and verification