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