diff options
Diffstat (limited to 'include/clang/StaticAnalyzer/Checkers')
| -rw-r--r-- | include/clang/StaticAnalyzer/Checkers/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | include/clang/StaticAnalyzer/Checkers/Checkers.td | 50 |
2 files changed, 48 insertions, 3 deletions
diff --git a/include/clang/StaticAnalyzer/Checkers/CMakeLists.txt b/include/clang/StaticAnalyzer/Checkers/CMakeLists.txt index 37dd9e848296..236647c53485 100644 --- a/include/clang/StaticAnalyzer/Checkers/CMakeLists.txt +++ b/include/clang/StaticAnalyzer/Checkers/CMakeLists.txt @@ -1,4 +1,3 @@ clang_tablegen(Checkers.inc -gen-clang-sa-checkers - -I ${CMAKE_CURRENT_SOURCE_DIR}/../../../ SOURCE Checkers.td TARGET ClangSACheckers) diff --git a/include/clang/StaticAnalyzer/Checkers/Checkers.td b/include/clang/StaticAnalyzer/Checkers/Checkers.td index e510e84e938a..ab0e4af1361b 100644 --- a/include/clang/StaticAnalyzer/Checkers/Checkers.td +++ b/include/clang/StaticAnalyzer/Checkers/Checkers.td @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// -include "clang/StaticAnalyzer/Checkers/CheckerBase.td" +include "CheckerBase.td" //===----------------------------------------------------------------------===// // Packages. @@ -86,7 +86,7 @@ def LLVM : Package<"llvm">; // The APIModeling package is for checkers that model APIs and don't perform // any diagnostics. These checkers are always turned on; this package is -// intended for API modeling that is not controlled by the the target triple. +// intended for API modeling that is not controlled by the target triple. def APIModeling : Package<"apiModeling">, Hidden; def GoogleAPIModeling : Package<"google">, InPackage<APIModeling>; @@ -218,6 +218,14 @@ def NullableReturnedFromNonnullChecker : Checker<"NullableReturnedFromNonnull">, } // end "nullability" +let ParentPackage = APIModeling in { + +def TrustNonnullChecker : Checker<"TrustNonnull">, + HelpText<"Trust that returns from framework methods annotated with _Nonnull are not null">, + DescFile<"TrustNonnullChecker.cpp">; + +} + //===----------------------------------------------------------------------===// // Evaluate "builtin" functions. //===----------------------------------------------------------------------===// @@ -297,6 +305,10 @@ def DeleteWithNonVirtualDtorChecker : Checker<"DeleteWithNonVirtualDtor">, "destructor in their base class">, DescFile<"DeleteWithNonVirtualDtorChecker.cpp">; +def InnerPointerChecker : Checker<"InnerPointer">, + HelpText<"Check for inner pointers of C++ containers used after re/deallocation">, + DescFile<"InnerPointerChecker.cpp">; + def IteratorRangeChecker : Checker<"IteratorRange">, HelpText<"Check for iterators used outside their valid ranges">, DescFile<"IteratorChecker.cpp">; @@ -306,6 +318,10 @@ def MisusedMovedObjectChecker: Checker<"MisusedMovedObject">, "object will be reported">, DescFile<"MisusedMovedObjectChecker.cpp">; +def UninitializedObjectChecker: Checker<"UninitializedObject">, + HelpText<"Reports uninitialized fields after object construction">, + DescFile<"UninitializedObjectChecker.cpp">; + } // end: "alpha.cplusplus" @@ -365,6 +381,15 @@ def PaddingChecker : Checker<"Padding">, //===----------------------------------------------------------------------===// let ParentPackage = InsecureAPI in { + def bcmp : Checker<"bcmp">, + HelpText<"Warn on uses of the 'bcmp' function">, + DescFile<"CheckSecuritySyntaxOnly.cpp">; + def bcopy : Checker<"bcopy">, + HelpText<"Warn on uses of the 'bcopy' function">, + DescFile<"CheckSecuritySyntaxOnly.cpp">; + def bzero : Checker<"bzero">, + HelpText<"Warn on uses of the 'bzero' function">, + DescFile<"CheckSecuritySyntaxOnly.cpp">; def gets : Checker<"gets">, HelpText<"Warn on uses of the 'gets' function">, DescFile<"CheckSecuritySyntaxOnly.cpp">; @@ -414,6 +439,13 @@ def MallocOverflowSecurityChecker : Checker<"MallocOverflow">, HelpText<"Check for overflows in the arguments to malloc()">, DescFile<"MallocOverflowSecurityChecker.cpp">; +// Operating systems specific PROT_READ/PROT_WRITE values is not implemented, +// the defaults are correct for several common operating systems though, +// but may need to be overridden via the related analyzer-config flags. +def MmapWriteExecChecker : Checker<"MmapWriteExec">, + HelpText<"Warn on mmap() calls that are both writable and executable">, + DescFile<"MmapWriteExecChecker.cpp">; + } // end "alpha.security" //===----------------------------------------------------------------------===// @@ -536,6 +568,10 @@ def ObjCPropertyChecker : Checker<"ObjCProperty">, let ParentPackage = Cocoa in { +def RunLoopAutoreleaseLeakChecker : Checker<"RunLoopAutoreleaseLeak">, + HelpText<"Check for leaked memory in autorelease pools that will never be drained">, + DescFile<"RunLoopAutoreleaseLeakChecker.cpp">; + def ObjCAtSyncChecker : Checker<"AtSync">, HelpText<"Check for nil pointers used as mutexes for @synchronized">, DescFile<"ObjCAtSyncChecker.cpp">; @@ -601,8 +637,18 @@ def ObjCSuperDeallocChecker : Checker<"SuperDealloc">, HelpText<"Warn about improper use of '[super dealloc]' in Objective-C">, DescFile<"ObjCSuperDeallocChecker.cpp">; +def AutoreleaseWriteChecker : Checker<"AutoreleaseWrite">, + HelpText<"Warn about potentially crashing writes to autoreleasing objects from different autoreleasing pools in Objective-C">, + DescFile<"ObjCAutoreleaseWriteChecker.cpp">; } // end "osx.cocoa" +let ParentPackage = Performance in { + +def GCDAntipattern : Checker<"GCDAntipattern">, + HelpText<"Check for performance anti-patterns when using Grand Central Dispatch">, + DescFile<"GCDAntipatternChecker.cpp">; +} // end "optin.performance" + let ParentPackage = CocoaAlpha in { def InstanceVariableInvalidation : Checker<"InstanceVariableInvalidation">, |
