hanchenye-llvm-project/clang/lib/StaticAnalyzer/Checkers
Devin Coughlin b2d2a018d6 [analyzer] Nullability: Treat nil _Nonnull ivar as invariant violation.
Treat a _Nonnull ivar that is nil as an invariant violation in a similar
fashion to how a nil _Nonnull parameter is treated as a precondition violation.

This avoids warning on defensive returns of nil on defensive internal
checks, such as the following common idiom:

@class InternalImplementation
@interface PublicClass {
  InternalImplementation * _Nonnull _internal;
}
-(id _Nonnull)foo;
@end

@implementation PublicClass
-(id _Nonnull)foo {
  if (!_internal)
    return nil; // no-warning

  return [_internal foo];
}
@end

rdar://problem/24485171

llvm-svn: 266157
2016-04-13 00:41:54 +00:00
..
AllocationDiagnostics.cpp
AllocationDiagnostics.h
AnalyzerStatsChecker.cpp Avoid overly large SmallPtrSet/SmallSet 2016-01-30 01:27:06 +00:00
ArrayBoundChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
ArrayBoundCheckerV2.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 19:38:18 +00:00
BasicObjCFoundationChecks.cpp Fix some Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-10 19:11:58 +00:00
BoolAssignmentChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
BuiltinFunctionChecker.cpp
CMakeLists.txt [analyzer] Detect duplicate [super dealloc] calls 2016-02-22 17:56:24 +00:00
CStringChecker.cpp [analyzer] Invalidate destination of std::copy() and std::copy_backward(). 2016-02-07 16:55:44 +00:00
CStringSyntaxChecker.cpp
CallAndMessageChecker.cpp [analyzer] Fix typo s/initalize/initialize/ 2016-03-23 16:14:12 +00:00
CastSizeChecker.cpp Refactor: Simplify boolean conditional return statements in lib/StaticAnalyzer/Checkers 2015-12-28 13:06:58 +00:00
CastToStructChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
CheckObjCDealloc.cpp [analyzer] Add CIFIlter modeling to DeallocChecker. 2016-03-25 21:18:22 +00:00
CheckObjCInstMethSignature.cpp
CheckSecuritySyntaxOnly.cpp Test commit 2015-11-26 22:08:58 +00:00
CheckSizeofPointer.cpp
CheckerDocumentation.cpp [analyzer] Add checker callback for beginning of function. 2016-02-19 01:35:10 +00:00
Checkers.td [analyzer] Move ObjCSuperDeallocChecker out of the alpha package. 2016-03-02 22:01:03 +00:00
ChrootChecker.cpp Fix some Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-10 19:11:58 +00:00
ClangCheckers.cpp
ClangSACheckers.h
DeadStoresChecker.cpp [analyzer] DeadStoresChecker: Treat locals captured by reference in C++ lambdas as escaped. 2015-11-20 01:53:44 +00:00
DebugCheckers.cpp [analyzer] Fix IssueHash generation. 2015-12-01 09:00:41 +00:00
DereferenceChecker.cpp [analyzer] Improve Nullability checker diagnostics 2016-01-29 18:43:15 +00:00
DirectIvarAssignment.cpp Use instance_properties instead of properties. NFC. 2016-01-26 18:05:23 +00:00
DivZeroChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
DynamicTypeChecker.cpp [Static Analyzer] Fixed a false positive case in DynamicTypeChecker when dealing with forward declarations. 2015-09-18 23:38:57 +00:00
DynamicTypePropagation.cpp Fix some Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-10 19:11:58 +00:00
ExprInspectionChecker.cpp [analyzer] Provide .def-files and visitors for SVal/SymExpr/MemRegion, v2. 2016-01-15 15:22:05 +00:00
FixedAddressChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
GenericTaintChecker.cpp Refactor: Simplify boolean conditional return statements in lib/StaticAnalyzer/Checkers 2015-12-28 13:06:58 +00:00
IdenticalExprChecker.cpp Refactor: Simplify boolean conditional return statements in lib/StaticAnalyzer/Checkers 2015-12-28 13:06:58 +00:00
InterCheckerAPI.h
IvarInvalidationChecker.cpp Remove redundant conditions of the form (A || (!A && B)) -> (A || B) 2016-04-11 08:26:13 +00:00
LLVMConventionsChecker.cpp
LocalizationChecker.cpp Simplify users of StringRef::{l,r}trim (clang) (NFC) 2016-02-16 02:14:44 +00:00
MacOSKeychainAPIChecker.cpp Refactor: Simplify boolean conditional return statements in lib/StaticAnalyzer/Checkers 2015-12-28 13:06:58 +00:00
MacOSXAPIChecker.cpp Simplify users of StringRef::{l,r}trim (clang) (NFC) 2016-02-16 02:14:44 +00:00
MallocChecker.cpp [analyzer] Fix missed leak from MSVC specific allocation functions 2016-03-08 01:21:51 +00:00
MallocOverflowSecurityChecker.cpp [analyzer] Discard malloc-overflow bug-report when a known size is malloc'ed. 2015-09-23 23:27:55 +00:00
MallocSizeofChecker.cpp
NSAutoreleasePoolChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
NSErrorChecker.cpp
NoReturnFunctionChecker.cpp [analyzer] Handle another Android assert function. 2015-12-30 00:08:59 +00:00
NonNullParamChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
NullabilityChecker.cpp [analyzer] Nullability: Treat nil _Nonnull ivar as invariant violation. 2016-04-13 00:41:54 +00:00
ObjCAtSyncChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
ObjCContainersASTChecker.cpp Refactor: Simplify boolean conditional return statements in lib/StaticAnalyzer/Checkers 2015-12-28 13:06:58 +00:00
ObjCContainersChecker.cpp Fix some Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-10 19:11:58 +00:00
ObjCMissingSuperCallChecker.cpp
ObjCSelfInitChecker.cpp Refactor: Simplify boolean conditional return statements in lib/StaticAnalyzer/Checkers 2015-12-28 13:06:58 +00:00
ObjCSuperDeallocChecker.cpp Move class into anonymous namespace. NFC. 2016-03-04 14:18:52 +00:00
ObjCUnusedIVarsChecker.cpp
PaddingChecker.cpp StaticAnalyzer: Avoid an unintentional copy 2016-03-22 17:50:05 +00:00
PointerArithChecker.cpp [analyzer] Improve pointer arithmetic checker. 2016-02-23 12:34:39 +00:00
PointerSubChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
PthreadLockChecker.cpp Fix some Clang-tidy modernize warnings, other minor fixes. 2015-11-04 21:37:17 +00:00
RetainCountChecker.cpp Put global classes into the appropriate namespace. 2015-10-28 13:54:16 +00:00
ReturnPointerRangeChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
ReturnUndefChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
SelectorExtras.h
SimpleStreamChecker.cpp [analyzer] Utility to match function calls. 2016-01-22 22:32:46 +00:00
StackAddrEscapeChecker.cpp [analyzer] Suppress stack address escape on CK_CopyAndAutoreleaseBlockObject. 2015-12-03 19:41:24 +00:00
StreamChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
TaintTesterChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
TestAfterDivZeroChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
TraversalChecker.cpp [analyzer] Add checker callback for beginning of function. 2016-02-19 01:35:10 +00:00
UndefBranchChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
UndefCapturedBlockVarChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
UndefResultChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
UndefinedArraySubscriptChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
UndefinedAssignmentChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
UnixAPIChecker.cpp [analyzer] Add generateErrorNode() APIs to CheckerContext. 2015-09-16 22:03:05 +00:00
UnreachableCodeChecker.cpp Avoid overly large SmallPtrSet/SmallSet 2016-01-30 01:27:06 +00:00
VLASizeChecker.cpp Fix some Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-10 19:11:58 +00:00
VforkChecker.cpp Fix Clang-tidy modernize-use-nullptr warnings; other minor fixes. 2016-01-26 19:01:06 +00:00
VirtualCallChecker.cpp