Something I've wondered but never got around to asking - why is it called Static Analysis? Why not Dynamic Analysis, or Runtime Analysis, or something else?
Precisely because it's done without actually running the program. Dynamic analysis is where you do actually run the program.
It doesn't take place at runtime; that's kind of the point of the name. I suspect the static=compile time, dynamic=run time terminology comes from linking, in which context it makes more sense - the linkage of a "staticly linked" program really is static.
Precisely because it is not done at runtime not dynamically but statically: the goal is to verify properties of a given program without having to actually run it.
It doesn't analyse at runtime. It simulates certain runtime states but looks at the code at compile time. Since it analyses static code that is not changing, the term Static Analysis is used.