b65bac1f2bbf516bfce2e0acf6f1647a1a470d80
[WebKit-https.git] / Source / WebInspectorUI / Scripts / remove-console-asserts.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Getopt::Long;
5 use File::Copy qw/move/;
6 use File::Temp qw/tempfile/;
7
8 our $inputScriptFilename;
9 our $outputScriptFilename;
10
11 GetOptions('input-script=s' => \$inputScriptFilename,
12            'output-script=s' => \$outputScriptFilename);
13
14 unless (defined $inputScriptFilename and defined $outputScriptFilename) {
15     print "Usage: $0 --input-script <path> --output-script <path>\n";
16     exit;
17 }
18
19 open IN, $inputScriptFilename or die;
20 our ($out, $tempFilename) = tempfile(UNLINK => 0) or die;
21
22 our $previousLine = "";
23 while (<IN>) {
24     # Warn about console.assert in control flow statement without braces. Can change logic when stripped.
25     if (/console\.assert/) {
26         if ($previousLine =~ /^\s*(for|if|else|while|do)\b/ && $previousLine !~ /\{\s*$/) {
27             print "WARNING: console.assert inside control flow statement without braces on line: $.: $_";
28         }
29     }
30
31     s/\s*console\.assert\(.*\);\s*//g;
32     print $out $_;
33     $previousLine = $_ if $_ !~ /^\s*$/;
34
35     # If console.assert is still on the line, either we missed a semicolon or it is multi-line. These did not get stripped.
36     if ($_ =~ /\s*console\.assert\(/) {
37         if ($_ =~ /\)\s*$/) {
38             print "WARNING: console.assert missing trailing semicolon on line $.: $_" ;
39         } else {
40             print "WARNING: Multi-line console.assert on line $.: $_" ;
41         }
42     }
43 }
44
45 close $out;
46 close IN;
47
48 move $tempFilename, $outputScriptFilename or die "$!";