iAs listed in the summary D77846, we have 5 different categories of bugs we're checking for in CallAndMessage. I think the documentation placed in the code explains my thought process behind my decisions quite well. A non-obvious change I had here is removing the entry for CallAndMessageUnInitRefArg. In fact, I removed the CheckerNameRef typed field back in D77845 (it was dead code), so that checker didn't really exist in any meaningful way anyways. Differential Revision: https://reviews.llvm.org/D77866
25 lines
972 B
C
25 lines
972 B
C
// RUN: %clang_analyze_cc1 %s -verify \
|
|
// RUN: -analyzer-checker=core \
|
|
// RUN: -analyzer-config core.CallAndMessage:ArgPointeeInitializedness=true \
|
|
// RUN: -analyzer-output=plist -o %t.plist
|
|
// RUN: cat %t.plist | FileCheck %s
|
|
|
|
// RUN: %clang_analyze_cc1 %s -verify=no-pointee \
|
|
// RUN: -analyzer-checker=core \
|
|
// RUN: -analyzer-config core.CallAndMessage:ArgPointeeInitializedness=false
|
|
|
|
// no-pointee-no-diagnostics
|
|
|
|
void doStuff_pointerToConstInt(const int *u){};
|
|
void pointee_uninit() {
|
|
int i;
|
|
int *p = &i;
|
|
doStuff_pointerToConstInt(p); // expected-warning{{1st function call argument is a pointer to uninitialized value [core.CallAndMessage]}}
|
|
}
|
|
|
|
// TODO: If this hash ever changes, turn
|
|
// core.CallAndMessage:ArgPointeeInitializedness from a checker option into a
|
|
// checker, as described in the CallAndMessage comments!
|
|
// CHECK: <key>issue_hash_content_of_line_in_context</key>
|
|
// CHECK-SAME: <string>97a74322d64dca40aa57303842c745a1</string>
|