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