This revision was automatically updated to reflect the committed changes.
Closed by commit rG5521236a1807: [analyzer] Re-land 0aba69e "Add test 
directory for scan-build." (authored by dergachev.a).

Changed prior to commit:
  https://reviews.llvm.org/D69781?vs=227815&id=242164#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69781/new/

https://reviews.llvm.org/D69781

Files:
  
clang/test/Analysis/scan-build/Inputs/multidirectory_project/directory1/file1.c
  
clang/test/Analysis/scan-build/Inputs/multidirectory_project/directory2/file2.c
  clang/test/Analysis/scan-build/Inputs/single_null_dereference.c
  clang/test/Analysis/scan-build/exclude_directories.test
  clang/test/Analysis/scan-build/help.test
  clang/test/Analysis/scan-build/html_output.test
  clang/test/Analysis/scan-build/lit.local.cfg
  clang/test/Analysis/scan-build/plist_html_output.test
  clang/test/Analysis/scan-build/plist_output.test

Index: clang/test/Analysis/scan-build/plist_output.test
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/plist_output.test
@@ -0,0 +1,26 @@
+// FIXME: Actually, "perl".
+REQUIRES: shell
+
+// FIXME: Should ideally work on Windows.
+UNSUPPORTED: system-windows
+
+RUN: rm -rf %t.output_dir && mkdir %t.output_dir
+RUN: %scan-build -plist -o %t.output_dir %clang %S/Inputs/single_null_dereference.c \
+RUN:     | FileCheck %s -check-prefix CHECK-STDOUT
+
+// Test plist output
+
+CHECK-STDOUT: scan-build: Using '{{.*}}' for static analysis
+CHECK-STDOUT: scan-build: Analysis run complete.
+CHECK-STDOUT: scan-build: Analysis results (plist files) deposited in '{{.*}}'
+
+// We expect a single plist file
+RUN: ls %t.output_dir/*/ | FileCheck %s -check-prefix CHECK-FILENAMES
+
+CHECK-FILENAMES: report-{{.*}}.plist
+
+// The report should describe the issue.
+RUN: cat %t.output_dir/*/report-*.plist \
+RUN:     | FileCheck %s -check-prefix CHECK-REPORT-PLIST-CONTENTS
+
+CHECK-REPORT-PLIST-CONTENTS: <key>type</key><string>Dereference of null pointer</string>
Index: clang/test/Analysis/scan-build/plist_html_output.test
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/plist_html_output.test
@@ -0,0 +1,26 @@
+// FIXME: Actually, "perl".
+REQUIRES: shell
+
+// FIXME: Should ideally work on Windows.
+UNSUPPORTED: system-windows
+
+RUN: rm -rf %t.output_dir && mkdir %t.output_dir
+RUN: %scan-build -plist-html -o %t.output_dir %clang %S/Inputs/single_null_dereference.c \
+RUN:     | FileCheck %s -check-prefix CHECK-STDOUT
+
+// Test combined plist and html output with -plist-html
+
+CHECK-STDOUT: scan-build: Using '{{.*}}' for static analysis
+CHECK-STDOUT: scan-build: Analysis run complete.
+CHECK-STDOUT: scan-build: Analysis results (plist files) deposited in '{{.*}}'
+CHECK-STDOUT: scan-build: 1 bug found.
+CHECK-STDOUT: scan-build: Run 'scan-view {{.*}}' to examine bug reports.
+
+// We expect both html files and the plist files.
+RUN: ls %t.output_dir/*/ | FileCheck %s -check-prefix CHECK-FILENAMES
+
+CHECK-FILENAMES: index.html
+CHECK-FILENAMES-DAG: report-{{.*}}.html
+CHECK-FILENAMES-DAG: report-{{.*}}.plist
+CHECK-FILENAMES: scanview.css
+CHECK-FILENAMES: sorttable.js
Index: clang/test/Analysis/scan-build/lit.local.cfg
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/lit.local.cfg
@@ -0,0 +1,18 @@
+# -*- Python -*-
+
+import lit.util
+import lit.formats
+import os
+
+use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL")
+config.test_format = lit.formats.ShTest(use_lit_shell == "0")
+
+config.substitutions.append(('%scan-build',
+                             '\'%s\' --use-analyzer=%s ' % (
+                                 lit.util.which('scan-build',
+                                                os.path.join(
+                                                    config.clang_src_dir,
+                                                    'tools',
+                                                    'scan-build',
+                                                    'bin')),
+                                 config.clang)))
Index: clang/test/Analysis/scan-build/html_output.test
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/html_output.test
@@ -0,0 +1,36 @@
+// FIXME: Actually, "perl".
+REQUIRES: shell
+
+// FIXME: Should ideally work on Windows.
+UNSUPPORTED: system-windows
+
+RUN: rm -rf %t.output_dir && mkdir %t.output_dir
+RUN: %scan-build -o %t.output_dir %clang %S/Inputs/single_null_dereference.c \
+RUN:     | FileCheck %s -check-prefix CHECK-STDOUT
+
+// Test html output
+
+CHECK-STDOUT: scan-build: Using '{{.*}}' for static analysis
+CHECK-STDOUT: scan-build: 1 bug found.
+CHECK-STDOUT: scan-build: Run 'scan-view {{.*}}' to examine bug reports.
+
+// We expect an index file, a file for the report, and sibling support files.
+RUN: ls %t.output_dir/*/ | FileCheck %s -check-prefix CHECK-FILENAMES
+
+CHECK-FILENAMES: index.html
+CHECK-FILENAMES: report-{{.*}}.html
+CHECK-FILENAMES: scanview.css
+CHECK-FILENAMES: sorttable.js
+
+
+// The index should have a link to the report for the single issue.
+RUN: cat %t.output_dir/*/index.html \
+RUN:     | FileCheck %s -check-prefix CHECK-INDEX-HTML
+
+CHECK-INDEX-HTML: <!-- REPORTBUG id="report-{{.*}}.html" -->
+
+// The report should describe the issue.
+RUN: cat %t.output_dir/*/report-*.html \
+RUN:     | FileCheck %s -check-prefix CHECK-REPORT-HTML
+
+CHECK-REPORT-HTML: <!-- BUGTYPE Dereference of null pointer -->
Index: clang/test/Analysis/scan-build/help.test
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/help.test
@@ -0,0 +1,24 @@
+// FIXME: Actually, "perl".
+REQUIRES: shell
+
+// FIXME: Should ideally work on Windows.
+UNSUPPORTED: system-windows
+
+RUN: %scan-build -h | FileCheck %s
+RUN: %scan-build --help | FileCheck %s
+
+Test for help output from scan-build.
+
+
+CHECK: USAGE: scan-build [options] <build command> [build options]
+
+...
+
+CHECK: AVAILABLE CHECKERS:
+...
+CHECK:  + core.NullDereference
+CHECK:    optin.performance.GCDAntipattern
+...
+
+
+
Index: clang/test/Analysis/scan-build/exclude_directories.test
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/exclude_directories.test
@@ -0,0 +1,40 @@
+// FIXME: Actually, "perl".
+REQUIRES: shell
+
+// FIXME: Should ideally work on Windows.
+UNSUPPORTED: system-windows
+
+RUN: rm -rf %t.output_dir && mkdir %t.output_dir
+RUN: %scan-build -o %t.output_dir %clang \
+RUN:     %S/Inputs/multidirectory_project/directory1/file1.c \
+RUN:     %S/Inputs/multidirectory_project/directory2/file2.c \
+RUN:     | FileCheck %s -check-prefix CHECK-NO-EXCLUDE
+
+// The purpose of this test is to ensure that the --exclude command line option
+// actually excludes reports from inside the specified directories.
+
+
+// First, let's make sure that without --exclude issues in both
+// directory1 and directory2 are found.
+CHECK-NO-EXCLUDE: scan-build: 2 bugs found.
+
+
+// Only one issue should be found when directory1 is excluded.
+RUN: rm -rf %t.output_dir && mkdir %t.output_dir
+RUN: %scan-build -o %t.output_dir --exclude directory1 %clang \
+RUN:     %S/Inputs/multidirectory_project/directory1/file1.c \
+RUN:     %S/Inputs/multidirectory_project/directory2/file2.c \
+RUN:     | FileCheck %s -check-prefix CHECK-EXCLUDE1
+
+CHECK-EXCLUDE1: scan-build: 1 bug found.
+
+
+// When both directories are excluded, no issues should be reported.
+RUN: rm -rf %t.output_dir && mkdir %t.output_dir
+RUN: %scan-build -o %t.output_dir --exclude directory1 --exclude directory2 %clang \
+RUN:     %S/Inputs/multidirectory_project/directory1/file1.c \
+RUN:     %S/Inputs/multidirectory_project/directory2/file2.c \
+RUN:     | FileCheck %s -check-prefix CHECK-EXCLUDE-BOTH
+
+CHECK-EXCLUDE-BOTH: scan-build: 0 bugs found.
+
Index: clang/test/Analysis/scan-build/Inputs/single_null_dereference.c
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/Inputs/single_null_dereference.c
@@ -0,0 +1,5 @@
+int main() {
+  int *p = 0;
+  *p = 7; // We expect a diagnostic about this.
+  return 0;
+}
Index: clang/test/Analysis/scan-build/Inputs/multidirectory_project/directory2/file2.c
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/Inputs/multidirectory_project/directory2/file2.c
@@ -0,0 +1,5 @@
+void function2(int *o) {
+  if (!o) {
+    *o = 7; // This will emit a null pointer diagnostic.
+  }
+}
Index: clang/test/Analysis/scan-build/Inputs/multidirectory_project/directory1/file1.c
===================================================================
--- /dev/null
+++ clang/test/Analysis/scan-build/Inputs/multidirectory_project/directory1/file1.c
@@ -0,0 +1,9 @@
+int main() {
+  return 0;
+}
+
+void function1(int *p) {
+  if (!p) {
+    *p = 7; // This will emit a null pointer diagnostic.
+  }
+}
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D69781: [analyzer]... Artem Dergachev via Phabricator via cfe-commits
    • [PATCH] D69781: [anal... Artem Dergachev via Phabricator via cfe-commits

Reply via email to