Give extract-localizable-strings an option to treat warnings as errors
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 25 Dec 2014 22:45:31 +0000 (22:45 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 25 Dec 2014 22:45:31 +0000 (22:45 +0000)
https://bugs.webkit.org/show_bug.cgi?id=139943

Reviewed by Darin Adler.

Add a --treat-warnings-as-errors option, which makes the script emit its warnings as errors
and exit with a non-0 return code if it emitted any warnings.

* extract-localizable-strings.pl:
Added $treatWarningsAsErrors variable, set to true if the option is passed in.

(emitWarning): Added. If $treatWarningsAsErrors is true, omits the "warning: " token from
the message, which makes it appear as an error in Xcode, and sets $sawError to 1.

Replaced all print statements that printed warnings with calls to emitWarning.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@177741 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/extract-localizable-strings.pl

index d0403e1..818f145 100644 (file)
@@ -1,5 +1,23 @@
 2014-12-25  Dan Bernstein  <mitz@apple.com>
 
+        Give extract-localizable-strings an option to treat warnings as errors
+        https://bugs.webkit.org/show_bug.cgi?id=139943
+
+        Reviewed by Darin Adler.
+
+        Add a --treat-warnings-as-errors option, which makes the script emit its warnings as errors
+        and exit with a non-0 return code if it emitted any warnings.
+
+        * extract-localizable-strings.pl:
+        Added $treatWarningsAsErrors variable, set to true if the option is passed in.
+
+        (emitWarning): Added. If $treatWarningsAsErrors is true, omits the "warning: " token from
+        the message, which makes it appear as an error in Xcode, and sets $sawError to 1.
+
+        Replaced all print statements that printed warnings with calls to emitWarning.
+
+2014-12-25  Dan Bernstein  <mitz@apple.com>
+
         Bring the state of WEBCORE_EXPORT annotations closer to what the exports file specifies.
         https://bugs.webkit.org/show_bug.cgi?id=136172
 
index 126798c..c1791b6 100755 (executable)
@@ -53,16 +53,18 @@ my %isDebugMacro = ( ASSERT_WITH_MESSAGE => 1, LOG_ERROR => 1, ERROR => 1, NSURL
 my $verify;
 my $exceptionsFile;
 my @directoriesToSkip = ();
+my $treatWarningsAsErrors;
 
 my %options = (
     'verify' => \$verify,
     'exceptions=s' => \$exceptionsFile,
     'skip=s' => \@directoriesToSkip,
+    'treat-warnings-as-errors' => \$treatWarningsAsErrors,
 );
 
 GetOptions(%options);
 
-@ARGV >= 2 or die "Usage: extract-localizable-strings [--verify] [--exceptions <exceptions file>] <file to update> [--skip directory | directory]...\nDid you mean to run update-webkit-localizable-strings instead?\n";
+@ARGV >= 2 or die "Usage: extract-localizable-strings [--verify] [--treat-warnings-as-errors] [--exceptions <exceptions file>] <file to update> [--skip directory | directory]...\nDid you mean to run update-webkit-localizable-strings instead?\n";
 
 -f $exceptionsFile or die "Couldn't find exceptions file $exceptionsFile\n" unless !defined $exceptionsFile;
 
@@ -90,18 +92,26 @@ my $NSLocalizeCount = 0;
 my %exception;
 my %usedException;
 
+sub emitWarning($$$)
+{
+    my ($file, $line, $message) = @_;
+    my $prefix = $treatWarningsAsErrors ? "" : "warning: ";
+    print "$file:$line: $prefix$message\n";
+    $sawError = 1 if $treatWarningsAsErrors;
+}
+
 if (defined $exceptionsFile && open EXCEPTIONS, $exceptionsFile) {
     while (<EXCEPTIONS>) {
         chomp;
         if (/^"([^\\"]|\\.)*"$/ or /^[-_\/\w\s.]+.(h|m|mm|c|cpp)$/ or /^[-_\/\w\s.]+.(h|m|mm|c|cpp):"([^\\"]|\\.)*"$/) {
             if ($exception{$_}) {
-                print "$exceptionsFile:$.: warning: exception for $_ appears twice\n";
-                print "$exceptionsFile:$exception{$_}: warning: first appearance\n";
+                emitWarning($exceptionsFile, $., "exception for $_ appears twice");
+                emitWarning($exceptionsFile, $exception{$_}, "first appearance");
             } else {
                 $exception{$_} = $.;
             }
         } else {
-            print "$exceptionsFile:$.: warning: syntax error\n";
+            emitWarning($exceptionsFile, $., "syntax error");
         }
     }
     close EXCEPTIONS;
@@ -204,7 +214,7 @@ handleString:
                     } elsif ($exception{"$file:\"$string\""}) {
                         $usedException{"$file:\"$string\""} = 1;
                     } else {
-                        print "$file:$stringLine: warning: \"$string\" is not marked for localization\n" if $warnAboutUnlocalizedStrings;
+                        emitWarning($file, $stringLine, "\"$string\" is not marked for localization") if $warnAboutUnlocalizedStrings;
                         $notLocalizedCount++;
                     }
                 }
@@ -343,14 +353,14 @@ sub HandleUIString
     }
     
     if ($stringByKey{$key} && $stringByKey{$key} ne $string) {
-        print "$file:$line: warning: encountered the same key, \"$key\", twice, with different strings\n";
-        print "$fileByKey{$key}:$lineByKey{$key}: warning: previous occurrence\n";
+        emitWarning($file, $line, "encountered the same key, \"$key\", twice, with different strings");
+        emitWarning($fileByKey{$key}, $lineByKey{$key}, "previous occurrence");
         $keyCollisionCount++;
         return;
     }
     if ($commentByKey{$key} && $commentByKey{$key} ne $comment) {
-        print "$file:$line: warning: encountered the same key, \"$key\", twice, with different comments\n";
-        print "$fileByKey{$key}:$lineByKey{$key}: warning: previous occurrence\n";
+        emitWarning($file, $line, "encountered the same key, \"$key\", twice, with different comments");
+        emitWarning($fileByKey{$key}, $lineByKey{$key}, "previous occurrence");
         $keyCollisionCount++;
         return;
     }
@@ -366,7 +376,7 @@ print "\n" if $sawError || $notLocalizedCount || $NSLocalizeCount;
 my @unusedExceptions = sort grep { !$usedException{$_} } keys %exception;
 if (@unusedExceptions) {
     for my $unused (@unusedExceptions) {
-        print "$exceptionsFile:$exception{$unused}: warning: exception $unused not used\n";
+        emitWarning($exceptionsFile, $exception{$unused}, "exception $unused not used");
     }
     print "\n";
 }