llvm-project/clang/lib/StaticAnalyzer/Checkers
Kristof Umann ffe93a1670 [analyzer][UninitializedObjectChecker] New flag to ignore guarded uninitialized fields
This patch is an implementation of the ideas discussed on the mailing list[1].

The idea is to somewhat heuristically guess whether the field that was confirmed
to be uninitialized is actually guarded with ifs, asserts, switch/cases and so
on. Since this is a syntactic check, it is very much prone to drastically
reduce the amount of reports the checker emits. The reports however that do not
get filtered out though have greater likelihood of them manifesting into actual
runtime errors.

[1] http://lists.llvm.org/pipermail/cfe-dev/2018-September/059255.html

Differential Revision: https://reviews.llvm.org/D51866

llvm-svn: 352959
2019-02-02 14:50:04 +00:00
..
MPI-Checker [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
RetainCountChecker [analyzer] Hotfix for RetainCountChecker: assert was too strong. 2019-02-01 23:06:44 +00:00
UninitializedObject [analyzer][UninitializedObjectChecker] New flag to ignore guarded uninitialized fields 2019-02-02 14:50:04 +00:00
AllocationState.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AnalysisOrderChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
AnalyzerStatsChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ArrayBoundChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ArrayBoundCheckerV2.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
BasicObjCFoundationChecks.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
BlockInCriticalSectionChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
BoolAssignmentChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
BuiltinFunctionChecker.cpp Add a new builtin: __builtin_dynamic_object_size 2019-01-30 20:34:53 +00:00
CMakeLists.txt [analyzer][NFC] Move CheckerRegistry from the Core directory to Frontend 2018-12-15 16:23:51 +00:00
CStringChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
CStringSyntaxChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CXXSelfAssignmentChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CallAndMessageChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
CastSizeChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CastToStructChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CheckObjCDealloc.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CheckObjCInstMethSignature.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CheckSecuritySyntaxOnly.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
CheckSizeofPointer.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CheckerDocumentation.cpp [analyzer] Fix a typo in docs 2019-01-29 10:15:52 +00:00
ChrootChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
CloneChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ConversionChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DeadStoresChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DebugCheckers.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DeleteWithNonVirtualDtorChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DereferenceChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DirectIvarAssignment.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
DivZeroChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DynamicTypeChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
DynamicTypePropagation.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
EnumCastOutOfRangeChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ExprInspectionChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
FixedAddressChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
GCDAntipatternChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
GTestChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
GenericTaintChecker.cpp [analyzer] NFC: GenericTaintChecker: Revise rule specification mechanisms. 2019-01-30 00:06:43 +00:00
IdenticalExprChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
InnerPointerChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
InterCheckerAPI.h [analyzer] Reimplement dependencies between checkers 2019-01-26 20:06:54 +00:00
IteratorChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
IvarInvalidationChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
LLVMConventionsChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
LocalizationChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
MacOSKeychainAPIChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
MacOSXAPIChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
MallocChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
MallocOverflowSecurityChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
MallocSizeofChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
MmapWriteExecChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
MoveChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
NSAutoreleasePoolChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
NSErrorChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
NoReturnFunctionChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
NonNullParamChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
NonnullGlobalConstantsChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
NullabilityChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
NumberObjectConversionChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCAtSyncChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCAutoreleaseWriteChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCContainersASTChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCContainersChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCMissingSuperCallChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCPropertyChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCSelfInitChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCSuperDeallocChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ObjCUnusedIVarsChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
PaddingChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
PointerArithChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
PointerSubChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
PthreadLockChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ReturnPointerRangeChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ReturnUndefChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
RunLoopAutoreleaseLeakChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
SimpleStreamChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
StackAddrEscapeChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
StdLibraryFunctionsChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
StreamChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
TaintTesterChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
TestAfterDivZeroChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
TraversalChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
TrustNonnullChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
UndefBranchChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
UndefCapturedBlockVarChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
UndefResultChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
UndefinedArraySubscriptChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
UndefinedAssignmentChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
UnixAPIChecker.cpp [analyzer] Split unix.API up to UnixAPIMisuseChecker and UnixAPIPortabilityChecker 2019-01-26 15:56:40 +00:00
UnreachableCodeChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
VLASizeChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
ValistChecker.cpp [analyzer] Add CheckerManager::getChecker, make sure that a registry function registers no more than 1 checker 2019-01-26 21:41:50 +00:00
VforkChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00
VirtualCallChecker.cpp [analyzer] Supply all checkers with a shouldRegister function 2019-01-26 14:23:08 +00:00