From: Aaron Ballman Date: Thu, 13 Dec 2018 20:55:34 +0000 (+0000) Subject: Update the scan-build to generate SARIF. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=444690c0644a045a9a46fc1f54df5ae27b797897;p=clang Update the scan-build to generate SARIF. This updates the scan-build perl script to allow outputting to sarif in a more natural fashion by specifying -sarif as a command line argument, similar to how -plist is already supported. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349082 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/scan-build/bin/scan-build b/tools/scan-build/bin/scan-build index 25aeb2bf64..fd0dd66b2d 100755 --- a/tools/scan-build/bin/scan-build +++ b/tools/scan-build/bin/scan-build @@ -1193,6 +1193,11 @@ OPTIONS: Display the description of defects in the list + -sarif + + By default the output of scan-build is a set of HTML files. This option + outputs the results in SARIF format. + -plist By default the output of scan-build is a set of HTML files. This option @@ -1665,6 +1670,12 @@ sub ProcessArgs { next; } + if ($arg eq "-sarif") { + shift @$Args; + $Options{OutputFormat} = "sarif"; + next; + } + if ($arg eq "-plist") { shift @$Args; $Options{OutputFormat} = "plist"; @@ -1888,9 +1899,12 @@ my $ExitStatus = RunBuildCommand(\@ARGV, $Options{IgnoreErrors}, $Options{KeepCC $Cmd, $CmdCXX, \%EnvVars); if (defined $Options{OutputFormat}) { - if ($Options{OutputFormat} =~ /plist/) { + if ($Options{OutputFormat} =~ /plist/ || + $Options{OutputFormat} =~ /sarif/) { Diag "Analysis run complete.\n"; - Diag "Analysis results (plist files) deposited in '$Options{OutputDir}'\n"; + Diag "Analysis results (" . + ($Options{OutputFormat} =~ /plist/ ? "plist" : "sarif") . + " files) deposited in '$Options{OutputDir}'\n"; } if ($Options{OutputFormat} =~ /html/) { # Postprocess the HTML directory. diff --git a/tools/scan-build/libexec/ccc-analyzer b/tools/scan-build/libexec/ccc-analyzer index 49bffc6a77..70afb5bcbb 100755 --- a/tools/scan-build/libexec/ccc-analyzer +++ b/tools/scan-build/libexec/ccc-analyzer @@ -746,9 +746,10 @@ if ($Action eq 'compile' or $Action eq 'link') { if (defined $OutputFormat) { push @AnalyzeArgs, "-analyzer-output=" . $OutputFormat; - if ($OutputFormat =~ /plist/) { + if ($OutputFormat =~ /plist/ || $OutputFormat =~ /sarif/) { # Change "Output" to be a file. - my ($h, $f) = tempfile("report-XXXXXX", SUFFIX => ".plist", + my $Suffix = $OutputFormat =~ /plist/ ? ".plist" : ".sarif"; + my ($h, $f) = tempfile("report-XXXXXX", SUFFIX => $Suffix, DIR => $HtmlDir); $ResultFile = $f; # If the HtmlDir is not set, we should clean up the plist files.