================
@@ -0,0 +1,136 @@
+// RUN: grep -Ev "// *[A-Z-]+:" %s > %t-input.cpp
+// RUN: clang-tidy %t-input.cpp -checks='-*,clang-analyzer*' 
-export-sarif=%t.sarif > %t.msg 2>&1
+// RUN: FileCheck -input-file=%t.msg -check-prefix=CHECK-MESSAGES %s 
-implicit-check-not='{{warning|error|note}}:'
+// RUN: FileCheck -input-file=%t.sarif -check-prefix=CHECK-SARIF %s
+void f() {
+  int *ptr = nullptr;
+  *ptr = 1;
+}
+
+//CHECK-MESSAGES: -input.cpp:3:8: warning: Dereference of null pointer (loaded 
from variable 'ptr') [clang-analyzer-core.NullDereference]
+//CHECK-MESSAGES: -input.cpp:2:3: note: 'ptr' initialized to a null pointer 
value
+//CHECK-MESSAGES: -input.cpp:3:8: note: Dereference of null pointer (loaded 
from variable 'ptr')
+
+//CHECK-SARIF: {
+//CHECK-SARIF-NEXT:   "$schema": 
"https://docs.oasis-open.org/sarif/sarif/v2.1.0/cos02/schemas/sarif-schema-2.1.0.json";,
+//CHECK-SARIF-NEXT:   "runs": [
+//CHECK-SARIF-NEXT:     {
+//CHECK-SARIF-NEXT:       "artifacts": [
+//CHECK-SARIF-NEXT:         {
+//CHECK-SARIF-NEXT:           "length": {{[0-9]+}},
+//CHECK-SARIF-NEXT:           "location": {
+//CHECK-SARIF-NEXT:             "index": 0,
+//CHECK-SARIF-NEXT:             "uri": "{{.*}}-input.cpp"
+//CHECK-SARIF-NEXT:           },
+//CHECK-SARIF-NEXT:           "mimeType": "text/plain",
+//CHECK-SARIF-NEXT:           "roles": [
+//CHECK-SARIF-NEXT:             "resultFile"
+//CHECK-SARIF-NEXT:           ]
+//CHECK-SARIF-NEXT:         }
+//CHECK-SARIF-NEXT:       ],
+//CHECK-SARIF-NEXT:       "columnKind": "unicodeCodePoints",
+//CHECK-SARIF-NEXT:       "results": [
+//CHECK-SARIF-NEXT:         {
+//CHECK-SARIF-NEXT:           "codeFlows": [
+//CHECK-SARIF-NEXT:             {
+//CHECK-SARIF-NEXT:               "threadFlows": [
+//CHECK-SARIF-NEXT:                 {
+//CHECK-SARIF-NEXT:                   "locations": [
+//CHECK-SARIF-NEXT:                     {
+//CHECK-SARIF-NEXT:                       "importance": "important",
+//CHECK-SARIF-NEXT:                       "location": {
+//CHECK-SARIF-NEXT:                         "message": {
+//CHECK-SARIF-NEXT:                           "text": "'ptr' initialized to a 
null pointer value"
+//CHECK-SARIF-NEXT:                         },
+//CHECK-SARIF-NEXT:                         "physicalLocation": {
+//CHECK-SARIF-NEXT:                           "artifactLocation": {
+//CHECK-SARIF-NEXT:                             "index": 0,
+//CHECK-SARIF-NEXT:                             "uri": "{{.*}}-input.cpp"
+//CHECK-SARIF-NEXT:                           },
+//CHECK-SARIF-NEXT:                           "region": {
+//CHECK-SARIF-NEXT:                             "endColumn": 11,
+//CHECK-SARIF-NEXT:                             "endLine": 2,
+//CHECK-SARIF-NEXT:                             "startColumn": 3,
+//CHECK-SARIF-NEXT:                             "startLine": 2
+//CHECK-SARIF-NEXT:                           }
+//CHECK-SARIF-NEXT:                         }
+//CHECK-SARIF-NEXT:                       }
+//CHECK-SARIF-NEXT:                     },
+//CHECK-SARIF-NEXT:                     {
+//CHECK-SARIF-NEXT:                       "importance": "important",
+//CHECK-SARIF-NEXT:                       "location": {
+//CHECK-SARIF-NEXT:                         "message": {
+//CHECK-SARIF-NEXT:                           "text": "Dereference of null 
pointer (loaded from variable 'ptr')"
+//CHECK-SARIF-NEXT:                         },
+//CHECK-SARIF-NEXT:                         "physicalLocation": {
+//CHECK-SARIF-NEXT:                           "artifactLocation": {
+//CHECK-SARIF-NEXT:                             "index": 0,
+//CHECK-SARIF-NEXT:                              "uri": "{{.*}}-input.cpp"
+//CHECK-SARIF-NEXT:                           },
+//CHECK-SARIF-NEXT:                           "region": {
+//CHECK-SARIF-NEXT:                             "endColumn": 7,
+//CHECK-SARIF-NEXT:                             "endLine": 3,
+//CHECK-SARIF-NEXT:                             "startColumn": 4,
+//CHECK-SARIF-NEXT:                             "startLine": 3
+//CHECK-SARIF-NEXT:                           }
+//CHECK-SARIF-NEXT:                         }
+//CHECK-SARIF-NEXT:                       }
+//CHECK-SARIF-NEXT:                     }                      
+//CHECK-SARIF-NEXT:                   ]        
+//CHECK-SARIF-NEXT:                 }
+//CHECK-SARIF-NEXT:               ]
+//CHECK-SARIF-NEXT:             }
+//CHECK-SARIF-NEXT:           ],
+//CHECK-SARIF-NEXT:           "level": "warning",
+//CHECK-SARIF-NEXT:           "locations": [
+//CHECK-SARIF-NEXT:             {
+//CHECK-SARIF-NEXT:               "physicalLocation": {
+//CHECK-SARIF-NEXT:                 "artifactLocation": {
+//CHECK-SARIF-NEXT:                   "index": 0,
+//CHECK-SARIF-NEXT:                   "uri": "{{.*}}-input.cpp"
+//CHECK-SARIF-NEXT:                 },
+//CHECK-SARIF-NEXT:                 "region": {
+//CHECK-SARIF-NEXT:                   "endColumn": 7,
+//CHECK-SARIF-NEXT:                   "endLine": 3,
+//CHECK-SARIF-NEXT:                   "startColumn": 4,
+//CHECK-SARIF-NEXT:                   "startLine": 3
+//CHECK-SARIF-NEXT:                 }
+//CHECK-SARIF-NEXT:               }
+//CHECK-SARIF-NEXT:             }
+//CHECK-SARIF-NEXT:           ],
+//CHECK-SARIF-NEXT:           "message": {
+//CHECK-SARIF-NEXT:             "text": "Dereference of null pointer (loaded 
from variable 'ptr')"
+//CHECK-SARIF-NEXT:           },
+//CHECK-SARIF-NEXT:           "ruleId": "clang-analyzer-core.NullDereference",
+//CHECK-SARIF-NEXT:           "ruleIndex": 0
+//CHECK-SARIF-NEXT:         }
+//CHECK-SARIF-NEXT:       ],
+//CHECK-SARIF-NEXT:       "tool": {
+//CHECK-SARIF-NEXT:         "driver": {
+//CHECK-SARIF-NEXT:           "fullName": "clang-tidy",
+//CHECK-SARIF-NEXT:           "informationUri": 
"https://clang.llvm.org/docs/UsersManual.html";,
+//CHECK-SARIF-NEXT:           "language": "en-US",
+//CHECK-SARIF-NEXT:           "name": "clang-tidy",
+//CHECK-SARIF-NEXT:           "rules": [
+//CHECK-SARIF-NEXT:             {
+//CHECK-SARIF-NEXT:               "defaultConfiguration": {
+//CHECK-SARIF-NEXT:                 "enabled": true,
+//CHECK-SARIF-NEXT:                 "level": "warning",
+//CHECK-SARIF-NEXT:                 "rank": -1
+//CHECK-SARIF-NEXT:               },
+//CHECK-SARIF-NEXT:               "fullDescription": {
+//CHECK-SARIF-NEXT:                 "text": "Dereference of null pointer 
(loaded from variable 'ptr')"
----------------
t-a-james wrote:

@BaLiKfromUA , we don't consume SARIF from clang-tidy yet, so (whilst 
@matthew-j-code has done a very good job writing this code), I wouldn't be 
surprised if we'd misinterpreted some of the SARIF fields.  We're happy to take 
your recommendations!

https://github.com/llvm/llvm-project/pull/219182
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to