| |
| #ifdef GET_PACKAGES |
| PACKAGE("alpha.unix.cstring") |
| PACKAGE("unix") |
| PACKAGE("alpha.clone") |
| PACKAGE("alpha") |
| PACKAGE("debug") |
| PACKAGE("osx.coreFoundation") |
| PACKAGE("apiModeling") |
| PACKAGE("core") |
| PACKAGE("optin") |
| PACKAGE("unix.cstring") |
| PACKAGE("optin.portability") |
| PACKAGE("nullability") |
| PACKAGE("core.uninitialized") |
| PACKAGE("apiModeling.google") |
| PACKAGE("alpha.security.taint") |
| PACKAGE("alpha.deadcode") |
| PACKAGE("alpha.cplusplus") |
| PACKAGE("alpha.osx.cocoa") |
| PACKAGE("optin.cplusplus") |
| PACKAGE("optin.osx.cocoa") |
| PACKAGE("deadcode") |
| PACKAGE("optin.performance") |
| PACKAGE("cplusplus") |
| PACKAGE("osx.coreFoundation.containers") |
| PACKAGE("osx.cocoa") |
| PACKAGE("core.builtin") |
| PACKAGE("alpha.llvm") |
| PACKAGE("optin.osx.cocoa.localizability") |
| PACKAGE("alpha.osx.cocoa.localizability") |
| PACKAGE("optin.osx") |
| PACKAGE("valist") |
| PACKAGE("alpha.osx") |
| PACKAGE("alpha.security") |
| PACKAGE("security") |
| PACKAGE("alpha.unix") |
| PACKAGE("osx") |
| PACKAGE("llvm") |
| PACKAGE("alpha.core") |
| PACKAGE("security.insecureAPI") |
| PACKAGE("optin.mpi") |
| #endif // GET_PACKAGES |
| |
| |
| #ifdef GET_CHECKERS |
| CHECKER("debug.AnalysisOrder", AnalysisOrderChecker, "Print callbacks that are called during analysis in order") |
| CHECKER("debug.Stats", AnalyzerStatsChecker, "Emit warnings with analyzer statistics") |
| CHECKER("alpha.security.ArrayBound", ArrayBoundChecker, "Warn about buffer overflows (older checker)") |
| CHECKER("alpha.security.ArrayBoundV2", ArrayBoundCheckerV2, "Warn about buffer overflows (newer checker)") |
| CHECKER("osx.cocoa.AutoreleaseWrite", AutoreleaseWriteChecker, "Warn about potentially crashing writes to autoreleasing objects from different autoreleasing pools in Objective-C") |
| CHECKER("alpha.unix.BlockInCriticalSection", BlockInCriticalSectionChecker, "Check for calls to blocking functions inside a critical section") |
| CHECKER("alpha.core.BoolAssignment", BoolAssignmentChecker, "Warn about assigning non-{0,1} values to Boolean variables") |
| CHECKER("core.builtin.BuiltinFunctions", BuiltinFunctionChecker, "Evaluate compiler builtin functions (e.g., alloca())") |
| CHECKER("osx.coreFoundation.CFError", CFErrorChecker, "Check usage of CFErrorRef* parameters") |
| CHECKER("debug.DumpCFG", CFGDumper, "Display Control-Flow Graphs") |
| CHECKER("debug.ViewCFG", CFGViewer, "View Control-Flow Graphs using GraphViz") |
| CHECKER("osx.coreFoundation.CFNumber", CFNumberChecker, "Check for proper uses of CFNumber APIs") |
| CHECKER("osx.coreFoundation.CFRetainRelease", CFRetainReleaseChecker, "Check for null arguments to CFRetain/CFRelease/CFMakeCollectable") |
| CHECKER("alpha.unix.cstring.BufferOverlap", CStringBufferOverlap, "Checks for overlap in two buffer arguments") |
| CHECKER("alpha.unix.cstring.NotNullTerminated", CStringNotNullTerm, "Check for arguments which are not null-terminating strings") |
| CHECKER("unix.cstring.NullArg", CStringNullArg, "Check for null pointers being passed as arguments to C string functions") |
| CHECKER("alpha.unix.cstring.OutOfBounds", CStringOutOfBounds, "Check for out-of-bounds access in string functions") |
| CHECKER("unix.cstring.BadSizeArg", CStringSyntaxChecker, "Check the size argument passed into C string functions for common erroneous patterns") |
| CHECKER("cplusplus.SelfAssignment", CXXSelfAssignmentChecker, "Checks C++ copy and move assignment operators for self assignment") |
| CHECKER("core.CallAndMessage", CallAndMessageChecker, "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers)") |
| CHECKER("alpha.core.CallAndMessageUnInitRefArg", CallAndMessageUnInitRefArg, "Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers, and pointer to undefined variables)") |
| CHECKER("debug.DumpCalls", CallDumper, "Print calls as they are traversed by the engine") |
| CHECKER("debug.DumpCallGraph", CallGraphDumper, "Display Call Graph") |
| CHECKER("debug.ViewCallGraph", CallGraphViewer, "View Call Graph using GraphViz") |
| CHECKER("alpha.core.CastSize", CastSizeChecker, "Check when casting a malloc'ed type T, whether the size is a multiple of the size of T") |
| CHECKER("alpha.core.CastToStruct", CastToStructChecker, "Check for cast from non-struct pointer to struct pointer") |
| CHECKER("alpha.unix.Chroot", ChrootChecker, "Check improper use of chroot") |
| CHECKER("osx.cocoa.ClassRelease", ClassReleaseChecker, "Check for sending 'retain', 'release', or 'autorelease' directly to a Class") |
| CHECKER("alpha.clone.CloneChecker", CloneChecker, "Reports similar pieces of code.") |
| CHECKER("debug.ConfigDumper", ConfigDumper, "Dump config table") |
| CHECKER("alpha.core.Conversion", ConversionChecker, "Loss of sign/precision in implicit conversions") |
| CHECKER("valist.CopyToSelf", CopyToSelfChecker, "Check for va_lists which are copied onto itself.") |
| CHECKER("deadcode.DeadStores", DeadStoresChecker, "Check for values stored to variables that are never read afterwards") |
| CHECKER("alpha.cplusplus.DeleteWithNonVirtualDtor", DeleteWithNonVirtualDtorChecker, "Reports destructions of polymorphic objects with a non-virtual destructor in their base class") |
| CHECKER("core.NullDereference", DereferenceChecker, "Check for dereferences of null pointers") |
| CHECKER("alpha.osx.cocoa.DirectIvarAssignment", DirectIvarAssignment, "Check for direct assignments to instance variables") |
| CHECKER("alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions", DirectIvarAssignmentForAnnotatedFunctions, "Check for direct assignments to instance variables in the methods annotated with objc_no_direct_instance_variable_assignment") |
| CHECKER("core.DivideZero", DivZeroChecker, "Check for division by zero") |
| CHECKER("debug.DumpDominators", DominatorsTreeDumper, "Print the dominance tree for a given CFG") |
| CHECKER("alpha.core.DynamicTypeChecker", DynamicTypeChecker, "Check for cases where the dynamic and the static type of an object are unrelated.") |
| CHECKER("core.DynamicTypePropagation", DynamicTypePropagation, "Generate dynamic type information") |
| CHECKER("optin.osx.cocoa.localizability.EmptyLocalizationContextChecker", EmptyLocalizationContextChecker, "Check that NSLocalizedString macros include a comment for context") |
| CHECKER("alpha.cplusplus.EnumCastOutOfRange", EnumCastOutOfRangeChecker, "Check integer to enumeration casts for out of range values") |
| CHECKER("debug.ViewExplodedGraph", ExplodedGraphViewer, "View Exploded Graphs using GraphViz") |
| CHECKER("debug.ExprInspection", ExprInspectionChecker, "Check the analyzer's understanding of expressions") |
| CHECKER("alpha.core.FixedAddr", FixedAddressChecker, "Check for assignment of a fixed address to a pointer") |
| CHECKER("security.FloatLoopCounter", FloatLoopCounter, "Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP)") |
| CHECKER("optin.performance.GCDAntipattern", GCDAntipattern, "Check for performance anti-patterns when using Grand Central Dispatch") |
| CHECKER("apiModeling.google.GTest", GTestChecker, "Model gtest assertion APIs") |
| CHECKER("alpha.security.taint.TaintPropagation", GenericTaintChecker, "Generate taint information used by other checkers") |
| CHECKER("alpha.core.IdenticalExpr", IdenticalExprChecker, "Warn about unintended use of identical expressions in operators") |
| CHECKER("cplusplus.InnerPointer", InnerPointerChecker, "Check for inner pointers of C++ containers used after re/deallocation") |
| CHECKER("alpha.osx.cocoa.InstanceVariableInvalidation", InstanceVariableInvalidation, "Check that the invalidatable instance variables are invalidated in the methods annotated with objc_instance_variable_invalidator") |
| CHECKER("alpha.cplusplus.InvalidatedIterator", InvalidatedIteratorChecker, "Check for use of invalidated iterators") |
| CHECKER("alpha.cplusplus.IteratorRange", IteratorRangeChecker, "Check for iterators used outside their valid ranges") |
| CHECKER("alpha.llvm.Conventions", LLVMConventionsChecker, "Check code for LLVM codebase conventions") |
| CHECKER("debug.DumpLiveStmts", LiveStatementsDumper, "Print results of live statement analysis") |
| CHECKER("debug.DumpLiveVars", LiveVariablesDumper, "Print results of live variable analysis") |
| CHECKER("optin.mpi.MPI-Checker", MPIChecker, "Checks MPI code") |
| CHECKER("osx.SecKeychainAPI", MacOSKeychainAPIChecker, "Check for proper uses of Secure Keychain APIs") |
| CHECKER("osx.API", MacOSXAPIChecker, "Check for proper uses of various Apple APIs") |
| CHECKER("unix.Malloc", MallocChecker, "Check for memory leaks, double free, and use-after-free problems. Traces memory managed by malloc()/free().") |
| CHECKER("alpha.security.MallocOverflow", MallocOverflowSecurityChecker, "Check for overflows in the arguments to malloc()") |
| CHECKER("unix.MallocSizeof", MallocSizeofChecker, "Check for dubious malloc arguments involving sizeof") |
| CHECKER("unix.MismatchedDeallocator", MismatchedDeallocatorChecker, "Check for mismatched deallocators.") |
| CHECKER("alpha.cplusplus.MismatchedIterator", MismatchedIteratorChecker, "Check for use of iterators of different containers where iterators of the same container are expected") |
| CHECKER("alpha.osx.cocoa.MissingInvalidationMethod", MissingInvalidationMethod, "Check that the invalidation methods are present in classes that contain invalidatable instance variables") |
| CHECKER("alpha.security.MmapWriteExec", MmapWriteExecChecker, "Warn on mmap() calls that are both writable and executable") |
| CHECKER("cplusplus.Move", MoveChecker, "Find use-after-move bugs in C++") |
| CHECKER("osx.cocoa.NSAutoreleasePool", NSAutoreleasePoolChecker, "Warn for suboptimal uses of NSAutoreleasePool in Objective-C GC mode") |
| CHECKER("osx.cocoa.NSError", NSErrorChecker, "Check usage of NSError** parameters") |
| CHECKER("cplusplus.NewDelete", NewDeleteChecker, "Check for double-free and use-after-free problems. Traces memory managed by new/delete.") |
| CHECKER("cplusplus.NewDeleteLeaks", NewDeleteLeaksChecker, "Check for memory leaks. Traces memory managed by new/delete.") |
| CHECKER("osx.cocoa.NilArg", NilArgChecker, "Check for prohibited nil arguments to ObjC method calls") |
| CHECKER("core.builtin.NoReturnFunctions", NoReturnFunctionChecker, "Evaluate \"panic\" functions that are known to not return to the caller") |
| CHECKER("optin.osx.cocoa.localizability.NonLocalizedStringChecker", NonLocalizedStringChecker, "Warns about uses of non-localized NSStrings passed to UI methods expecting localized NSStrings") |
| CHECKER("core.NonNullParamChecker", NonNullParamChecker, "Check for null pointers passed as arguments to a function whose arguments are references or marked with the 'nonnull' attribute") |
| CHECKER("core.NonnilStringConstants", NonnullGlobalConstantsChecker, "Assume that const string-like globals are non-null") |
| CHECKER("nullability.NullPassedToNonnull", NullPassedToNonnullChecker, "Warns when a null pointer is passed to a pointer which has a _Nonnull type.") |
| CHECKER("nullability.NullReturnedFromNonnull", NullReturnedFromNonnullChecker, "Warns when a null pointer is returned from a function that has _Nonnull return type.") |
| CHECKER("nullability.NullableDereferenced", NullableDereferencedChecker, "Warns when a nullable pointer is dereferenced.") |
| CHECKER("nullability.NullablePassedToNonnull", NullablePassedToNonnullChecker, "Warns when a nullable pointer is passed to a pointer which has a _Nonnull type.") |
| CHECKER("nullability.NullableReturnedFromNonnull", NullableReturnedFromNonnullChecker, "Warns when a nullable pointer is returned from a function that has _Nonnull return type.") |
| CHECKER("osx.NumberObjectConversion", NumberObjectConversionChecker, "Check for erroneous conversions of objects representing numbers into numbers") |
| CHECKER("osx.OSObjectRetainCount", OSObjectRetainCountChecker, "Check for leaks and improper reference count management for OSObject") |
| CHECKER("osx.cocoa.AtSync", ObjCAtSyncChecker, "Check for nil pointers used as mutexes for @synchronized") |
| CHECKER("osx.coreFoundation.containers.PointerSizedValues", ObjCContainersASTChecker, "Warns if 'CFArray', 'CFDictionary', 'CFSet' are created with non-pointer-size values") |
| CHECKER("osx.coreFoundation.containers.OutOfBounds", ObjCContainersChecker, "Checks for index out-of-bounds when using 'CFArray' API") |
| CHECKER("osx.cocoa.Dealloc", ObjCDeallocChecker, "Warn about Objective-C classes that lack a correct implementation of -dealloc") |
| CHECKER("osx.cocoa.ObjCGenerics", ObjCGenericsChecker, "Check for type errors when using Objective-C generics") |
| CHECKER("osx.cocoa.Loops", ObjCLoopChecker, "Improved modeling of loops using Cocoa collection types") |
| CHECKER("osx.cocoa.IncompatibleMethodTypes", ObjCMethSigsChecker, "Warn about Objective-C method signatures with type incompatibilities") |
| CHECKER("osx.cocoa.NonNilReturnValue", ObjCNonNilReturnValueChecker, "Model the APIs that are guaranteed to return a non-nil value") |
| CHECKER("osx.ObjCProperty", ObjCPropertyChecker, "Check for proper uses of Objective-C properties") |
| CHECKER("osx.cocoa.SelfInit", ObjCSelfInitChecker, "Check that 'self' is properly initialized inside an initializer method") |
| CHECKER("osx.cocoa.MissingSuperCall", ObjCSuperCallChecker, "Warn about Objective-C methods that lack a necessary call to super") |
| CHECKER("osx.cocoa.SuperDealloc", ObjCSuperDeallocChecker, "Warn about improper use of '[super dealloc]' in Objective-C") |
| CHECKER("osx.cocoa.UnusedIvars", ObjCUnusedIvarsChecker, "Warn about private ivars that are never used") |
| CHECKER("optin.performance.Padding", PaddingChecker, "Check for excessively padded structs.") |
| CHECKER("alpha.osx.cocoa.localizability.PluralMisuseChecker", PluralMisuseChecker, "Warns against using one vs. many plural pattern in code when generating localized strings.") |
| CHECKER("alpha.core.PointerArithm", PointerArithChecker, "Check for pointer arithmetic on locations other than array elements") |
| CHECKER("alpha.core.PointerSub", PointerSubChecker, "Check for pointer subtractions on two pointers pointing to different memory chunks") |
| CHECKER("alpha.unix.PthreadLock", PthreadLockChecker, "Simple lock -> unlock checker") |
| CHECKER("osx.cocoa.RetainCount", RetainCountChecker, "Check for leaks and improper reference count management") |
| CHECKER("alpha.security.ReturnPtrRange", ReturnPointerRangeChecker, "Check for an out-of-bound pointer being returned to callers") |
| CHECKER("core.uninitialized.UndefReturn", ReturnUndefChecker, "Check for uninitialized values being returned to the caller") |
| CHECKER("osx.cocoa.RunLoopAutoreleaseLeak", RunLoopAutoreleaseLeakChecker, "Check for leaked memory in autorelease pools that will never be drained") |
| CHECKER("alpha.unix.SimpleStream", SimpleStreamChecker, "Check for misuses of stream APIs") |
| CHECKER("alpha.core.SizeofPtr", SizeofPointerChecker, "Warn about unintended use of sizeof() on pointer expressions") |
| CHECKER("alpha.core.StackAddressAsyncEscape", StackAddrAsyncEscapeChecker, "Check that addresses to stack memory do not escape the function") |
| CHECKER("core.StackAddressEscape", StackAddrEscapeChecker, "Check that addresses to stack memory do not escape the function") |
| CHECKER("apiModeling.StdCLibraryFunctions", StdCLibraryFunctionsChecker, "Improve modeling of the C standard library functions") |
| CHECKER("alpha.unix.Stream", StreamChecker, "Check stream handling functions") |
| CHECKER("debug.TaintTest", TaintTesterChecker, "Mark tainted symbols as such.") |
| CHECKER("alpha.core.TestAfterDivZero", TestAfterDivZeroChecker, "Check for division by variable that is later compared against 0. Either the comparison is useless or there is division by zero.") |
| CHECKER("debug.DumpTraversal", TraversalDumper, "Print branch conditions as they are traversed by the engine") |
| CHECKER("apiModeling.TrustNonnull", TrustNonnullChecker, "Trust that returns from framework methods annotated with _Nonnull are not null") |
| CHECKER("security.insecureAPI.UncheckedReturn", UncheckedReturn, "Warn on uses of functions whose return values must be always checked") |
| CHECKER("core.uninitialized.Branch", UndefBranchChecker, "Check for uninitialized values used as branch conditions") |
| CHECKER("core.uninitialized.CapturedBlockVariable", UndefCapturedBlockVarChecker, "Check for blocks that capture uninitialized values") |
| CHECKER("core.UndefinedBinaryOperatorResult", UndefResultChecker, "Check for undefined results of binary operators") |
| CHECKER("core.uninitialized.ArraySubscript", UndefinedArraySubscriptChecker, "Check for uninitialized values used as array subscripts") |
| CHECKER("core.uninitialized.Assign", UndefinedAssignmentChecker, "Check for assigning uninitialized values") |
| CHECKER("valist.Uninitialized", UninitializedChecker, "Check for usages of uninitialized (or already released) va_lists.") |
| CHECKER("alpha.cplusplus.UninitializedObject", UninitializedObjectChecker, "Reports uninitialized fields after object construction") |
| CHECKER("unix.API", UnixAPIMisuseChecker, "Check calls to various UNIX/Posix functions") |
| CHECKER("optin.portability.UnixAPI", UnixAPIPortabilityChecker, "Finds implementation-defined behavior in UNIX/Posix functions") |
| CHECKER("alpha.deadcode.UnreachableCode", UnreachableCodeChecker, "Check unreachable code") |
| CHECKER("valist.Unterminated", UnterminatedChecker, "Check for va_lists which are not released by a va_end call.") |
| CHECKER("core.VLASize", VLASizeChecker, "Check for declarations of VLA of undefined or zero size") |
| CHECKER("osx.cocoa.VariadicMethodTypes", VariadicMethodTypeChecker, "Check for passing non-Objective-C types to variadic collection initialization methods that expect only Objective-C types") |
| CHECKER("unix.Vfork", VforkChecker, "Check for proper usage of vfork") |
| CHECKER("optin.cplusplus.VirtualCall", VirtualCallChecker, "Check virtual function calls during construction or destruction") |
| CHECKER("security.insecureAPI.bcmp", bcmp, "Warn on uses of the 'bcmp' function") |
| CHECKER("security.insecureAPI.bcopy", bcopy, "Warn on uses of the 'bcopy' function") |
| CHECKER("security.insecureAPI.bzero", bzero, "Warn on uses of the 'bzero' function") |
| CHECKER("security.insecureAPI.getpw", getpw, "Warn on uses of the 'getpw' function") |
| CHECKER("security.insecureAPI.gets", gets, "Warn on uses of the 'gets' function") |
| CHECKER("security.insecureAPI.mkstemp", mkstemp, "Warn when 'mkstemp' is passed fewer than 6 X's in the format string") |
| CHECKER("security.insecureAPI.mktemp", mktemp, "Warn on uses of the 'mktemp' function") |
| CHECKER("security.insecureAPI.rand", rand, "Warn on uses of the 'rand', 'random', and related functions") |
| CHECKER("security.insecureAPI.strcpy", strcpy, "Warn on uses of the 'strcpy' and 'strcat' functions") |
| CHECKER("security.insecureAPI.vfork", vfork, "Warn on uses of the 'vfork' function") |
| #endif // GET_CHECKERS |
| |