blob: aabf07a1fc2c59debc8578b541048997c3ce0b89 [file] [log] [blame]
Argyrios Kyrtzidis43dee222011-02-14 18:13:31 +00001//===--- 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
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +000012//===----------------------------------------------------------------------===//
13// Packages.
14//===----------------------------------------------------------------------===//
15
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000016def Core : Package<"core">;
Argyrios Kyrtzidis43dee222011-02-14 18:13:31 +000017def Cocoa : Package<"cocoa">;
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000018def Unix : Package<"unix">;
19def MacOSX : Package<"macosx">;
20
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +000021def CoreExperimental : Package<"experimental">,
22 InPackage<Core>, Hidden;
23
Argyrios Kyrtzidis7dd445e2011-02-17 21:39:33 +000024def CocoaExperimental : Package<"experimental">,
25 InPackage<Cocoa>, Hidden;
26
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +000027def UnixExperimental : Package<"experimental">,
28 InPackage<Unix>, Hidden;
29
Argyrios Kyrtzidis9fb94742011-02-17 21:39:24 +000030def LLVM : Package<"llvm">;
31
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +000032//===----------------------------------------------------------------------===//
33// Groups.
34//===----------------------------------------------------------------------===//
35
36def AllExperimental : CheckerGroup<"all-experimental">,
37 Hidden;
38
39//===----------------------------------------------------------------------===//
40// Checkers.
41//===----------------------------------------------------------------------===//
42
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000043let ParentPackage = Cocoa in {
Argyrios Kyrtzidis43dee222011-02-14 18:13:31 +000044
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000045def ObjCSelfInitChecker : Checker<"SelfInit">,
Argyrios Kyrtzidis43dee222011-02-14 18:13:31 +000046 HelpText<"Check that 'self' is propely initialized inside an initializer method">,
47 DescFile<"ObjCSelfInitChecker.cpp">;
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000048
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000049def ObjCAtSyncChecker : Checker<"AtSync">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000050 HelpText<"Check for null pointers used as mutexes for @synchronized">,
51 DescFile<"ObjCAtSyncChecker.cpp">;
52
Argyrios Kyrtzidis0b1ba622011-02-16 01:40:52 +000053def 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
Argyrios Kyrtzidis7dd445e2011-02-17 21:39:33 +000065def 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
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000073}
74
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000075def StackAddrLeakChecker : Checker<"StackAddrLeak">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000076 InPackage<Core>,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000077 HelpText<"Check that addresses to stack memory are not leaked outside the function">,
78 DescFile<"StackAddrLeakChecker.cpp">;
79
Argyrios Kyrtzidis7dd445e2011-02-17 21:39:33 +000080def DeadStoresChecker : Checker<"DeadStores">,
81 InPackage<Core>,
82 HelpText<"Check for stores to dead variables">,
83 DescFile<"DeadStoresChecker.cpp">;
84
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000085def UnixAPIChecker : Checker<"API">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000086 InPackage<Unix>,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000087 HelpText<"Check calls to various UNIX/Posix functions">,
88 DescFile<"UnixAPIChecker.cpp">;
89
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000090def MacOSXAPIChecker : Checker<"API">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000091 InPackage<MacOSX>,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000092 HelpText<"Check calls to various MacOSXAPIChecker">,
93 DescFile<"MacOSXAPIChecker.cpp">;
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +000094
Argyrios Kyrtzidis0b1ba622011-02-16 01:40:52 +000095def 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
Argyrios Kyrtzidis9fb94742011-02-17 21:39:24 +0000105def LLVMConventionsChecker : Checker<"Conventions">,
106 InPackage<LLVM>,
107 HelpText<"Check code for LLVM codebase conventions">,
108 DescFile<"LLVMConventionsChecker.cpp">;
109
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +0000110//===----------------------------------------------------------------------===//
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
Argyrios Kyrtzidisc9f2e0f2011-02-15 22:55:14 +0000126def IdempotentOperationChecker : Checker<"IdempotentOps">,
127 InPackage<CoreExperimental>,
128 HelpText<"Warn about idempotent operations">,
129 DescFile<"IdempotentOperationChecker.cpp">;
130
Argyrios Kyrtzidis23ade502011-02-15 22:55:20 +0000131def 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
Argyrios Kyrtzidis7dd445e2011-02-17 21:39:33 +0000151def 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
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +0000166def 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}