[PATCH] D50028: [analyzer] CStringChecker: Fix argument highlighting.

Phabricator via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 30 16:45:00 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rC338333: [analyzer] CStringChecker: Remember to highlight the argument expression range. (authored by dergachev, committed by ).

Repository:
  rC Clang

https://reviews.llvm.org/D50028

Files:
  lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  test/Analysis/cstring-ranges.c


Index: test/Analysis/cstring-ranges.c
===================================================================
--- test/Analysis/cstring-ranges.c
+++ test/Analysis/cstring-ranges.c
@@ -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: ^      ~
Index: lib/StaticAnalyzer/Checkers/CStringChecker.cpp
===================================================================
--- lib/StaticAnalyzer/Checkers/CStringChecker.cpp
+++ lib/StaticAnalyzer/Checkers/CStringChecker.cpp
@@ -552,6 +552,7 @@
 
     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));
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50028.158132.patch
Type: text/x-patch
Size: 1170 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180730/7de48d92/attachment.bin>


More information about the cfe-commits mailing list