Checkers.td revision 23ade507cecd24b03f5e4b5ebaea48eb38060262
1//===--- Checkers.td - Static Analyzer Checkers -===-----------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10include "clang/StaticAnalyzer/Checkers/CheckerBase.td"
11
12//===----------------------------------------------------------------------===//
13// Packages.
14//===----------------------------------------------------------------------===//
15
16def Core : Package<"core">;
17def Cocoa : Package<"cocoa">;
18def Unix : Package<"unix">;
19def MacOSX : Package<"macosx">;
20
21def CoreExperimental : Package<"experimental">,
22  InPackage<Core>, Hidden;
23
24def UnixExperimental : Package<"experimental">,
25  InPackage<Unix>, Hidden;
26
27//===----------------------------------------------------------------------===//
28// Groups.
29//===----------------------------------------------------------------------===//
30
31def AllExperimental : CheckerGroup<"all-experimental">,
32  Hidden;
33
34//===----------------------------------------------------------------------===//
35// Checkers.
36//===----------------------------------------------------------------------===//
37
38let ParentPackage = Cocoa in {
39
40def ObjCSelfInitChecker : Checker<"SelfInit">,
41  HelpText<"Check that 'self' is propely initialized inside an initializer method">,
42  DescFile<"ObjCSelfInitChecker.cpp">;
43
44def ObjCAtSyncChecker : Checker<"AtSync">,
45  HelpText<"Check for null pointers used as mutexes for @synchronized">,
46  DescFile<"ObjCAtSyncChecker.cpp">;
47
48}
49
50def StackAddrLeakChecker : Checker<"StackAddrLeak">,
51  InPackage<Core>,
52  HelpText<"Check that addresses to stack memory are not leaked outside the function">,
53  DescFile<"StackAddrLeakChecker.cpp">;
54
55def UnixAPIChecker : Checker<"API">,
56  InPackage<Unix>,
57  HelpText<"Check calls to various UNIX/Posix functions">,
58  DescFile<"UnixAPIChecker.cpp">;
59
60def MacOSXAPIChecker : Checker<"API">,
61  InPackage<MacOSX>,
62  HelpText<"Check calls to various MacOSXAPIChecker">,
63  DescFile<"MacOSXAPIChecker.cpp">;
64
65//===----------------------------------------------------------------------===//
66// Hidden experimental checkers.
67//===----------------------------------------------------------------------===//
68
69let Group = AllExperimental in {
70
71def CStringChecker : Checker<"CString">,
72  InPackage<CoreExperimental>,
73  HelpText<"Check calls to functions in <string.h>">,
74  DescFile<"CStringChecker.cpp">;
75
76def UnreachableCodeChecker : Checker<"UnreachableCode">,
77  InPackage<CoreExperimental>,
78  HelpText<"Check unreachable code">,
79  DescFile<"UnreachableCodeChecker.cpp">;
80
81def IdempotentOperationChecker : Checker<"IdempotentOps">,
82  InPackage<CoreExperimental>,
83  HelpText<"Warn about idempotent operations">,
84  DescFile<"IdempotentOperationChecker.cpp">;
85
86def CastToStructChecker : Checker<"CastToStruct">,
87  InPackage<CoreExperimental>,
88  HelpText<"Check for cast from non-struct pointer to struct pointer">,
89  DescFile<"CastToStructChecker.cpp">;
90
91def FixedAddressChecker : Checker<"FixedAddr">,
92  InPackage<CoreExperimental>,
93  HelpText<"Check for assignment of a fixed address to a pointer">,
94  DescFile<"FixedAddressChecker.cpp">;
95
96def PointerArithChecker : Checker<"PointerArithm">,
97  InPackage<CoreExperimental>,
98  HelpText<"Check for pointer arithmetic on locations other than array elements">,
99  DescFile<"PointerArithChecker">;
100
101def PointerSubChecker : Checker<"PointerSub">,
102  InPackage<CoreExperimental>,
103  HelpText<"Check for pointer subtractions on two pointers pointing to different memory chunks">,
104  DescFile<"PointerSubChecker">;
105
106def ChrootChecker : Checker<"Chroot">,
107  InPackage<UnixExperimental>,
108  HelpText<"Check improper use of chroot">,
109  DescFile<"ChrootChecker.cpp">;
110
111def PthreadLockChecker : Checker<"PthreadLock">,
112  InPackage<UnixExperimental>,
113  HelpText<"Simple lock -> unlock checker">,
114  DescFile<"PthreadLockChecker.cpp">;
115
116def StreamChecker : Checker<"Stream">,
117  InPackage<UnixExperimental>,
118  HelpText<"Check stream handling functions">,
119  DescFile<"StreamChecker.cpp">;
120
121}
122