This post will cover the options available when enabling static checking of your project, and a very basic overview of how static checking is achieved. Code contracts give us the ability to contractually define invariant conditions which must be meet during the lifetime of messaging between two pieces of code. What this means is when Object A calls a method on Object B, A agrees to ad hear to any contract requirements defined by B. To get compiler assistance for breaches of defined contracts, static checking must be enabled. First ensure that you have installed the code contract tools as per Part 1 of this series.