
`clang/tools/scan-build` is implemented in `perl`. However given `perl` is not mentioned as a required dependency in `GettingStarted.rst` we should make this optional. This adds a `find_package(Perl)` check to cmake and disables the `scan-build` tests when no perl executable is found. Ideally we would also check if dependent perl modules like `Hash::Util` are present on the system, but I don't see any pre-existing cmake macros to easily test this. So for now I go with a plain check for the `perl` package, at least this allows to use `cmake -DCMAKE_DISABLE_FIND_PACKAGE_Perl=ON` to manually disable `perl` and the tests.
37 lines
1.2 KiB
Plaintext
37 lines
1.2 KiB
Plaintext
REQUIRES: shell
|
|
|
|
RUN: rm -rf %t.output_dir && mkdir %t.output_dir
|
|
RUN: %scan-build -o %t.output_dir %clang -S %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
|
|
|
|
// Tests for the front page.
|
|
RUN: cat %t.output_dir/*/index.html \
|
|
RUN: | FileCheck %s -check-prefix CHECK-INDEX-HTML
|
|
|
|
// Let's confirm that the new filtering facility is present.
|
|
CHECK-INDEX-HTML: Filter Results by File
|
|
|
|
// The index should have a link to the report for the single issue.
|
|
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 -->
|