diff options
author | Gabor Horvath <xazax.hun@gmail.com> | 2015-10-22 11:53:04 +0000 |
---|---|---|
committer | Gabor Horvath <xazax.hun@gmail.com> | 2015-10-22 11:53:04 +0000 |
commit | efec16307ccc3c1ed8a5e223cf075e51198e6376 (patch) | |
tree | 7fa5860179c42803cae91d27a71db7aadb6000c4 /clang/test/Analysis/inlining/path-notes.cpp | |
parent | b91bee06deefe77a51d0a39b06c086df19aec82c (diff) | |
download | bcm5719-llvm-efec16307ccc3c1ed8a5e223cf075e51198e6376.tar.gz bcm5719-llvm-efec16307ccc3c1ed8a5e223cf075e51198e6376.zip |
[analyzer] Bug identification
This patch adds hashes to the plist and html output to be able to identfy bugs
for suppressing false positives or diff results against a baseline. This hash
aims to be resilient for code evolution and is usable to identify bugs in two
different snapshots of the same software. One missing piece however is a
permanent unique identifier of the checker that produces the warning. Once that
issue is resolved, the hashes generated are going to change. Until that point
this feature is marked experimental, but it is suitable for early adoption.
Differential Revision: http://reviews.llvm.org/D10305
Original patch by: Bence Babati!
llvm-svn: 251011
Diffstat (limited to 'clang/test/Analysis/inlining/path-notes.cpp')
-rw-r--r-- | clang/test/Analysis/inlining/path-notes.cpp | 76 |
1 files changed, 57 insertions, 19 deletions
diff --git a/clang/test/Analysis/inlining/path-notes.cpp b/clang/test/Analysis/inlining/path-notes.cpp index 30725115c2a..2d6886f9a77 100644 --- a/clang/test/Analysis/inlining/path-notes.cpp +++ b/clang/test/Analysis/inlining/path-notes.cpp @@ -878,9 +878,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>2bf06135909de50c70d8390e77bddf9e</string> // CHECK-NEXT: <key>issue_context_kind</key><string>C++ method</string> // CHECK-NEXT: <key>issue_context</key><string>use</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>8</integer> @@ -1167,9 +1169,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>efde323086a985fe1e8ccc6cd0123c12</string> // CHECK-NEXT: <key>issue_context_kind</key><string>C++ method</string> // CHECK-NEXT: <key>issue_context</key><string>method</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>41</integer> @@ -1417,7 +1421,9 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8162ef7a27137328a4a7a131e8d52cbe</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>63</integer> @@ -1665,7 +1671,9 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>675157873c1414a885eb1f429b26f389</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>68</integer> @@ -1947,7 +1955,9 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>aff5e83726a1ce1144580e4c80bde47c</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>73</integer> @@ -2263,9 +2273,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>9484c73e190dfe4b8c6c5bdfad9700c1</string> // CHECK-NEXT: <key>issue_context_kind</key><string>C++ method</string> // CHECK-NEXT: <key>issue_context</key><string>operator=</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>78</integer> @@ -2615,9 +2627,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>a0f0ac76cf282b61236bfac7eb2eca62</string> // CHECK-NEXT: <key>issue_context_kind</key><string>C++ method</string> // CHECK-NEXT: <key>issue_context</key><string>operator=</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>83</integer> @@ -2903,7 +2917,9 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>74b213f52cad2a4cbfcc8c5766bdd974</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>88</integer> @@ -3151,9 +3167,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Division by zero</string> // CHECK-NEXT: <key>check_name</key><string>core.DivideZero</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>0d5730cf85cea686ed80d788ab666603</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>test</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>173</integer> @@ -3498,9 +3516,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Division by zero</string> // CHECK-NEXT: <key>check_name</key><string>core.DivideZero</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>992e0f2917d29d0977d09ee64b3d10ef</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>testRef</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>180</integer> @@ -3608,9 +3628,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Returning null reference</string> // CHECK-NEXT: <key>check_name</key><string>core.uninitialized.UndefReturn</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>ece17cf25bc055cbc118d903744a00cf</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>returnNullReference</string> -// CHECK-NEXT: <key>issue_hash</key><string>3</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>190</integer> @@ -3974,7 +3996,9 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>32677550226a34f422a4165a34f6a124</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>197</integer> @@ -4179,9 +4203,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>b5460cc5ca67af5b9f4943d7117f9bcf</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>testNonPrintableAssignment</string> -// CHECK-NEXT: <key>issue_hash</key><string>3</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>3</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>212</integer> @@ -4289,9 +4315,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>749bda64658e48896477213e90176f5e</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>test</string> -// CHECK-NEXT: <key>issue_hash</key><string>2</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>221</integer> @@ -4467,9 +4495,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>2f9098b97145118cf80f1c9f2b9f8a90</string> // CHECK-NEXT: <key>issue_context_kind</key><string>C++ method</string> // CHECK-NEXT: <key>issue_context</key><string>testGetDerefExprOnMemberExprWithADot</string> -// CHECK-NEXT: <key>issue_hash</key><string>4</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>4</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>237</integer> @@ -4577,9 +4607,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of undefined pointer value</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>41b38aba8763180af245befa02f63d61</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>testGetDerefExprOnMemberExprWithADot</string> -// CHECK-NEXT: <key>issue_hash</key><string>2</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>2</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>243</integer> @@ -4784,9 +4816,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Called C++ object pointer is null</string> // CHECK-NEXT: <key>check_name</key><string>core.CallAndMessage</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>8b577b362ffa5a7290d00d03635c1fca</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>testDeclRefExprToReferenceInGetDerefExpr</string> -// CHECK-NEXT: <key>issue_hash</key><string>8</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>8</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>261</integer> @@ -5005,9 +5039,11 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Division by zero</string> // CHECK-NEXT: <key>check_name</key><string>core.DivideZero</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>f7fcdbc77cfb95588c0e5b606288013d</string> // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> // CHECK-NEXT: <key>issue_context</key><string>generateNoteOnDefaultArgument</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>269</integer> @@ -5240,7 +5276,9 @@ namespace PR17746 { // CHECK-NEXT: <key>category</key><string>Logic error</string> // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> // CHECK-NEXT: <key>check_name</key><string>core.NullDereference</string> -// CHECK-NEXT: <key>issue_hash</key><string>1</string> +// CHECK-NEXT: <!-- This hash is experimental and going to change! --> +// CHECK-NEXT: <key>issue_hash_content_of_line_in_context</key><string>ff61a6b893cd2d64c7ccaa2a9805311d</string> +// CHECK-NEXT: <key>issue_hash_function_offset</key><string>1</string> // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>281</integer> |