Matthias Braun 2868e26d0a
Use cmake to find perl executable (#91275)
`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.
2024-05-08 07:35:47 -07:00

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 -->