diff options
Diffstat (limited to 'clang/test')
4 files changed, 111 insertions, 0 deletions
diff --git a/clang/test/Analysis/html_diagnostics/td-hotfix.c b/clang/test/Analysis/html_diagnostics/td-hotfix.c new file mode 100644 index 00000000000..8595642ad0f --- /dev/null +++ b/clang/test/Analysis/html_diagnostics/td-hotfix.c @@ -0,0 +1,31 @@ +// RUN: rm -fR %t +// RUN: mkdir %t +// RUN: %clang_analyze_cc1 -analyzer-checker=core \ +// RUN: -analyzer-output=html -o %t -verify %s +// RUN: cat %t/report-*.html | FileCheck %s + +void bar(int); + +void foo() { + int a; + bar(a); // expected-warning{{1st function call argument is an uninitialized value}} +} + +// CHECK-LABEL: <div id="EndPath" class="msg msgEvent" style="margin-left:3ex"> +// CHECK-SAME: <table class="msgT"> +// CHECK-SAME: <tr> +// CHECK-SAME: <td valign="top"> +// CHECK-SAME: <div class="PathIndex PathIndexEvent">2</div> +// CHECK-SAME: </td> +// CHECK-SAME: <td> +// CHECK-SAME: <div class="PathNav"> +// CHECK-SAME: <a href="#Path1" title="Previous event (1)">←</a> +// CHECK-SAME: </div> +// CHECK-SAME: </td> +// CHECK-NOT: </td> +// CHECK-SAME: <td> +// CHECK-SAME: 1st function call argument is an uninitialized value +// CHECK-SAME: </td> +// CHECK-SAME: </tr> +// CHECK-SAME: </table> +// CHECK-SAME: </div> diff --git a/clang/test/Analysis/html_diagnostics/variable-popups-macro.c b/clang/test/Analysis/html_diagnostics/variable-popups-macro.c new file mode 100644 index 00000000000..83bda14d4f2 --- /dev/null +++ b/clang/test/Analysis/html_diagnostics/variable-popups-macro.c @@ -0,0 +1,28 @@ +// RUN: rm -fR %t +// RUN: mkdir %t +// RUN: %clang_analyze_cc1 -analyzer-checker=core \ +// RUN: -analyzer-output=html -o %t -verify %s +// RUN: cat %t/report-*.html | FileCheck %s + +void bar(int); + +#define MACRO if (b) + +void foo2() { + int a; + int b = 1; + MACRO + bar(a); // expected-warning{{1st function call argument is an uninitialized value}} +} + +// For now we don't emit popups inside macros due to UI limitations. +// Once we do, we should test it thoroughly. + +// CHECK-LABEL: <tr class="codeline" data-linenumber="14"> +// CHECK-NOT: <span class='variable'> +// CHECK-SAME: <span class='macro'> +// CHECK-SAME: MACRO +// CHECK-SAME: <span class='macro_popup'> +// CHECK-SAME: if (b) +// CHECK-SAME: </span> +// CHECK-SAME: </span> diff --git a/clang/test/Analysis/html_diagnostics/variable-popups-multiple.c b/clang/test/Analysis/html_diagnostics/variable-popups-multiple.c new file mode 100644 index 00000000000..d7a05b53e4f --- /dev/null +++ b/clang/test/Analysis/html_diagnostics/variable-popups-multiple.c @@ -0,0 +1,29 @@ +// RUN: rm -fR %t +// RUN: mkdir %t +// RUN: %clang_analyze_cc1 -analyzer-checker=core \ +// RUN: -analyzer-output=html -o %t -verify %s +// RUN: cat %t/report-*.html | FileCheck %s + +void bar(int); + +void foo() { + int a; + for (unsigned i = 0; i < 3; ++i) + if (i) + bar(a); // expected-warning{{1st function call argument is an uninitialized value}} +} + +// CHECK: <span class='variable'>i +// CHECK-SAME: <table class='variable_popup'><tbody><tr> +// CHECK-SAME: <td valign='top'> +// CHECK-SAME: <div class='PathIndex PathIndexPopUp'>2.1</div> +// CHECK-SAME: </td> +// CHECK-SAME: <td>'i' is 0</td> +// CHECK-SAME: </tr> +// CHECK-SAME: <tr> +// CHECK-SAME: <td valign='top'> +// CHECK-SAME: <div class='PathIndex PathIndexPopUp'>4.1</div> +// CHECK-SAME: </td> +// CHECK-SAME: <td>'i' is 1</td> +// CHECK-SAME: </tr></tbody></table> +// CHECK-SAME: </span> diff --git a/clang/test/Analysis/html_diagnostics/variable-popups-simple.c b/clang/test/Analysis/html_diagnostics/variable-popups-simple.c new file mode 100644 index 00000000000..cb2f3bf3226 --- /dev/null +++ b/clang/test/Analysis/html_diagnostics/variable-popups-simple.c @@ -0,0 +1,23 @@ +// RUN: rm -fR %t +// RUN: mkdir %t +// RUN: %clang_analyze_cc1 -analyzer-checker=core \ +// RUN: -analyzer-output=html -o %t -verify %s +// RUN: cat %t/report-*.html | FileCheck %s + +void bar(int); + +void foo2() { + int a; + int b = 1; + if (b) + bar(a); // expected-warning{{1st function call argument is an uninitialized value}} +} + +// CHECK: <span class='variable'>b +// CHECK-SAME: <table class='variable_popup'><tbody><tr> +// CHECK-SAME: <td valign='top'> +// CHECK-SAME: <div class='PathIndex PathIndexPopUp'>1.1</div> +// CHECK-SAME: </td> +// CHECK-SAME: <td>'b' is 1</td> +// CHECK-SAME: </tr></tbody></table> +// CHECK-SAME: </span> |