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

Jordan Rose jordan_rose at apple.com
Thu Mar 21 16:14:26 PDT 2013


Author: jrose
Date: Thu Mar 21 18:14:26 2013
New Revision: 177678

URL: http://llvm.org/viewvc/llvm-project?rev=177678&view=rev
Log:
[analyzer] scan-build: emit errors on stderr, and exit(1) instead of exit(0).

PR14963

Modified:
    cfe/trunk/tools/scan-build/scan-build

Modified: cfe/trunk/tools/scan-build/scan-build
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/scan-build/scan-build?rev=177678&r1=177677&r2=177678&view=diff
==============================================================================
--- cfe/trunk/tools/scan-build/scan-build (original)
+++ cfe/trunk/tools/scan-build/scan-build Thu Mar 21 18:14:26 2013
@@ -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 {
   my $Dir = shift;
   Diag ("The analyzer encountered problems on some source files.\n");
@@ -68,14 +78,14 @@ sub DiagCrashes {
 
 sub DieDiag {
   if ($UseColor) {
-    print BOLD, RED "$Prog: ";
-    print RESET, RED @_;
-    print RESET;
+    print STDERR BOLD, RED "$Prog: ";
+    print STDERR RESET, RED @_;
+    print STDERR RESET;
   }
   else {
-    print "$Prog: ", @_;
+    print STDERR "$Prog: ", @_;
   }
-  exit(0);
+  exit 1;
 }
 
 ##----------------------------------------------------------------------------##
@@ -90,7 +100,7 @@ if (grep /^--help-checkers$/, @ARGV) {
 	my ($sign, $name, @text) = split ' ', $_;
 	print $name, $/ if $sign eq '+';
     }
-    exit 1;
+    exit 0;
 }
 
 ##----------------------------------------------------------------------------##
@@ -1310,16 +1320,14 @@ my $InternalStats;
 my $OutputFormat = "html";
 my $AnalyzerStats = 0;
 my $MaxLoop = 0;
+my $RequestDisplayHelp = 0;
+my $ForceDisplayHelp = 0;
+my $AnalyzerDiscoveryMethod;
 
 if (!@ARGV) {
-  DisplayHelp();
-  exit 1;
+  $ForceDisplayHelp = 1
 }
 
-
-my $displayHelp = 0;
-my $AnalyzerDiscoveryMethod;
-
 while (@ARGV) {
   
   # Scan for options we recognize.
@@ -1327,7 +1335,7 @@ while (@ARGV) {
   my $arg = $ARGV[0];
 
   if ($arg eq "-h" or $arg eq "--help") {
-    $displayHelp = 1;
+    $RequestDisplayHelp = 1;
     shift @ARGV;
     next;
   }
@@ -1507,9 +1515,9 @@ while (@ARGV) {
   last;
 }
 
-if (!@ARGV and $displayHelp == 0) {
-  Diag("No build command specified.\n\n");
-  $displayHelp = 1;
+if (!@ARGV and !$RequestDisplayHelp) {
+  ErrorDiag("No build command specified.\n\n");
+  $ForceDisplayHelp = 1;
 }
 
 # Find 'clang'
@@ -1519,7 +1527,7 @@ if (!defined $AnalyzerDiscoveryMethod) {
     $Clang = Cwd::realpath("$RealBin/clang");
   }
   if (!defined $Clang || ! -x $Clang) {
-    if (!$displayHelp) {
+    if (!$RequestDisplayHelp && !$ForceDisplayHelp) {
       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");
     }
@@ -1546,9 +1554,9 @@ else {
   }
 }
 
-if ($displayHelp) {
+if ($ForceDisplayHelp || $RequestDisplayHelp) {
   DisplayHelp();
-  exit 1;
+  exit $ForceDisplayHelp;
 }
 
 $ClangCXX = $Clang;





More information about the cfe-commits mailing list