Which level of Static Analysis allows specific rules that apply to a program to be checked ?

Which level of Static Analysis allows specific rules that apply to a program to be checked ?

A. Characteristic error checking
B. User-defined error checking
C. Assertion checking
D. All of the mentioned

Explanation: Users of a programming language define error patterns, thus extending the types of error that can be detected.