From: Argyrios Kyrtzidis Date: Tue, 29 Mar 2011 18:54:02 +0000 (+0000) Subject: [analyzer] Checker Packages can now belong to a group. This requires llvm commit... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1293cdac691975a57a0e8a4f1448b3ed9e293c50;p=clang [analyzer] Checker Packages can now belong to a group. This requires llvm commit r128474. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128475 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/StaticAnalyzer/Checkers/CheckerBase.td b/include/clang/StaticAnalyzer/Checkers/CheckerBase.td index e452ccfb6c..11f1e5d4bd 100644 --- a/include/clang/StaticAnalyzer/Checkers/CheckerBase.td +++ b/include/clang/StaticAnalyzer/Checkers/CheckerBase.td @@ -11,18 +11,19 @@ // //===----------------------------------------------------------------------===// +class CheckerGroup { + string GroupName = name; +} +class InGroup { CheckerGroup Group = G; } + class Package { string PackageName = name; bit Hidden = 0; Package ParentPackage; + CheckerGroup Group; } class InPackage { Package ParentPackage = P; } -class CheckerGroup { - string GroupName = name; -} -class InGroup { CheckerGroup Group = G; } - // All checkers are an indirect subclass of this. class Checker { string CheckerName = name; diff --git a/lib/StaticAnalyzer/Checkers/Checkers.td b/lib/StaticAnalyzer/Checkers/Checkers.td index efffdbce66..c5e3f6baab 100644 --- a/lib/StaticAnalyzer/Checkers/Checkers.td +++ b/lib/StaticAnalyzer/Checkers/Checkers.td @@ -9,6 +9,12 @@ include "clang/StaticAnalyzer/Checkers/CheckerBase.td" +//===----------------------------------------------------------------------===// +// Groups. +//===----------------------------------------------------------------------===// + +def AllExperimental : CheckerGroup<"all-experimental">; + //===----------------------------------------------------------------------===// // Packages. //===----------------------------------------------------------------------===// @@ -16,35 +22,34 @@ include "clang/StaticAnalyzer/Checkers/CheckerBase.td" def Core : Package<"core">; def CoreBuiltin : Package<"builtin">, InPackage; def CoreUninitialized : Package<"uninitialized">, InPackage; -def CoreExperimental : Package<"experimental">, InPackage, Hidden; +def CoreExperimental : Package<"experimental">, InPackage, + InGroup, Hidden; def Cplusplus : Package<"cplusplus">; -def CplusplusExperimental : Package<"experimental">, InPackage, Hidden; +def CplusplusExperimental : Package<"experimental">, InPackage, + InGroup, Hidden; def DeadCode : Package<"deadcode">; -def DeadCodeExperimental : Package<"experimental">, InPackage, Hidden; +def DeadCodeExperimental : Package<"experimental">, InPackage, + InGroup, Hidden; def Security : Package <"security">; -def SecurityExperimental : Package<"experimental">, InPackage, Hidden; +def SecurityExperimental : Package<"experimental">, InPackage, + InGroup, Hidden; def Unix : Package<"unix">; -def UnixExperimental : Package<"experimental">, InPackage, Hidden; +def UnixExperimental : Package<"experimental">, InPackage, + InGroup, Hidden; def OSX : Package<"osx">; def Cocoa : Package<"cocoa">, InPackage; -def CocoaExperimental : Package<"experimental">, InPackage, Hidden; +def CocoaExperimental : Package<"experimental">, InPackage, + InGroup, Hidden; def CoreFoundation : Package<"coreFoundation">, InPackage; def LLVM : Package<"llvm">; def Debug : Package<"debug">; -//===----------------------------------------------------------------------===// -// Groups. -//===----------------------------------------------------------------------===// - -def AllExperimental : CheckerGroup<"all-experimental">, - Hidden; - //===----------------------------------------------------------------------===// // Core Checkers. //===----------------------------------------------------------------------===// @@ -88,32 +93,26 @@ def StackAddrEscapeChecker : Checker<"StackAddressEscape">, let ParentPackage = CoreExperimental in { def CastSizeChecker : Checker<"CastSize">, - InGroup, HelpText<"Check when casting a malloc'ed type T, whether the size is a multiple of the size of T">, DescFile<"CastSizeChecker.cpp">; def CastToStructChecker : Checker<"CastToStruct">, - InGroup, HelpText<"Check for cast from non-struct pointer to struct pointer">, DescFile<"CastToStructChecker.cpp">; def FixedAddressChecker : Checker<"FixedAddr">, - InGroup, HelpText<"Check for assignment of a fixed address to a pointer">, DescFile<"FixedAddressChecker.cpp">; def PointerArithChecker : Checker<"PointerArithm">, - InGroup, HelpText<"Check for pointer arithmetic on locations other than array elements">, DescFile<"PointerArithChecker">; def PointerSubChecker : Checker<"PointerSub">, - InGroup, HelpText<"Check for pointer subtractions on two pointers pointing to different memory chunks">, DescFile<"PointerSubChecker">; def SizeofPointerChecker : Checker<"SizeofPtr">, - InGroup, HelpText<"Warn about unintended use of sizeof() on pointer expressions">, DescFile<"CheckSizeofPointer.cpp">; @@ -170,12 +169,10 @@ def ReturnUndefChecker : Checker<"UndefReturn">, let ParentPackage = CplusplusExperimental in { def CStringChecker : Checker<"CString">, - InGroup, HelpText<"Check calls to functions in ">, DescFile<"CStringChecker.cpp">; def IteratorsChecker : Checker<"Iterators">, - InGroup, HelpText<"Check improper uses of STL vector iterators">, DescFile<"IteratorsChecker.cpp">; @@ -200,7 +197,6 @@ def IdempotentOperationChecker : Checker<"IdempotentOperations">, let ParentPackage = DeadCodeExperimental in { def UnreachableCodeChecker : Checker<"UnreachableCode">, - InGroup, HelpText<"Check unreachable code">, DescFile<"UnreachableCodeChecker.cpp">; @@ -217,17 +213,14 @@ def SecuritySyntaxChecker : Checker<"SecuritySyntactic">, DescFile<"CheckSecuritySyntaxOnly.cpp">; def ArrayBoundChecker : Checker<"ArrayBound">, - InGroup, HelpText<"Warn about buffer overflows (older checker)">, DescFile<"ArrayBoundChecker.cpp">; def ArrayBoundCheckerV2 : Checker<"ArrayBoundV2">, - InGroup, HelpText<"Warn about buffer overflows (newer checker)">, DescFile<"ArrayBoundCheckerV2.cpp">; def ReturnPointerRangeChecker : Checker<"ReturnPtrRange">, - InGroup, HelpText<"Check for an out-of-bound pointer being returned to callers">, DescFile<"ReturnPointerRangeChecker.cpp">; @@ -248,22 +241,18 @@ def UnixAPIChecker : Checker<"API">, let ParentPackage = UnixExperimental in { def ChrootChecker : Checker<"Chroot">, - InGroup, HelpText<"Check improper use of chroot">, DescFile<"ChrootChecker.cpp">; def MallocChecker : Checker<"Malloc">, - InGroup, HelpText<"Check for potential memory leaks, double free, and use-after-free problems">, DescFile<"MallocChecker.cpp">; def PthreadLockChecker : Checker<"PthreadLock">, - InGroup, HelpText<"Simple lock -> unlock checker">, DescFile<"PthreadLockChecker.cpp">; def StreamChecker : Checker<"Stream">, - InGroup, HelpText<"Check stream handling functions">, DescFile<"StreamChecker.cpp">; @@ -331,7 +320,6 @@ def NSErrorChecker : Checker<"NSError">, let ParentPackage = CocoaExperimental in { def ObjCDeallocChecker : Checker<"Dealloc">, - InGroup, HelpText<"Warn about Objective-C classes that lack a correct implementation of -dealloc">, DescFile<"CheckObjCDealloc.cpp">;