[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).

PR14963

llvm-svn: 177678
This commit is contained in:
Jordan Rose 2013-03-21 23:14:26 +00:00
parent 5ef3fcb745
commit 83662f75ad
1 changed files with 27 additions and 19 deletions

View File

@ -58,6 +58,16 @@ sub Diag {
} }
} }
sub ErrorDiag {
if ($UseColor) {
print STDERR BOLD, RED "$Prog: ";
print STDERR RESET, RED @_;
print STDERR RESET;
} else {
print STDERR "$Prog: @_";
}
}
sub DiagCrashes { sub DiagCrashes {
my $Dir = shift; my $Dir = shift;
Diag ("The analyzer encountered problems on some source files.\n"); Diag ("The analyzer encountered problems on some source files.\n");
@ -68,14 +78,14 @@ sub DiagCrashes {
sub DieDiag { sub DieDiag {
if ($UseColor) { if ($UseColor) {
print BOLD, RED "$Prog: "; print STDERR BOLD, RED "$Prog: ";
print RESET, RED @_; print STDERR RESET, RED @_;
print RESET; print STDERR RESET;
} }
else { else {
print "$Prog: ", @_; print STDERR "$Prog: ", @_;
} }
exit(0); exit 1;
} }
##----------------------------------------------------------------------------## ##----------------------------------------------------------------------------##
@ -90,7 +100,7 @@ if (grep /^--help-checkers$/, @ARGV) {
my ($sign, $name, @text) = split ' ', $_; my ($sign, $name, @text) = split ' ', $_;
print $name, $/ if $sign eq '+'; print $name, $/ if $sign eq '+';
} }
exit 1; exit 0;
} }
##----------------------------------------------------------------------------## ##----------------------------------------------------------------------------##
@ -1310,16 +1320,14 @@ my $InternalStats;
my $OutputFormat = "html"; my $OutputFormat = "html";
my $AnalyzerStats = 0; my $AnalyzerStats = 0;
my $MaxLoop = 0; my $MaxLoop = 0;
my $RequestDisplayHelp = 0;
my $ForceDisplayHelp = 0;
my $AnalyzerDiscoveryMethod;
if (!@ARGV) { if (!@ARGV) {
DisplayHelp(); $ForceDisplayHelp = 1
exit 1;
} }
my $displayHelp = 0;
my $AnalyzerDiscoveryMethod;
while (@ARGV) { while (@ARGV) {
# Scan for options we recognize. # Scan for options we recognize.
@ -1327,7 +1335,7 @@ while (@ARGV) {
my $arg = $ARGV[0]; my $arg = $ARGV[0];
if ($arg eq "-h" or $arg eq "--help") { if ($arg eq "-h" or $arg eq "--help") {
$displayHelp = 1; $RequestDisplayHelp = 1;
shift @ARGV; shift @ARGV;
next; next;
} }
@ -1507,9 +1515,9 @@ while (@ARGV) {
last; last;
} }
if (!@ARGV and $displayHelp == 0) { if (!@ARGV and !$RequestDisplayHelp) {
Diag("No build command specified.\n\n"); ErrorDiag("No build command specified.\n\n");
$displayHelp = 1; $ForceDisplayHelp = 1;
} }
# Find 'clang' # Find 'clang'
@ -1519,7 +1527,7 @@ if (!defined $AnalyzerDiscoveryMethod) {
$Clang = Cwd::realpath("$RealBin/clang"); $Clang = Cwd::realpath("$RealBin/clang");
} }
if (!defined $Clang || ! -x $Clang) { if (!defined $Clang || ! -x $Clang) {
if (!$displayHelp) { if (!$RequestDisplayHelp && !$ForceDisplayHelp) {
DieDiag("error: Cannot find an executable 'clang' relative to scan-build." . DieDiag("error: Cannot find an executable 'clang' relative to scan-build." .
" Consider using --use-analyzer to pick a version of 'clang' to use for static analysis.\n"); " Consider using --use-analyzer to pick a version of 'clang' to use for static analysis.\n");
} }
@ -1546,9 +1554,9 @@ else {
} }
} }
if ($displayHelp) { if ($ForceDisplayHelp || $RequestDisplayHelp) {
DisplayHelp(); DisplayHelp();
exit 1; exit $ForceDisplayHelp;
} }
$ClangCXX = $Clang; $ClangCXX = $Clang;