Checkers.td revision 7dd445ec20e704846cfbdb132e56539280d71311
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 CocoaExperimental : Package<"experimental">,
25  InPackage<Cocoa>, Hidden;
26
27def UnixExperimental : Package<"experimental">,
28  InPackage<Unix>, Hidden;
29
30def LLVM : Package<"llvm">;
31
32//===----------------------------------------------------------------------===//
33// Groups.
34//===----------------------------------------------------------------------===//
35
36def AllExperimental : CheckerGroup<"all-experimental">,
37  Hidden;
38
39//===----------------------------------------------------------------------===//
40// Checkers.
41//===----------------------------------------------------------------------===//
42
43let ParentPackage = Cocoa in {
44
45def ObjCSelfInitChecker : Checker<"SelfInit">,
46  HelpText<"Check that 'self' is propely initialized inside an initializer method">,
47  DescFile<"ObjCSelfInitChecker.cpp">;
48
49def ObjCAtSyncChecker : Checker<"AtSync">,
50  HelpText<"Check for null pointers used as mutexes for @synchronized">,
51  DescFile<"ObjCAtSyncChecker.cpp">;
52
53def NilArgChecker : Checker<"NilArg">,
54  HelpText<"Check for prohibited nil arguments to ObjC method calls">,
55  DescFile<"BasicObjCFoundationChecks.cpp">;
56
57def ClassReleaseChecker : Checker<"ClassRelease">,
58  HelpText<"Check for sending 'retain', 'release', or 'autorelease' directly to a Class">,
59  DescFile<"BasicObjCFoundationChecks.cpp">;
60
61def NSAutoreleasePoolChecker : Checker<"NSAutoreleasePool">,
62  HelpText<"Warn for subpar uses of NSAutoreleasePool">,
63  DescFile<"NSAutoreleasePoolChecker.cpp">;
64
65def ObjCMethSigsChecker : Checker<"MethodSigs">,
66  HelpText<"Warn about Objective-C method signatures with type incompatibilities">,
67  DescFile<"CheckObjCInstMethSignature.cpp">;
68
69def ObjCUnusedIvarsChecker : Checker<"UnusedIvars">,
70  HelpText<"Warn about private ivars that are never used">,
71  DescFile<"ObjCUnusedIVarsChecker.cpp">;
72
73}
74
75def StackAddrLeakChecker : Checker<"StackAddrLeak">,
76  InPackage<Core>,
77  HelpText<"Check that addresses to stack memory are not leaked outside the function">,
78  DescFile<"StackAddrLeakChecker.cpp">;
79
80def DeadStoresChecker : Checker<"DeadStores">,
81  InPackage<Core>,
82  HelpText<"Check for stores to dead variables">,
83  DescFile<"DeadStoresChecker.cpp">;
84
85def UnixAPIChecker : Checker<"API">,
86  InPackage<Unix>,
87  HelpText<"Check calls to various UNIX/Posix functions">,
88  DescFile<"UnixAPIChecker.cpp">;
89
90def MacOSXAPIChecker : Checker<"API">,
91  InPackage<MacOSX>,
92  HelpText<"Check calls to various MacOSXAPIChecker">,
93  DescFile<"MacOSXAPIChecker.cpp">;
94
95def CFNumberCreateChecker : Checker<"CFNumber">,
96  InPackage<MacOSX>,
97  HelpText<"Check for CFNumberCreate">,
98  DescFile<"BasicObjCFoundationChecks.cpp">;
99
100def CFRetainReleaseChecker : Checker<"CFRetainRelease">,
101  InPackage<MacOSX>,
102  HelpText<"Check for null arguments to CFRetain/CFRelease">,
103  DescFile<"BasicObjCFoundationChecks.cpp">;
104
105def LLVMConventionsChecker : Checker<"Conventions">,
106  InPackage<LLVM>,
107  HelpText<"Check code for LLVM codebase conventions">,
108  DescFile<"LLVMConventionsChecker.cpp">;
109
110//===----------------------------------------------------------------------===//
111// Hidden experimental checkers.
112//===----------------------------------------------------------------------===//
113
114let Group = AllExperimental in {
115
116def CStringChecker : Checker<"CString">,
117  InPackage<CoreExperimental>,
118  HelpText<"Check calls to functions in <string.h>">,
119  DescFile<"CStringChecker.cpp">;
120
121def UnreachableCodeChecker : Checker<"UnreachableCode">,
122  InPackage<CoreExperimental>,
123  HelpText<"Check unreachable code">,
124  DescFile<"UnreachableCodeChecker.cpp">;
125
126def IdempotentOperationChecker : Checker<"IdempotentOps">,
127  InPackage<CoreExperimental>,
128  HelpText<"Warn about idempotent operations">,
129  DescFile<"IdempotentOperationChecker.cpp">;
130
131def CastToStructChecker : Checker<"CastToStruct">,
132  InPackage<CoreExperimental>,
133  HelpText<"Check for cast from non-struct pointer to struct pointer">,
134  DescFile<"CastToStructChecker.cpp">;
135
136def FixedAddressChecker : Checker<"FixedAddr">,
137  InPackage<CoreExperimental>,
138  HelpText<"Check for assignment of a fixed address to a pointer">,
139  DescFile<"FixedAddressChecker.cpp">;
140
141def PointerArithChecker : Checker<"PointerArithm">,
142  InPackage<CoreExperimental>,
143  HelpText<"Check for pointer arithmetic on locations other than array elements">,
144  DescFile<"PointerArithChecker">;
145
146def PointerSubChecker : Checker<"PointerSub">,
147  InPackage<CoreExperimental>,
148  HelpText<"Check for pointer subtractions on two pointers pointing to different memory chunks">,
149  DescFile<"PointerSubChecker">;
150
151def SizeofPointerChecker : Checker<"SizeofPtr">,
152  InPackage<CoreExperimental>,
153  HelpText<"Warn about unintended use of sizeof() on pointer expressions">,
154  DescFile<"CheckSizeofPointer.cpp">;
155
156def SecuritySyntaxChecker : Checker<"SecuritySyntactic">,
157  InPackage<CoreExperimental>,
158  HelpText<"Perform quick security checks that require no data flow">,
159  DescFile<"CheckSecuritySyntaxOnly.cpp">;
160
161def ObjCDeallocChecker : Checker<"Dealloc">,
162  InPackage<CocoaExperimental>,
163  HelpText<"Warn about Objective-C classes that lack a correct implementation of -dealloc">,
164  DescFile<"CheckObjCDealloc.cpp">;
165
166def ChrootChecker : Checker<"Chroot">,
167  InPackage<UnixExperimental>,
168  HelpText<"Check improper use of chroot">,
169  DescFile<"ChrootChecker.cpp">;
170
171def PthreadLockChecker : Checker<"PthreadLock">,
172  InPackage<UnixExperimental>,
173  HelpText<"Simple lock -> unlock checker">,
174  DescFile<"PthreadLockChecker.cpp">;
175
176def StreamChecker : Checker<"Stream">,
177  InPackage<UnixExperimental>,
178  HelpText<"Check stream handling functions">,
179  DescFile<"StreamChecker.cpp">;
180
181}
182