Checkers.td revision dc30967a4633186782e0e204c65dba2552301ec9
1294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//===--- Checkers.td - Static Analyzer Checkers -===-----------------------===//
2294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//
3294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//                     The LLVM Compiler Infrastructure
4294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//
5294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek// This file is distributed under the University of Illinois Open Source
6294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek// License. See LICENSE.TXT for details.
7294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//
8294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//===----------------------------------------------------------------------===//
9294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek
10294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenekinclude "clang/StaticAnalyzer/Checkers/CheckerBase.td"
11294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek
12294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek//===----------------------------------------------------------------------===//
13294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek// Packages.
14e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks//===----------------------------------------------------------------------===//
15e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
16d4aeb8050a1d0fe47c53a73361c8b0b8ac310f46Ted Kremenekdef Experimental : Package<"experimental">;
17294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek
18294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenekdef Core : Package<"core">;
19f540c54701e3eeb34cb619a3a4eb18f1ac70ef2dJordan Rosedef CoreBuiltin : Package<"builtin">, InPackage<Core>;
20294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenekdef CoreUninitialized  : Package<"uninitialized">, InPackage<Core>;
216fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rosedef CoreExperimental : Package<"core">, InPackage<Experimental>, Hidden;
224a5f724538cbc275370c9504e8169ce92503256cBenjamin Kramer
23e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef Cplusplus : Package<"cplusplus">;
244a5f724538cbc275370c9504e8169ce92503256cBenjamin Kramerdef CplusplusExperimental : Package<"cplusplus">, InPackage<Experimental>, Hidden;
25294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek
26294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenekdef DeadCode : Package<"deadcode">;
27294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenekdef DeadCodeExperimental : Package<"deadcode">, InPackage<Experimental>, Hidden;
28294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek
29e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef Security : Package <"security">;
30e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef SecurityExperimental : Package<"security">, InPackage<Experimental>, Hidden;
31e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef Taint : Package<"taint">, InPackage<SecurityExperimental>, Hidden;  
32210f5a28227c90d739298e3e6729e827858fe397Anna Zaks
33210f5a28227c90d739298e3e6729e827858fe397Anna Zaksdef Unix : Package<"unix">;
34210f5a28227c90d739298e3e6729e827858fe397Anna Zaksdef UnixExperimental : Package<"unix">, InPackage<Experimental>, Hidden;
353070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
363070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenekdef OSX : Package<"osx">;
370849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenekdef OSXExperimental : Package<"osx">, InPackage<Experimental>, Hidden;
380849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenekdef Cocoa : Package<"cocoa">, InPackage<OSX>;
393070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenekdef CocoaExperimental : Package<"cocoa">, InPackage<OSXExperimental>, Hidden;
403070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenekdef CoreFoundation : Package<"coreFoundation">, InPackage<OSX>;
413070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
423070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenekdef LLVM : Package<"llvm">;
433070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenekdef Debug : Package<"debug">;
443070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
453070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek//===----------------------------------------------------------------------===//
463070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek// Core Checkers.
473070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek//===----------------------------------------------------------------------===//
483070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
490849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremeneklet ParentPackage = Core in {
503070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
51e54cfc7b9990acffd0a8a4ba381717b4bb9f3011Jordan Rosedef DereferenceChecker : Checker<"NullDereference">,
523070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek  HelpText<"Check for dereferences of null pointers">,
533070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek  DescFile<"DereferenceChecker.cpp">;
543070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
553070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenekdef CallAndMessageChecker : Checker<"CallAndMessage">,
563070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek  HelpText<"Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers)">,
573070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek  DescFile<"CallAndMessageChecker.cpp">;
583070e13dca5bbefa32acb80ce4a7b217a6220983Ted Kremenek
59294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenekdef AdjustedReturnValueChecker : Checker<"AdjustedReturnValue">,
60294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek  HelpText<"Check to see if the return value of a function call is different than the caller expects (e.g., from calls through function pointers)">,
610b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"AdjustedReturnValueChecker.cpp">;
620b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
630b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef AttrNonNullChecker : Checker<"AttributeNonNull">,
640b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check for null pointers passed as arguments to a function whose arguments are marked with the 'nonnull' attribute">,
650b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"AttrNonNullChecker.cpp">;
660b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
670b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef VLASizeChecker : Checker<"VLASize">,
68888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  HelpText<"Check for declarations of VLA of undefined or zero size">,
69632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  DescFile<"VLASizeChecker.cpp">;
70632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
71256ef642f8feef22fd53be7efa868e8e34752eedTed Kremenekdef DivZeroChecker : Checker<"DivideZero">,
72256ef642f8feef22fd53be7efa868e8e34752eedTed Kremenek  HelpText<"Check for division by zero">,
73888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  DescFile<"DivZeroChecker.cpp">;
74632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
75632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rosedef UndefResultChecker : Checker<"UndefinedBinaryOperatorResult">,
76632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  HelpText<"Check for undefined results of binary operators">,
77888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  DescFile<"UndefResultChecker.cpp">;
78632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
79632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rosedef StackAddrEscapeChecker : Checker<"StackAddressEscape">,
80632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  HelpText<"Check that addresses to stack memory do not escape the function">,
81632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  DescFile<"StackAddrEscapeChecker.cpp">;
82632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
83632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose} // end "core"
84632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
85632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Roselet ParentPackage = CoreExperimental in {
86632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
87632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rosedef CastSizeChecker : Checker<"CastSize">,
88632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  HelpText<"Check when casting a malloc'ed type T, whether the size is a multiple of the size of T">,
89632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  DescFile<"CastSizeChecker.cpp">;
90632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose
91632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rosedef CastToStructChecker : Checker<"CastToStruct">,
92632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  HelpText<"Check for cast from non-struct pointer to struct pointer">,
93632e5022f68fcae3b68bbc90538a60f3ba20229fJordan Rose  DescFile<"CastToStructChecker.cpp">;
94888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose
95888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rosedef FixedAddressChecker : Checker<"FixedAddr">,
96888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  HelpText<"Check for assignment of a fixed address to a pointer">,
97888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  DescFile<"FixedAddressChecker.cpp">;
98256ef642f8feef22fd53be7efa868e8e34752eedTed Kremenek
99888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rosedef PointerArithChecker : Checker<"PointerArithm">,
100888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  HelpText<"Check for pointer arithmetic on locations other than array elements">,
101256ef642f8feef22fd53be7efa868e8e34752eedTed Kremenek  DescFile<"PointerArithChecker">;
102888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose
103888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rosedef PointerSubChecker : Checker<"PointerSub">,
104888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  HelpText<"Check for pointer subtractions on two pointers pointing to different memory chunks">,
105888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  DescFile<"PointerSubChecker">;
106888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose
107888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rosedef SizeofPointerChecker : Checker<"SizeofPtr">,
108888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  HelpText<"Warn about unintended use of sizeof() on pointer expressions">,
109888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  DescFile<"CheckSizeofPointer.cpp">;
110888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose
111888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose} // end "core.experimental"
112888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose
113888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose//===----------------------------------------------------------------------===//
114888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose// Evaluate "builtin" functions.
115888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose//===----------------------------------------------------------------------===//
116888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose
117888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Roselet ParentPackage = CoreBuiltin in {
1180b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
119256ef642f8feef22fd53be7efa868e8e34752eedTed Kremenekdef NoReturnFunctionChecker : Checker<"NoReturnFunctions">,
120256ef642f8feef22fd53be7efa868e8e34752eedTed Kremenek  HelpText<"Evaluate \"panic\" functions that are known to not return to the caller">,
1210b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"NoReturnFunctionChecker.cpp">;
1220b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1230b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef BuiltinFunctionChecker : Checker<"BuiltinFunctions">,
1240b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Evaluate compiler builtin functions (e.g., alloca())">,
1250b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"BuiltinFunctionChecker.cpp">;
1260b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1270b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks} // end "core.builtin"
1280b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1290b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks//===----------------------------------------------------------------------===//
1300b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks// Uninitialized values checkers.
1310b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks//===----------------------------------------------------------------------===//
1320b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1330b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zakslet ParentPackage = CoreUninitialized in {
1347fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek
1357fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenekdef UndefinedArraySubscriptChecker : Checker<"ArraySubscript">,
1367fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek  HelpText<"Check for uninitialized values used as array subscripts">,
1377fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek  DescFile<"UndefinedArraySubscriptChecker.cpp">;
1387fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek
1397fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenekdef UndefinedAssignmentChecker : Checker<"Assign">,
140294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek  HelpText<"Check for assigning uninitialized values">,
1410b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"UndefinedAssignmentChecker.cpp">;
1420b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1430b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef UndefBranchChecker : Checker<"Branch">,
1440b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check for uninitialized values used as branch conditions">,
1450b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"UndefBranchChecker.cpp">;
1460b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
147852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rosedef UndefCapturedBlockVarChecker : Checker<"CapturedBlockVariable">,
1480b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check for blocks that capture uninitialized values">,
149294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek  DescFile<"UndefCapturedBlockVarChecker.cpp">;
150852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose  
151852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rosedef ReturnUndefChecker : Checker<"UndefReturn">,
152852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose  HelpText<"Check for uninitialized values being returned to the caller">,
153852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose  DescFile<"ReturnUndefChecker.cpp">;
15457c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose
155852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose} // end "core.uninitialized"
1560b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
157852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose//===----------------------------------------------------------------------===//
158852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose// C++ checkers.
159852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose//===----------------------------------------------------------------------===//
160852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose
161852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Roselet ParentPackage = CplusplusExperimental in {
1620b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
163852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rosedef IteratorsChecker : Checker<"Iterators">,
16457c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose  HelpText<"Check improper uses of STL vector iterators">,
165852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose  DescFile<"IteratorsChecker.cpp">;
166294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek
1670b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks} // end: "cplusplus.experimental"
1684e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose
1694e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose//===----------------------------------------------------------------------===//
1704e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose// Deadcode checkers.
1714e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose//===----------------------------------------------------------------------===//
1724e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose
1730b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zakslet ParentPackage = DeadCode in {
1740b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1750b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef DeadStoresChecker : Checker<"DeadStores">,
1760b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check for values stored to variables that are never read afterwards">,
1770b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"DeadStoresChecker.cpp">;
1780b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
179255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenekdef IdempotentOperationChecker : Checker<"IdempotentOperations">,
18048b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose  HelpText<"Warn about idempotent operations">,
18148b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose  DescFile<"IdempotentOperationChecker.cpp">;
18248b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose
18348b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose} // end DeadCode
18448b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose
18548b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Roselet ParentPackage = DeadCodeExperimental in {
18648b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose
18748b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rosedef UnreachableCodeChecker : Checker<"UnreachableCode">,
1880b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check unreachable code">,
18966c486f275531df6362b3511fc3af6563561801bTed Kremenek  DescFile<"UnreachableCodeChecker.cpp">;
1900b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1910b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks} // end "deadcode.experimental"
1920b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
1930b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks//===----------------------------------------------------------------------===//
1940b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks// Security checkers.
1950b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks//===----------------------------------------------------------------------===//
19666c486f275531df6362b3511fc3af6563561801bTed Kremenek
197144e52be486a3906aec90c51b0ac94a30313152eAnna Zakslet ParentPackage = SecurityExperimental in {
198144e52be486a3906aec90c51b0ac94a30313152eAnna Zaks
1990b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef SecuritySyntaxChecker : Checker<"SecuritySyntactic">,
2000b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Perform quick security API checks that require no data flow">,
2010b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"CheckSecuritySyntaxOnly.cpp">;
2020b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
2030b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef ArrayBoundChecker : Checker<"ArrayBound">,
2040b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Warn about buffer overflows (older checker)">,
2050b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"ArrayBoundChecker.cpp">;  
206852aa0d2c5d2d1faf2d77b5aa3c0848068a342c5Jordan Rose
2070b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef ArrayBoundCheckerV2 : Checker<"ArrayBoundV2">,
20848b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose  HelpText<"Warn about buffer overflows (newer checker)">,
20948b6247804eacc262cc5508e0fbb74ed819fbb6eJordan Rose  DescFile<"ArrayBoundCheckerV2.cpp">;
2100b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
2110b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef ReturnPointerRangeChecker : Checker<"ReturnPtrRange">,
2120b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check for an out-of-bound pointer being returned to callers">,
2130b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"ReturnPointerRangeChecker.cpp">;
2140b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
2150b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaksdef MallocOverflowSecurityChecker : Checker<"MallocOverflow">,
2160b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check for overflows in the arguments to malloc()">,
2170b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"MallocOverflowSecurityChecker.cpp">;
21866c486f275531df6362b3511fc3af6563561801bTed Kremenek
2190b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks} // end "security.experimental"
22066c486f275531df6362b3511fc3af6563561801bTed Kremenek
2210b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks//===----------------------------------------------------------------------===//
2224e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose// Taint checkers.
22357c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose//===----------------------------------------------------------------------===//
22457c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose
2254e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Roselet ParentPackage = Taint in {
2264e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose
2274e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rosedef GenericTaintChecker : Checker<"TaintPropagation">,
22857c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose  HelpText<"Generate taint information used by other checkers">,
22957c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose  DescFile<"GenericTaintChecker.cpp">;
2304e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose
2314e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose} // end "experimental.security.taint"
2324e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose
2334e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose//===----------------------------------------------------------------------===//
23457c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose// Unix API checkers.
23557c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose//===----------------------------------------------------------------------===//
2364e79fdfe22db1c982e8fdf8397fee426a8c57821Jordan Rose
23757c033621dacd8720ac9ff65a09025f14f70e22fJordan Roselet ParentPackage = Unix in {
23857c033621dacd8720ac9ff65a09025f14f70e22fJordan Rose
23957c033621dacd8720ac9ff65a09025f14f70e22fJordan Rosedef UnixAPIChecker : Checker<"API">,
2400b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  HelpText<"Check calls to various UNIX/Posix functions">,
2410b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  DescFile<"UnixAPIChecker.cpp">;
2420b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks  
2430b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks} // end "unix"
2440b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
2450b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zakslet ParentPackage = UnixExperimental in {
2460b3ade86a1c60cf0c7b56aa238aff458eb7f5974Anna Zaks
247242384ddb0e0b65dd7e9e0ac0cf3c31cf98b06a6Ted Kremenekdef ChrootChecker : Checker<"Chroot">,
248294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek  HelpText<"Check improper use of chroot">,
249294fd0a62b95f512637910bf85c7efa6c2354b50Ted Kremenek  DescFile<"ChrootChecker.cpp">;
2500849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek
2510849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenekdef CStringChecker : Checker<"CString">,
2520849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek  HelpText<"Check calls to functions in <string.h>">,
2530849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek  DescFile<"CStringChecker.cpp">;
2540849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek
2550849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenekdef MallocChecker : Checker<"Malloc">,
2560849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek  HelpText<"Check for potential memory leaks, double free, and use-after-free problems">,
2570849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek  DescFile<"MallocChecker.cpp">;
2580849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenek
2590849ade4bb3e90c2fc0ce01ccd330f76f91da732Ted Kremenekdef MallocSizeofChecker : Checker<"MallocSizeof">,
2606cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaks  HelpText<"Check for dubious malloc arguments involving sizeof">,
2617fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek  DescFile<"MallocSizeofChecker.cpp">;
2627fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek
2636cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaksdef PthreadLockChecker : Checker<"PthreadLock">,
2646cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaks  HelpText<"Simple lock -> unlock checker">,
26501561d1039bfdda61edd20eed939011a8632c7c7Ted Kremenek  DescFile<"PthreadLockChecker.cpp">;
26601561d1039bfdda61edd20eed939011a8632c7c7Ted Kremenek
26701561d1039bfdda61edd20eed939011a8632c7c7Ted Kremenekdef StreamChecker : Checker<"Stream">,
26801561d1039bfdda61edd20eed939011a8632c7c7Ted Kremenek  HelpText<"Check stream handling functions">,
26901561d1039bfdda61edd20eed939011a8632c7c7Ted Kremenek  DescFile<"StreamChecker.cpp">;
2706cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaks
271255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek} // end "unix.experimental"
2726cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaks
2736cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaks//===----------------------------------------------------------------------===//
2747fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek// Mac OS X, Cocoa, and Core Foundation checkers.
2753bbd8cd831788c506f2980293eb3c7e1b3ca2501Anna Zaks//===----------------------------------------------------------------------===//
2763bbd8cd831788c506f2980293eb3c7e1b3ca2501Anna Zaks
277255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremeneklet ParentPackage = OSX in {
2786cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaks
2796cc0969ab37c614d6cf496f2ed6d2fca397a0133Anna Zaksdef MacOSXAPIChecker : Checker<"API">,
28010f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek  InPackage<OSX>,
28110f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek  HelpText<"Check for proper uses of various Mac OS X APIs">,
28210f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek  DescFile<"MacOSXAPIChecker.cpp">;
28310f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek
28410f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenekdef OSAtomicChecker : Checker<"AtomicCAS">,
28510f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek  InPackage<OSX>,
28610f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek  HelpText<"Evaluate calls to OSAtomic functions">,
28710f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek  DescFile<"OSAtomicChecker.cpp">;
2885903a373db3d27794c90b25687e0dd6adb0e497dAnna Zaks
2895903a373db3d27794c90b25687e0dd6adb0e497dAnna Zaksdef MacOSKeychainAPIChecker : Checker<"SecKeychainAPI">,
290d4aeb8050a1d0fe47c53a73361c8b0b8ac310f46Ted Kremenek  InPackage<OSX>,
291d4aeb8050a1d0fe47c53a73361c8b0b8ac310f46Ted Kremenek  HelpText<"Check for proper uses of Secure Keychain APIs">,
292d4aeb8050a1d0fe47c53a73361c8b0b8ac310f46Ted Kremenek  DescFile<"MacOSKeychainAPIChecker.cpp">;
293d4aeb8050a1d0fe47c53a73361c8b0b8ac310f46Ted Kremenek
294d4aeb8050a1d0fe47c53a73361c8b0b8ac310f46Ted Kremenek} // end "macosx"
29510f77ad7fc5e5cf3f37a9b14ff5843468b8b84d2Ted Kremenek
2965903a373db3d27794c90b25687e0dd6adb0e497dAnna Zakslet ParentPackage = Cocoa in {
2975903a373db3d27794c90b25687e0dd6adb0e497dAnna Zaks
298e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef ObjCAtSyncChecker : Checker<"AtSync">,
299e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks  HelpText<"Check for null pointers used as mutexes for @synchronized">,
300e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks  DescFile<"ObjCAtSyncChecker.cpp">;
301e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
302e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef NilArgChecker : Checker<"NilArg">,
303e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks  HelpText<"Check for prohibited nil arguments to ObjC method calls">,
304e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks  DescFile<"BasicObjCFoundationChecks.cpp">;
305e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
3066960f6e53b0d9a69a460c99ec199470271ff9603Anna Zaksdef ClassReleaseChecker : Checker<"ClassRelease">,
3076960f6e53b0d9a69a460c99ec199470271ff9603Anna Zaks  HelpText<"Check for sending 'retain', 'release', or 'autorelease' directly to a Class">,
3086960f6e53b0d9a69a460c99ec199470271ff9603Anna Zaks  DescFile<"BasicObjCFoundationChecks.cpp">;
309e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
310e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef VariadicMethodTypeChecker : Checker<"VariadicMethodTypes">,
3116960f6e53b0d9a69a460c99ec199470271ff9603Anna Zaks  HelpText<"Check for passing non-Objective-C types to variadic methods that expect "
312e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks           "only Objective-C types">,
313e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks  DescFile<"BasicObjCFoundationChecks.cpp">;
314e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
315e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaksdef NSAutoreleasePoolChecker : Checker<"NSAutoreleasePool">,
3166960f6e53b0d9a69a460c99ec199470271ff9603Anna Zaks  HelpText<"Warn for suboptimal uses of NSAutoreleasePool in Objective-C GC mode">,
317e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks  DescFile<"NSAutoreleasePoolChecker.cpp">;
318e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
319c568e2f801a62e442cbbd823b71f70175715661fJordan Rosedef ObjCMethSigsChecker : Checker<"IncompatibleMethodTypes">,
320255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek  HelpText<"Warn about Objective-C method signatures with type incompatibilities">,
321c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  DescFile<"CheckObjCInstMethSignature.cpp">;
322c568e2f801a62e442cbbd823b71f70175715661fJordan Rose
323c568e2f801a62e442cbbd823b71f70175715661fJordan Rosedef ObjCUnusedIvarsChecker : Checker<"UnusedIvars">,
324c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  HelpText<"Warn about private ivars that are never used">,
325c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  DescFile<"ObjCUnusedIVarsChecker.cpp">;
326c568e2f801a62e442cbbd823b71f70175715661fJordan Rose 
327c568e2f801a62e442cbbd823b71f70175715661fJordan Rosedef NSErrorChecker : Checker<"NSError">,
328c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  HelpText<"Check usage of NSError** parameters">,
329c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  DescFile<"NSErrorChecker.cpp">;
330c568e2f801a62e442cbbd823b71f70175715661fJordan Rose
33112e2fb0db76ca2705ce5169e04d9cd52762fc685Matt Beaumont-Gaydef RetainCountChecker : Checker<"RetainCount">,
332c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  HelpText<"Check for leaks and improper reference count management">,
333c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  DescFile<"RetainCountChecker.cpp">;
334e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
335e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks} // end "cocoa"
336e90d3f847dcce76237078b67db8895eb7a24189eAnna Zaks
337e90d3f847dcce76237078b67db8895eb7a24189eAnna Zakslet ParentPackage = CocoaExperimental in {
338ee158bc29bc12ce544996f7cdfde14aba63acf4dJordan Rose
339c36b30c92c78b95fd29fb5d9d6214d737b3bcb02Jordan Rosedef ObjCSelfInitChecker : Checker<"SelfInit">,
340c36b30c92c78b95fd29fb5d9d6214d737b3bcb02Jordan Rose  HelpText<"Check that 'self' is properly initialized inside an initializer method">,
3417fa9b4f258636d89342eda28f21a986c8ac353b1Ted Kremenek  DescFile<"ObjCSelfInitChecker.cpp">;
34269f87c956b3ac2b80124fd9604af012e1061473aJordan Rose
343ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rosedef ObjCDeallocChecker : Checker<"Dealloc">,
34469f87c956b3ac2b80124fd9604af012e1061473aJordan Rose  HelpText<"Warn about Objective-C classes that lack a correct implementation of -dealloc">,
34569f87c956b3ac2b80124fd9604af012e1061473aJordan Rose  DescFile<"CheckObjCDealloc.cpp">;
3462f9c40a915593849f6b0f5c4de516e2f597d0d66Jordan Rose
34769f87c956b3ac2b80124fd9604af012e1061473aJordan Rose} // end "cocoa.experimental"
348e54cfc7b9990acffd0a8a4ba381717b4bb9f3011Jordan Rose
349c568e2f801a62e442cbbd823b71f70175715661fJordan Roselet ParentPackage = CoreFoundation in {
3502f9c40a915593849f6b0f5c4de516e2f597d0d66Jordan Rose
35169f87c956b3ac2b80124fd9604af012e1061473aJordan Rosedef CFNumberCreateChecker : Checker<"CFNumber">,
352ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  HelpText<"Check for proper uses of CFNumberCreate">,
353c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  DescFile<"BasicObjCFoundationChecks.cpp">;
3542f9c40a915593849f6b0f5c4de516e2f597d0d66Jordan Rose
3552f9c40a915593849f6b0f5c4de516e2f597d0d66Jordan Rosedef CFRetainReleaseChecker : Checker<"CFRetainRelease">,
356ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  HelpText<"Check for null arguments to CFRetain/CFRelease">,
357ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  DescFile<"BasicObjCFoundationChecks.cpp">;
358e460c46c5d602f65354cab0879c458890273591cJordan Rose
359ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rosedef CFErrorChecker : Checker<"CFError">,
360e460c46c5d602f65354cab0879c458890273591cJordan Rose  HelpText<"Check usage of CFErrorRef* parameters">,
361e460c46c5d602f65354cab0879c458890273591cJordan Rose  DescFile<"NSErrorChecker.cpp">;
362e460c46c5d602f65354cab0879c458890273591cJordan Rose}
3636fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose
3646fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose//===----------------------------------------------------------------------===//
3656fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose// Checkers for LLVM development.
3666fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose//===----------------------------------------------------------------------===//
3676fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose
3686fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rosedef LLVMConventionsChecker : Checker<"Conventions">,
3696fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose  InPackage<LLVM>,
3706fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose  HelpText<"Check code for LLVM codebase conventions">,
3716fe4dfbc9e5a7018763b1d898876d9b2b8ec3425Jordan Rose  DescFile<"LLVMConventionsChecker.cpp">;
372c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose
373c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose//===----------------------------------------------------------------------===//
374c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose// Debugging checkers (for analyzer development).
375c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose//===----------------------------------------------------------------------===//
376c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose
377c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Roselet ParentPackage = Debug in {
378c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose
379c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rosedef DominatorsTreeDumper : Checker<"DumpDominators">,
380c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose  HelpText<"Print the dominance tree for a given CFG">,
381c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose  DescFile<"DebugCheckers.cpp">;
382c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose
3833a0a9e3e8bbaa45f3ca22b1e20b3beaac0f5861eJordan Rosedef LiveVariablesDumper : Checker<"DumpLiveVars">,
384888c90ac0ef6baf7d47e86cf5cc4715707d223b1Jordan Rose  HelpText<"Print results of live variable analysis">,
385ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  DescFile<"DebugCheckers.cpp">;
386ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose
387ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rosedef CFGViewer : Checker<"ViewCFG">,
388ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  HelpText<"View Control-Flow Graphs using GraphViz">,
389ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  DescFile<"DebugCheckers.cpp">;
390ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose
391ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rosedef CFGDumper : Checker<"DumpCFG">,
392c568e2f801a62e442cbbd823b71f70175715661fJordan Rose  HelpText<"Display Control-Flow Graphs">,
3932f9c40a915593849f6b0f5c4de516e2f597d0d66Jordan Rose  DescFile<"DebugCheckers.cpp">;
3942f9c40a915593849f6b0f5c4de516e2f597d0d66Jordan Rose
395ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rosedef AnalyzerStatsChecker : Checker<"Stats">,
396ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  HelpText<"Emit warnings with analyzer statistics">,
397ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  DescFile<"AnalyzerStatsChecker.cpp">;
398c210cb7a358d14cdd93b58562f33ff5ed2d895c1Jordan Rose
399ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rosedef TaintTesterChecker : Checker<"TaintTest">,
400ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  HelpText<"Mark tainted symbols as such.">,
401ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose  DescFile<"TaintTesterChecker.cpp">;
402ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose
403ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose} // end "debug"
404ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose
405ef15831780b705475e7b237ac16418e9b53cb7a6Jordan Rose