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