diff options
Diffstat (limited to 'clang/test/Analysis')
-rw-r--r-- | clang/test/Analysis/copypaste/blocks.cpp | 4 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/function-try-block.cpp | 4 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/functions.cpp | 4 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/macro-complexity.cpp | 8 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/macros.cpp | 10 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/objc-methods.m | 4 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp | 97 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/plist-diagnostics.cpp | 71 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/sub-sequences.cpp | 4 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/suspicious-clones.cpp | 20 | ||||
-rw-r--r-- | clang/test/Analysis/copypaste/text-diagnostics.cpp | 17 |
11 files changed, 29 insertions, 214 deletions
diff --git a/clang/test/Analysis/copypaste/blocks.cpp b/clang/test/Analysis/copypaste/blocks.cpp index 133b5cbcd6a..0bd981267e8 100644 --- a/clang/test/Analysis/copypaste/blocks.cpp +++ b/clang/test/Analysis/copypaste/blocks.cpp @@ -4,14 +4,14 @@ void log(); -auto BlockA = ^(int a, int b){ // expected-warning{{Duplicate code detected}} +auto BlockA = ^(int a, int b){ // expected-warning{{Detected code clone.}} log(); if (a > b) return a; return b; }; -auto BlockB = ^(int a, int b){ // expected-note{{Similar code here}} +auto BlockB = ^(int a, int b){ // expected-note{{Related code clone is here.}} log(); if (a > b) return a; diff --git a/clang/test/Analysis/copypaste/function-try-block.cpp b/clang/test/Analysis/copypaste/function-try-block.cpp index 7a69097579a..b13096d949a 100644 --- a/clang/test/Analysis/copypaste/function-try-block.cpp +++ b/clang/test/Analysis/copypaste/function-try-block.cpp @@ -3,7 +3,7 @@ // Tests if function try blocks are correctly handled. void nonCompoundStmt1(int& x) - try { x += 1; } catch(...) { x -= 1; } // expected-warning{{Duplicate code detected}} + try { x += 1; } catch(...) { x -= 1; } // expected-warning{{Detected code clone.}} void nonCompoundStmt2(int& x) - try { x += 1; } catch(...) { x -= 1; } // expected-note{{Similar code here}} + try { x += 1; } catch(...) { x -= 1; } // expected-note{{Related code clone is here.}} diff --git a/clang/test/Analysis/copypaste/functions.cpp b/clang/test/Analysis/copypaste/functions.cpp index c95443de72d..2a871f74b03 100644 --- a/clang/test/Analysis/copypaste/functions.cpp +++ b/clang/test/Analysis/copypaste/functions.cpp @@ -4,14 +4,14 @@ void log(); -int max(int a, int b) { // expected-warning{{Duplicate code detected}} +int max(int a, int b) { // expected-warning{{Detected code clone.}} log(); if (a > b) return a; return b; } -int maxClone(int x, int y) { // expected-note{{Similar code here}} +int maxClone(int x, int y) { // expected-note{{Related code clone is here.}} log(); if (x > y) return x; diff --git a/clang/test/Analysis/copypaste/macro-complexity.cpp b/clang/test/Analysis/copypaste/macro-complexity.cpp index aca4df1d025..58b884ab436 100644 --- a/clang/test/Analysis/copypaste/macro-complexity.cpp +++ b/clang/test/Analysis/copypaste/macro-complexity.cpp @@ -11,11 +11,11 @@ // This confirms that with the current configuration the macro body would be // considered large enough to pass the MinimumCloneComplexity constraint. -int manualMacro(int a, int b) { // expected-warning{{Duplicate code detected}} +int manualMacro(int a, int b) { // expected-warning{{Detected code clone.}} return a > b ? -a * a : -b * b; } -int manualMacroClone(int a, int b) { // expected-note{{Similar code here}} +int manualMacroClone(int a, int b) { // expected-note{{Related code clone is here.}} return a > b ? -a * a : -b * b; } @@ -41,10 +41,10 @@ int macroClone(int a, int b) { #define NEG(A) -(A) -int nestedMacros() { // expected-warning{{Duplicate code detected}} +int nestedMacros() { // expected-warning{{Detected code clone.}} return NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(1)))))))))); } -int nestedMacrosClone() { // expected-note{{Similar code here}} +int nestedMacrosClone() { // expected-note{{Related code clone is here.}} return NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(NEG(1)))))))))); } diff --git a/clang/test/Analysis/copypaste/macros.cpp b/clang/test/Analysis/copypaste/macros.cpp index db9b4c6ee2e..170e034095d 100644 --- a/clang/test/Analysis/copypaste/macros.cpp +++ b/clang/test/Analysis/copypaste/macros.cpp @@ -5,7 +5,7 @@ // to have the same complexity value. Macros have smaller complexity values // and need to be in their own hash group. -int foo(int a) { // expected-warning{{Duplicate code detected}} +int foo(int a) { // expected-warning{{Detected code clone.}} a = a + 1; a = a + 1 / 1; a = a + 1 + 1 + 1; @@ -15,7 +15,7 @@ int foo(int a) { // expected-warning{{Duplicate code detected}} return a; } -int fooClone(int a) { // expected-note{{Similar code here}} +int fooClone(int a) { // expected-note{{Related code clone is here.}} a = a + 1; a = a + 1 / 1; a = a + 1 + 1 + 1; @@ -30,7 +30,7 @@ int fooClone(int a) { // expected-note{{Similar code here}} #define ASSIGN(T, V) T = T + V -int macro(int a) { // expected-warning{{Duplicate code detected}} +int macro(int a) { // expected-warning{{Detected code clone.}} ASSIGN(a, 1); ASSIGN(a, 1 / 1); ASSIGN(a, 1 + 1 + 1); @@ -40,7 +40,7 @@ int macro(int a) { // expected-warning{{Duplicate code detected}} return a; } -int macroClone(int a) { // expected-note{{Similar code here}} +int macroClone(int a) { // expected-note{{Related code clone is here.}} ASSIGN(a, 1); ASSIGN(a, 1 / 1); ASSIGN(a, 1 + 1 + 1); @@ -54,7 +54,7 @@ int macroClone(int a) { // expected-note{{Similar code here}} #define EMPTY -int fooFalsePositiveClone(int a) { // expected-note{{Similar code here}} +int fooFalsePositiveClone(int a) { // expected-note{{Related code clone is here.}} a = EMPTY a + 1; a = a + 1 / 1; a = a + 1 + 1 + 1; diff --git a/clang/test/Analysis/copypaste/objc-methods.m b/clang/test/Analysis/copypaste/objc-methods.m index 9b8002c003a..0636447eb87 100644 --- a/clang/test/Analysis/copypaste/objc-methods.m +++ b/clang/test/Analysis/copypaste/objc-methods.m @@ -7,7 +7,7 @@ @end @implementation A -- (int) setOk : (int) a : (int) b { // expected-warning{{Duplicate code detected}} +- (int) setOk : (int) a : (int) b { // expected-warning{{Detected code clone.}} if (a > b) return a; return b; @@ -19,7 +19,7 @@ @end @implementation B -- (int) setOk : (int) a : (int) b { // expected-note{{Similar code here}} +- (int) setOk : (int) a : (int) b { // expected-note{{Related code clone is here.}} if (a > b) return a; return b; diff --git a/clang/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp b/clang/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp deleted file mode 100644 index 1180d447a7a..00000000000 --- a/clang/test/Analysis/copypaste/plist-diagnostics-notes-as-events.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// RUN: %clang_cc1 -analyze -analyzer-output=plist -analyzer-config notes-as-events=true -o %t.plist -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -verify %s -// RUN: FileCheck --input-file=%t.plist %s - -void log(); - -int max(int a, int b) { // expected-warning{{Duplicate code detected}} - log(); - if (a > b) - return a; - return b; -} - -int maxClone(int a, int b) { // no-note (converted into event) - log(); - if (a > b) - return a; - return b; -} - -// CHECK: <key>diagnostics</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>path</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>kind</key><string>event</string> -// CHECK-NEXT: <key>location</key> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>13</integer> -// CHECK-NEXT: <key>col</key><integer>28</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <key>ranges</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>13</integer> -// CHECK-NEXT: <key>col</key><integer>28</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>18</integer> -// CHECK-NEXT: <key>col</key><integer>1</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> -// CHECK-NEXT: </array> -// CHECK-NEXT: <key>depth</key><integer>0</integer> -// CHECK-NEXT: <key>extended_message</key> -// CHECK-NEXT: <string>Similar code here</string> -// CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Similar code here</string> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>kind</key><string>event</string> -// CHECK-NEXT: <key>location</key> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>6</integer> -// CHECK-NEXT: <key>col</key><integer>23</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <key>ranges</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>6</integer> -// CHECK-NEXT: <key>col</key><integer>23</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>11</integer> -// CHECK-NEXT: <key>col</key><integer>1</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> -// CHECK-NEXT: </array> -// CHECK-NEXT: <key>depth</key><integer>0</integer> -// CHECK-NEXT: <key>extended_message</key> -// CHECK-NEXT: <string>Duplicate code detected</string> -// CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Duplicate code detected</string> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> -// CHECK-NEXT: <key>description</key><string>Duplicate code detected</string> -// CHECK-NEXT: <key>category</key><string>Code clone</string> -// CHECK-NEXT: <key>type</key><string>Exact code clone</string> -// CHECK-NEXT: <key>check_name</key><string>alpha.clone.CloneChecker</string> -// CHECK-NEXT: <!-- This hash is experimental and going to change! --> -// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>3d15184f38c5fa57e479b744fe3f5035</string> -// CHECK-NEXT: <key>location</key> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>6</integer> -// CHECK-NEXT: <key>col</key><integer>23</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> diff --git a/clang/test/Analysis/copypaste/plist-diagnostics.cpp b/clang/test/Analysis/copypaste/plist-diagnostics.cpp deleted file mode 100644 index 109d8e4fc71..00000000000 --- a/clang/test/Analysis/copypaste/plist-diagnostics.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// RUN: %clang_cc1 -analyze -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -verify %s -// RUN: FileCheck --input-file=%t.plist %s - -void log(); - -int max(int a, int b) { // expected-warning{{Duplicate code detected}} - log(); - if (a > b) - return a; - return b; -} - -int maxClone(int a, int b) { // expected-note{{Similar code here}} - log(); - if (a > b) - return a; - return b; -} - -// FIXME: This plist output doesn't include the extra note on line 13. -// It should be updated once the format for extra notes in plists is defined. - -// CHECK: <key>diagnostics</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>path</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>kind</key><string>event</string> -// CHECK-NEXT: <key>location</key> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>6</integer> -// CHECK-NEXT: <key>col</key><integer>23</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <key>ranges</key> -// CHECK-NEXT: <array> -// CHECK-NEXT: <array> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>6</integer> -// CHECK-NEXT: <key>col</key><integer>23</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>11</integer> -// CHECK-NEXT: <key>col</key><integer>1</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> -// CHECK-NEXT: </array> -// CHECK-NEXT: <key>depth</key><integer>0</integer> -// CHECK-NEXT: <key>extended_message</key> -// CHECK-NEXT: <string>Duplicate code detected</string> -// CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Duplicate code detected</string> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> -// CHECK-NEXT: <key>description</key><string>Duplicate code detected</string> -// CHECK-NEXT: <key>category</key><string>Code clone</string> -// CHECK-NEXT: <key>type</key><string>Exact code clone</string> -// CHECK-NEXT: <key>check_name</key><string>alpha.clone.CloneChecker</string> -// CHECK-NEXT: <!-- This hash is experimental and going to change! --> -// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>3d15184f38c5fa57e479b744fe3f5035</string> -// CHECK-NEXT: <key>location</key> -// CHECK-NEXT: <dict> -// CHECK-NEXT: <key>line</key><integer>6</integer> -// CHECK-NEXT: <key>col</key><integer>23</integer> -// CHECK-NEXT: <key>file</key><integer>0</integer> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </dict> -// CHECK-NEXT: </array> diff --git a/clang/test/Analysis/copypaste/sub-sequences.cpp b/clang/test/Analysis/copypaste/sub-sequences.cpp index ff73632e435..59dc464ddc1 100644 --- a/clang/test/Analysis/copypaste/sub-sequences.cpp +++ b/clang/test/Analysis/copypaste/sub-sequences.cpp @@ -7,14 +7,14 @@ void log(); int max(int a, int b) { log2(a); - log(); // expected-warning{{Duplicate code detected}} + log(); // expected-warning{{Detected code clone.}} if (a > b) return a; return b; } int maxClone(int a, int b) { - log(); // expected-note{{Similar code here}} + log(); // expected-note{{Related code clone is here.}} if (a > b) return a; return b; diff --git a/clang/test/Analysis/copypaste/suspicious-clones.cpp b/clang/test/Analysis/copypaste/suspicious-clones.cpp index c64a1dc8b8f..fb22d38c850 100644 --- a/clang/test/Analysis/copypaste/suspicious-clones.cpp +++ b/clang/test/Analysis/copypaste/suspicious-clones.cpp @@ -8,14 +8,14 @@ int max(int a, int b) { log(); if (a > b) return a; - return b; // expected-note{{Similar code using 'b' here}} + return b; // expected-note{{suggestion is based on the usage of this variable in a similar piece of code}} } int maxClone(int x, int y, int z) { log(); if (x > y) return x; - return z; // expected-warning{{Potential copy-paste error; did you really mean to use 'z' here?}} + return z; // expected-warning{{suspicious code clone detected; did you mean to use 'y'?}} } // Tests finding a suspicious clone that references global variables. @@ -33,7 +33,7 @@ void busyIncrement() { while (true) { if (m1.try_lock()) { ++i; - m1.unlock(); // expected-note{{Similar code using 'm1' here}} + m1.unlock(); // expected-note{{suggestion is based on the usage of this variable in a similar piece of code}} if (i > 1000) { return; } @@ -45,7 +45,7 @@ void faultyBusyIncrement() { while (true) { if (m1.try_lock()) { ++i; - m2.unlock(); // expected-warning{{Potential copy-paste error; did you really mean to use 'm2' here?}} + m2.unlock(); // expected-warning{{suspicious code clone detected; did you mean to use 'm1'?}} if (i > 1000) { return; } @@ -58,14 +58,14 @@ void faultyBusyIncrement() { int foo(int a, int b, int c) { a += b + c; b /= a + b; - c -= b * a; // expected-warning{{Potential copy-paste error; did you really mean to use 'b' here?}} + c -= b * a; // expected-warning{{suspicious code clone detected; did you mean to use 'a'?}} return c; } int fooClone(int a, int b, int c) { a += b + c; b /= a + b; - c -= a * a; // expected-note{{Similar code using 'a' here}} + c -= a * a; // expected-note{{suggestion is based on the usage of this variable in a similar piece of code; did you mean to use 'b'?}} return c; } @@ -77,21 +77,21 @@ int fooClone(int a, int b, int c) { long bar1(long a, long b, long c, long d) { c = a - b; c = c / d * a; - d = b * b - c; // expected-warning{{Potential copy-paste error; did you really mean to use 'b' here?}} + d = b * b - c; // expected-warning{{suspicious code clone detected; did you mean to use 'c'?}} return d; } long bar2(long a, long b, long c, long d) { c = a - b; c = c / d * a; - d = c * b - c; // expected-note{{Similar code using 'c' here}} \ - // expected-warning{{Potential copy-paste error; did you really mean to use 'c' here?}} + d = c * b - c; // expected-note{{suggestion is based on the usage of this variable in a similar piece of code; did you mean to use 'b'?}} \ + // expected-warning{{suspicious code clone detected; did you mean to use 'a'?}} return d; } long bar3(long a, long b, long c, long d) { c = a - b; c = c / d * a; - d = a * b - c; // expected-note{{Similar code using 'a' here}} + d = a * b - c; // expected-note{{suggestion is based on the usage of this variable in a similar piece of code; did you mean to use 'c'?}} return d; } diff --git a/clang/test/Analysis/copypaste/text-diagnostics.cpp b/clang/test/Analysis/copypaste/text-diagnostics.cpp deleted file mode 100644 index a80afdb1eaf..00000000000 --- a/clang/test/Analysis/copypaste/text-diagnostics.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// RUN: %clang_cc1 -analyze -analyzer-output=text -std=c++11 -analyzer-checker=alpha.clone.CloneChecker -verify %s - -void log(); - -int max(int a, int b) { // expected-warning{{Duplicate code detected}} // expected-note{{Duplicate code detected}} - log(); - if (a > b) - return a; - return b; -} - -int maxClone(int a, int b) { // expected-note{{Similar code here}} - log(); - if (a > b) - return a; - return b; -} |