I'm trying to understand the definition of program analysis on Wikipedia:
Program analysis is the process of automatically analyzing the behavior of computer programs regarding a property such as correctness, robustness, safety and liveness.
What is the meaning of "automatic" here?
Are parsers static analysis tools, since they will throw an error if they encounter syntactically invalid code?
Is running a program an example of dynamic analysis, since it will provide me with an output (though I still have to interpret it myself)?
What if I explicitly throw a
this can't happen exception when the program reaches an invalid state?
What about using a debugger to pause execution?