1Mono(cccheck) Mono(cccheck)
2
3
4
6 cccheck - Perform static code contracts verification for CLR assem‐
7 blies.
8
10 cccheck --assembly=<assembly> [options]
11
13 Perform static code contracts verification to find bugs and inconsis‐
14 tencies between code and specification. This includes non-null, integer
15 analyses.
16
17 The assembly must have been built with the symbol CONTRACTS_FULL
18 defined, otherwise the calls to the contract methods will have been
19 removed by the compiler.
20
21 Currently only Contract.Assume() and Contract.Assert() methods are sup‐
22 ported. Only non-null analysis is supported, the consecutive analyses
23 are in development. An error message will be shown if cccheck is unable
24 to process all or some of the methods of specified assembly.
25
27 --assembly <assembly-name>
28 The assembly to perform static verification.
29
30 --debug
31 Shows debug information about process of proving the assertions.
32 It shows four layers of abstraction, raw layer, stack layer,
33 heap layer, and substituted expression level.
34
35 --method=<method-name-substring>
36 String for finding method. It filters all methods in assembly
37 where method name has this parameter as a substring.
38
39 --help Show help for cccheck, listing configuration options.
40
41
43 Suppose you have a method:
44 void Method() {
45 object x = null;
46 int y = 1;
47 if (y % 2 == 1)
48 x = new object();
49 else
50 x = new string();
51
52 Contract.Assert(x != null); }
53
54 After the verification the tool will have results in following
55 format: "Assertion at : [Subroutine: <id> Block <blockId> PC
56 <id>] :
57 is (true|false|unproven|unreachable)". (PC is a program
58 counter)
59
60
62 Written by Alexander Chebaturkin
63
65 Copyright 2011 Alexander Chebaturkin. Released under MIT license.
66
68 Visit http://www.mono-project.com for details
69
70
71
72 Mono(cccheck)