undef-value-caller.c revision c1c6a4981a4b50476d71c88f8dac81a1430885ed
1// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist -o %t %s 2// RUN: FileCheck --input-file %t %s 3 4#include "undef-value-callee.h" 5 6// This code used to cause a crash since we were not adding fileID of the header to the plist diagnostic. 7 8int test_calling_unimportant_callee(int argc, char *argv[]) { 9 int x; 10 callee(); 11 return x; // expected-warning {{Undefined or garbage value returned to caller}} 12} 13 14//CHECK: <dict> 15//CHECK: <key>files</key> 16//CHECK: <array> 17//CHECK: </array> 18//CHECK: <key>diagnostics</key> 19//CHECK: <array> 20//CHECK: <dict> 21//CHECK: <key>path</key> 22//CHECK: <array> 23//CHECK: <dict> 24//CHECK: <key>kind</key><string>event</string> 25//CHECK: <key>location</key> 26//CHECK: <dict> 27//CHECK: <key>line</key><integer>9</integer> 28//CHECK: <key>col</key><integer>3</integer> 29//CHECK: <key>file</key><integer>0</integer> 30//CHECK: </dict> 31//CHECK: <key>ranges</key> 32//CHECK: <array> 33//CHECK: <array> 34//CHECK: <dict> 35//CHECK: <key>line</key><integer>9</integer> 36//CHECK: <key>col</key><integer>3</integer> 37//CHECK: <key>file</key><integer>0</integer> 38//CHECK: </dict> 39//CHECK: <dict> 40//CHECK: <key>line</key><integer>9</integer> 41//CHECK: <key>col</key><integer>7</integer> 42//CHECK: <key>file</key><integer>0</integer> 43//CHECK: </dict> 44//CHECK: </array> 45//CHECK: </array> 46//CHECK: <key>depth</key><integer>0</integer> 47//CHECK: <key>extended_message</key> 48//CHECK: <string>Variable 'x' declared without an initial value</string> 49//CHECK: <key>message</key> 50//CHECK: <string>Variable 'x' declared without an initial value</string> 51//CHECK: </dict> 52//CHECK: <dict> 53//CHECK: <key>kind</key><string>control</string> 54//CHECK: <key>edges</key> 55//CHECK: <array> 56//CHECK: <dict> 57//CHECK: <key>start</key> 58//CHECK: <array> 59//CHECK: <dict> 60//CHECK: <key>line</key><integer>9</integer> 61//CHECK: <key>col</key><integer>3</integer> 62//CHECK: <key>file</key><integer>0</integer> 63//CHECK: </dict> 64//CHECK: <dict> 65//CHECK: <key>line</key><integer>9</integer> 66//CHECK: <key>col</key><integer>5</integer> 67//CHECK: <key>file</key><integer>0</integer> 68//CHECK: </dict> 69//CHECK: </array> 70//CHECK: <key>end</key> 71//CHECK: <array> 72//CHECK: <dict> 73//CHECK: <key>line</key><integer>10</integer> 74//CHECK: <key>col</key><integer>3</integer> 75//CHECK: <key>file</key><integer>0</integer> 76//CHECK: </dict> 77//CHECK: <dict> 78//CHECK: <key>line</key><integer>10</integer> 79//CHECK: <key>col</key><integer>8</integer> 80//CHECK: <key>file</key><integer>0</integer> 81//CHECK: </dict> 82//CHECK: </array> 83//CHECK: </dict> 84//CHECK: </array> 85//CHECK: </dict> 86//CHECK: <dict> 87//CHECK: <key>kind</key><string>control</string> 88//CHECK: <key>edges</key> 89//CHECK: <array> 90//CHECK: <dict> 91//CHECK: <key>start</key> 92//CHECK: <array> 93//CHECK: <dict> 94//CHECK: <key>line</key><integer>10</integer> 95//CHECK: <key>col</key><integer>3</integer> 96//CHECK: <key>file</key><integer>0</integer> 97//CHECK: </dict> 98//CHECK: <dict> 99//CHECK: <key>line</key><integer>10</integer> 100//CHECK: <key>col</key><integer>8</integer> 101//CHECK: <key>file</key><integer>0</integer> 102//CHECK: </dict> 103//CHECK: </array> 104//CHECK: <key>end</key> 105//CHECK: <array> 106//CHECK: <dict> 107//CHECK: <key>line</key><integer>11</integer> 108//CHECK: <key>col</key><integer>3</integer> 109//CHECK: <key>file</key><integer>0</integer> 110//CHECK: </dict> 111//CHECK: <dict> 112//CHECK: <key>line</key><integer>11</integer> 113//CHECK: <key>col</key><integer>8</integer> 114//CHECK: <key>file</key><integer>0</integer> 115//CHECK: </dict> 116//CHECK: </array> 117//CHECK: </dict> 118//CHECK: </array> 119//CHECK: </dict> 120//CHECK: <dict> 121//CHECK: <key>kind</key><string>event</string> 122//CHECK: <key>location</key> 123//CHECK: <dict> 124//CHECK: <key>line</key><integer>11</integer> 125//CHECK: <key>col</key><integer>3</integer> 126//CHECK: <key>file</key><integer>0</integer> 127//CHECK: </dict> 128//CHECK: <key>ranges</key> 129//CHECK: <array> 130//CHECK: <array> 131//CHECK: <dict> 132//CHECK: <key>line</key><integer>11</integer> 133//CHECK: <key>col</key><integer>10</integer> 134//CHECK: <key>file</key><integer>0</integer> 135//CHECK: </dict> 136//CHECK: <dict> 137//CHECK: <key>line</key><integer>11</integer> 138//CHECK: <key>col</key><integer>10</integer> 139//CHECK: <key>file</key><integer>0</integer> 140//CHECK: </dict> 141//CHECK: </array> 142//CHECK: </array> 143//CHECK: <key>depth</key><integer>0</integer> 144//CHECK: <key>extended_message</key> 145//CHECK: <string>Undefined or garbage value returned to caller</string> 146//CHECK: <key>message</key> 147//CHECK: <string>Undefined or garbage value returned to caller</string> 148//CHECK: </dict> 149//CHECK: </array> 150//CHECK: <key>description</key><string>Undefined or garbage value returned to caller</string> 151//CHECK: <key>category</key><string>Logic error</string> 152//CHECK: <key>type</key><string>Garbage return value</string> 153//CHECK: <key>issue_context_kind</key><string>function</string> 154//CHECK: <key>issue_context</key><string>test_calling_unimportant_callee</string> 155//CHECK: <key>issue_hash</key><string>3</string> 156//CHECK: <key>location</key> 157//CHECK: <dict> 158//CHECK: <key>line</key><integer>11</integer> 159//CHECK: <key>col</key><integer>3</integer> 160//CHECK: <key>file</key><integer>0</integer> 161//CHECK: </dict> 162//CHECK: </dict> 163//CHECK: </array> 164//CHECK: </dict> 165//CHECK: </plist> 166