diff options
| author | Kristof Umann <dkszelethus@gmail.com> | 2019-03-08 16:00:42 +0000 |
|---|---|---|
| committer | Kristof Umann <dkszelethus@gmail.com> | 2019-03-08 16:00:42 +0000 |
| commit | 748c139adebf58b144bf4ecc2a2333d9ad66ecdc (patch) | |
| tree | b7cc366136d420ea201758a95e9db3cd1def8fac /clang/test/Analysis | |
| parent | 2827349c9d7e12fc05e6213c024d50bf59294cb1 (diff) | |
| download | bcm5719-llvm-748c139adebf58b144bf4ecc2a2333d9ad66ecdc.tar.gz bcm5719-llvm-748c139adebf58b144bf4ecc2a2333d9ad66ecdc.zip | |
[analyzer] Emit an error rather than assert on invalid checker option input
Asserting on invalid input isn't very nice, hence the patch to emit an error
instead.
This is the first of many patches to overhaul the way we handle checker options.
Differential Revision: https://reviews.llvm.org/D57850
llvm-svn: 355704
Diffstat (limited to 'clang/test/Analysis')
| -rw-r--r-- | clang/test/Analysis/copypaste/suspicious-clones.cpp | 5 | ||||
| -rw-r--r-- | clang/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp | 14 | ||||
| -rw-r--r-- | clang/test/Analysis/outofbound.c | 2 | ||||
| -rw-r--r-- | clang/test/Analysis/padding_c.c | 14 | ||||
| -rw-r--r-- | clang/test/Analysis/undef-buffers.c | 2 | ||||
| -rw-r--r-- | clang/test/Analysis/use-after-move.cpp | 11 |
6 files changed, 44 insertions, 4 deletions
diff --git a/clang/test/Analysis/copypaste/suspicious-clones.cpp b/clang/test/Analysis/copypaste/suspicious-clones.cpp index ae29b0e16d1..61eb45a37a0 100644 --- a/clang/test/Analysis/copypaste/suspicious-clones.cpp +++ b/clang/test/Analysis/copypaste/suspicious-clones.cpp @@ -1,4 +1,7 @@ -// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.clone.CloneChecker -analyzer-config alpha.clone.CloneChecker:ReportSuspiciousClones=true -analyzer-config alpha.clone.CloneChecker:ReportNormalClones=false -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 -verify %s +// RUN: %clang_analyze_cc1 -verify %s \ +// RUN: -analyzer-checker=alpha.clone.CloneChecker \ +// RUN: -analyzer-config alpha.clone.CloneChecker:ReportNormalClones=false \ +// RUN: -analyzer-config alpha.clone.CloneChecker:MinimumCloneComplexity=10 // Tests finding a suspicious clone that references local variables. diff --git a/clang/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp b/clang/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp index dc52afd9019..069f960b16d 100644 --- a/clang/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp +++ b/clang/test/Analysis/cxx-uninitialized-object-unionlike-constructs.cpp @@ -3,6 +3,20 @@ // RUN: -analyzer-config alpha.cplusplus.UninitializedObject:IgnoreRecordsWithField="[Tt]ag|[Kk]ind" \ // RUN: -std=c++11 -verify %s +// RUN: not %clang_analyze_cc1 -verify %s \ +// RUN: -analyzer-checker=core \ +// RUN: -analyzer-checker=alpha.cplusplus.UninitializedObject \ +// RUN: -analyzer-config \ +// RUN: alpha.cplusplus.UninitializedObject:IgnoreRecordsWithField="([)]" \ +// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-UNINIT-INVALID-REGEX + +// CHECK-UNINIT-INVALID-REGEX: (frontend): invalid input for checker option +// CHECK-UNINIT-INVALID-REGEX-SAME: 'alpha.cplusplus.UninitializedObject:IgnoreRecordsWithField', +// CHECK-UNINIT-INVALID-REGEX-SAME: that expects a valid regex, building failed +// CHECK-UNINIT-INVALID-REGEX-SAME: with error message "parentheses not +// CHECK-UNINIT-INVALID-REGEX-SAME: balanced" + + // expected-no-diagnostics // Both type and name contains "kind". diff --git a/clang/test/Analysis/outofbound.c b/clang/test/Analysis/outofbound.c index c4af1fbb901..60190b4bc35 100644 --- a/clang/test/Analysis/outofbound.c +++ b/clang/test/Analysis/outofbound.c @@ -2,7 +2,7 @@ // RUN: -analyzer-checker=core \ // RUN: -analyzer-checker=unix \ // RUN: -analyzer-checker=alpha.security.ArrayBound \ -// RUN: -analyzer-config unix:Optimistic=true +// RUN: -analyzer-config unix.DynamicMemoryModeling:Optimistic=true typedef __typeof(sizeof(int)) size_t; void *malloc(size_t); diff --git a/clang/test/Analysis/padding_c.c b/clang/test/Analysis/padding_c.c index f4178f54579..9e216a923e7 100644 --- a/clang/test/Analysis/padding_c.c +++ b/clang/test/Analysis/padding_c.c @@ -1,4 +1,16 @@ -// RUN: %clang_analyze_cc1 -analyzer-checker=optin.performance -analyzer-config optin.performance.Padding:AllowedPad=2 -verify %s +// RUN: %clang_analyze_cc1 -verify %s \ +// RUN: -analyzer-checker=optin.performance \ +// RUN: -analyzer-config optin.performance.Padding:AllowedPad=2 + +// RUN: not %clang_analyze_cc1 -verify %s \ +// RUN: -analyzer-checker=core \ +// RUN: -analyzer-checker=optin.performance.Padding \ +// RUN: -analyzer-config optin.performance.Padding:AllowedPad=-10 \ +// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-PAD-NEGATIVE-VALUE + +// CHECK-PAD-NEGATIVE-VALUE: (frontend): invalid input for checker option +// CHECK-PAD-NEGATIVE-VALUE-SAME: 'optin.performance.Padding:AllowedPad', that +// CHECK-PAD-NEGATIVE-VALUE-SAME: expects a non-negative value #if __has_include(<stdalign.h>) #include <stdalign.h> diff --git a/clang/test/Analysis/undef-buffers.c b/clang/test/Analysis/undef-buffers.c index 10a46c64f69..70db8eb6e55 100644 --- a/clang/test/Analysis/undef-buffers.c +++ b/clang/test/Analysis/undef-buffers.c @@ -2,7 +2,7 @@ // RUN: -analyzer-checker=core \ // RUN: -analyzer-checker=unix \ // RUN: -analyzer-checker=core.uninitialized \ -// RUN: -analyzer-config unix:Optimistic=true +// RUN: -analyzer-config unix.DynamicMemoryModeling:Optimistic=true typedef __typeof(sizeof(int)) size_t; void *malloc(size_t); diff --git a/clang/test/Analysis/use-after-move.cpp b/clang/test/Analysis/use-after-move.cpp index 435976c5a7c..837f4c732e9 100644 --- a/clang/test/Analysis/use-after-move.cpp +++ b/clang/test/Analysis/use-after-move.cpp @@ -27,6 +27,17 @@ // RUN: -analyzer-config cplusplus.Move:WarnOn=All -DAGGRESSIVE\ // RUN: -analyzer-checker debug.ExprInspection +// RUN: not %clang_analyze_cc1 -verify %s \ +// RUN: -analyzer-checker=core \ +// RUN: -analyzer-checker=cplusplus.Move \ +// RUN: -analyzer-config cplusplus.Move:WarnOn="a bunch of things" \ +// RUN: 2>&1 | FileCheck %s -check-prefix=CHECK-MOVE-INVALID-VALUE + +// CHECK-MOVE-INVALID-VALUE: (frontend): invalid input for checker option +// CHECK-MOVE-INVALID-VALUE-SAME: 'cplusplus.Move:WarnOn', that expects either +// CHECK-MOVE-INVALID-VALUE-SAME: "KnownsOnly", "KnownsAndLocals" or "All" +// CHECK-MOVE-INVALID-VALUE-SAME: string value + #include "Inputs/system-header-simulator-cxx.h" void clang_analyzer_warnIfReached(); |

