]> granicus.if.org Git - clang/commit
[analyzer] New option to not suppress null return paths if an argument is null.
authorJordan Rose <jordan_rose@apple.com>
Mon, 29 Oct 2012 17:31:59 +0000 (17:31 +0000)
committerJordan Rose <jordan_rose@apple.com>
Mon, 29 Oct 2012 17:31:59 +0000 (17:31 +0000)
commit6a329ee7567cf3267ffab2bc755ea8c773d967e7
tree8f4780bdee5801577523055627d86128dcec72ff
parent09f7bf14d25bdc55cb715bc8d40600906848a409
[analyzer] New option to not suppress null return paths if an argument is null.

Our one basic suppression heuristic is to assume that functions do not
usually return NULL. However, when one of the arguments is NULL it is
suddenly much more likely that NULL is a valid return value. In this case,
we don't suppress the report here, but we do attach /another/ visitor to
go find out if this NULL argument also comes from an inlined function's
error path.

This new behavior, controlled by the 'avoid-suppressing-null-argument-paths'
analyzer-config option, is turned off by default. Turning it on produced
two false positives and no new true positives when running over LLVM/Clang.

This is one of the possible refinements to our suppression heuristics.
<rdar://problem/12350829>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166941 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
lib/StaticAnalyzer/Core/PathDiagnostic.cpp
test/Analysis/inlining/false-positive-suppression.c