r338333 - [analyzer] CStringChecker: Remember to highlight the argument expression range.
Artem Dergachev via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 30 16:44:37 PDT 2018
Author: dergachev
Date: Mon Jul 30 16:44:37 2018
New Revision: 338333
URL: http://llvm.org/viewvc/llvm-project?rev=338333&view=rev
Log:
[analyzer] CStringChecker: Remember to highlight the argument expression range.
When emitting a bug report, it is important to highlight which argument of the
call-expression is causing the problem.
Before:
warning: Null pointer argument in call to string comparison function
strcmp(a, b);
^~~~~~~~~~~~
After:
warning: Null pointer argument in call to string comparison function
strcmp(a, b);
^ ~
Affects other output modes as well, not just text.
Differential Revision: https://reviews.llvm.org/D50028
Added:
cfe/trunk/test/Analysis/cstring-ranges.c
Modified:
cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp?rev=338333&r1=338332&r2=338333&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/CStringChecker.cpp Mon Jul 30 16:44:37 2018
@@ -552,6 +552,7 @@ void CStringChecker::emitNullArgBug(Chec
BuiltinBug *BT = static_cast<BuiltinBug *>(BT_Null.get());
auto Report = llvm::make_unique<BugReport>(*BT, WarningMsg, N);
+ Report->addRange(S->getSourceRange());
bugreporter::trackNullOrUndefValue(N, S, *Report);
C.emitReport(std::move(Report));
}
Added: cfe/trunk/test/Analysis/cstring-ranges.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/cstring-ranges.c?rev=338333&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/cstring-ranges.c (added)
+++ cfe/trunk/test/Analysis/cstring-ranges.c Mon Jul 30 16:44:37 2018
@@ -0,0 +1,15 @@
+// RUN: %clang_analyze_cc1 -analyzer-checker=unix.cstring -analyzer-output=text %s 2>&1 | FileCheck %s
+
+// This test verifies argument source range highlighting.
+// Otherwise we've no idea which of the arguments is null.
+
+char *strcpy(char *, const char *);
+
+void foo() {
+ char *a = 0, *b = 0;
+ strcpy(a, b);
+}
+
+// CHECK: warning: Null pointer argument in call to string copy function
+// CHECK-NEXT: strcpy(a, b);
+// CHECK-NEXT: ^ ~
More information about the cfe-commits
mailing list