blob: 9c09e9325b5a9af0f8492c16a2fcbb6b731101a4 [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
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
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000038let ParentPackage = Cocoa in {
Argyrios Kyrtzidis43dee222011-02-14 18:13:31 +000039
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000040def ObjCSelfInitChecker : Checker<"SelfInit">,
Argyrios Kyrtzidis43dee222011-02-14 18:13:31 +000041 HelpText<"Check that 'self' is propely initialized inside an initializer method">,
42 DescFile<"ObjCSelfInitChecker.cpp">;
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000043
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000044def ObjCAtSyncChecker : Checker<"AtSync">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000045 HelpText<"Check for null pointers used as mutexes for @synchronized">,
46 DescFile<"ObjCAtSyncChecker.cpp">;
47
48}
49
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000050def StackAddrLeakChecker : Checker<"StackAddrLeak">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000051 InPackage<Core>,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000052 HelpText<"Check that addresses to stack memory are not leaked outside the function">,
53 DescFile<"StackAddrLeakChecker.cpp">;
54
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000055def UnixAPIChecker : Checker<"API">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000056 InPackage<Unix>,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000057 HelpText<"Check calls to various UNIX/Posix functions">,
58 DescFile<"UnixAPIChecker.cpp">;
59
Argyrios Kyrtzidis26c05b12011-02-15 07:42:38 +000060def MacOSXAPIChecker : Checker<"API">,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000061 InPackage<MacOSX>,
Argyrios Kyrtzidis027a6ab2011-02-15 07:42:33 +000062 HelpText<"Check calls to various MacOSXAPIChecker">,
63 DescFile<"MacOSXAPIChecker.cpp">;
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +000064
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
Argyrios Kyrtzidisc9f2e0f2011-02-15 22:55:14 +000081def IdempotentOperationChecker : Checker<"IdempotentOps">,
82 InPackage<CoreExperimental>,
83 HelpText<"Warn about idempotent operations">,
84 DescFile<"IdempotentOperationChecker.cpp">;
85
Argyrios Kyrtzidis23ade502011-02-15 22:55:20 +000086def 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
Argyrios Kyrtzidisa0decc92011-02-15 21:25:03 +0000106def 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}