PatchSet 4613 
Date: 2004/04/04 03:03:10
Author: doogie
Branch: HEAD
Tag: (none) 
Log:
* scripts/sort-warnings.pl:
  * The warnings hash is now a list, so that we can specify the check
    order.
  * Renamed a bunch of warnings, so they contain the -W parameter
    passed to gcc.
  * Added several warnings that were being skipped in the log.
  * Make a few warnings match multiple lines, to more info is
    displayed.
  * Fix use of uninitialized value.

Members: 
        ChangeLog:1.2190->1.2191 
        scripts/sort-warnings.pl:1.1->1.2 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2190 kaffe/ChangeLog:1.2191
--- kaffe/ChangeLog:1.2190      Sun Apr  4 01:52:20 2004
+++ kaffe/ChangeLog     Sun Apr  4 03:03:10 2004
@@ -1,5 +1,17 @@
 2004-04-03  Adam Heath <[EMAIL PROTECTED]>
 
+        * scripts/sort-warnings.pl:
+         * The warnings hash is now a list, so that we can specify the check
+           order.
+         * Renamed a bunch of warnings, so they contain the -W parameter
+           passed to gcc.
+         * Added several warnings that were being skipped in the log.
+         * Make a few warnings match multiple lines, to more info is
+           displayed.
+         * Fix use of uninitialized value.
+
+2004-04-03  Adam Heath <[EMAIL PROTECTED]>
+
         * scripts/sort-warnings.pl: Script to sort gcc warnings.
        * configure.ac, configure: Turn off -Wall, instead specifing each
          warning explicitly.
Index: kaffe/scripts/sort-warnings.pl
diff -u kaffe/scripts/sort-warnings.pl:1.1 kaffe/scripts/sort-warnings.pl:1.2
--- kaffe/scripts/sort-warnings.pl:1.1  Sun Apr  4 01:52:26 2004
+++ kaffe/scripts/sort-warnings.pl      Sun Apr  4 03:03:11 2004
@@ -4,47 +4,69 @@
 use warnings;
 use Data::Dumper;
 my $prefix_regex = qr/^([^:\n]+):(\d+): warning: /m;
+my $prefix_regex_noparam = qr/^(?:[^:\n]+):(?:\d+): warning: /m;
 my $prefix_regex2 = qr/^([^:\n]+):(\d+):(?:\d+): warning: /m;
 
 #<robilad> guilhem: ~3000 unique ones with -Wall -W -Wtraditional -Wundef -Wshadow 
-Wpointer-arith -Wbad-function-cast -Wcast-qual
 #          -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare 
-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes
 #          -Wmissing-declarations -Wmissing-noreturn -Wredundant-decls 
-Wnested-externs -Winline -Wlong-long
 
-my %warning_types = (
+my @warning_types = (
+       'missing-prototypes-mismatch'   => qr/${prefix_regex}no previous prototype for 
`([^']+)'\n${prefix_regex_noparam}type mismatch with previous implicit 
declaration\n${prefix_regex}previous implicit declaration of 
`[^']+'\n${prefix_regex_noparam}`[^']+' was previously implicitly declared to return 
`([^']+)'$/m,
+
+       '-Wformat-nonliteral'           => qr/${prefix_regex}format not a string 
literal, argument types not checked$/m,
+       '-Wimplicit-func-decl'          => qr/${prefix_regex}implicit declaration of 
function `([^']+)'$/m,
+       '-Wmissing-braces'              => qr/${prefix_regex}missing 
initializer\n${prefix_regex_noparam}\(near initialization for `([^']+)'\)$/m,
+       '-Wunused-parameter'            => qr/${prefix_regex}unused parameter 
`([^']+)'$/m,
+
+       '-Wfloat-equal'                 => qr/${prefix_regex}comparing floating point 
with == or != is unsafe$/m,
+
+       '-Wshadow:1'                    => qr/${prefix_regex}declaration of `([^']+)' 
shadows a global declaration\n${prefix_regex}shadowed declaration is here$/m,
+       '-Wshadow:2'                    => qr/${prefix_regex}declaration of `([^']+)' 
shadows a previous local\n${prefix_regex}shadowed declaration is here$/m,
+       '-Wpointer-arith:1'             => qr/${prefix_regex}pointer of type `([^']+)' 
used in arithmetic$/m,
+       '-Wpointer-arith:2'             => qr/${prefix_regex}pointer of type `([^']+)' 
used in subtraction$/m,
+       '-Wbad-function-cast'           => qr/${prefix_regex}cast does not match 
function type$/m,
+       '-Wcast-qual:1'                 => qr/${prefix_regex}cast discards qualifiers 
from pointer target type$/m,
+       '-Wcast-qual:2'                 => qr/${prefix_regex}initialization discards 
qualifiers from pointer target type$/m,
+       '-Wcast-qual:3'                 => qr/${prefix_regex}passing arg (\d+) of 
`([^']+)' discards qualifiers from pointer target type$/m,
+       '-Wcast-qual:4'                 => qr/${prefix_regex}return discards 
qualifiers from pointer target type$/m,
+       '-Wcast-qual:5'                 => qr/${prefix_regex}assignment discards 
qualifiers from pointer target type$/m,
+       '-Wcast-align:1'                => qr/${prefix_regex}padding struct size to 
alignment boundary$/m,
+       '-Wconversion:1'                => qr/${prefix_regex}negative integer 
implicitly converted to unsigned type$/m,
+       '-Wconversion:2'                => qr/${prefix_regex}passing arg (\d+) of 
`([^']+) makes (pointer) from (integer) without a cast$/m,
+       '-Wconversion:3'                => qr/${prefix_regex}passing arg (\d+) of 
`([^']+)' makes (pointer) from (integer) without a cast$/m,
+       '-W:sign-compare'               => qr/${prefix_regex}comparison of unsigned 
expression < 0 is always false$/m,
+       '-Wsign-compare:1'              => qr/${prefix_regex}comparison between signed 
and unsigned$/m,
+       '-Wsign-compare:2'              => qr/${prefix_regex}signed and unsigned type 
in conditional expression$/m,
+       '-Waggregate-return:1'          => qr/${prefix_regex}function call has 
aggregate value$/m,
+       '-Waggregate-return:2'          => qr/${prefix_regex}function returns an 
aggregate$/m,
+       '-Wstrict-prototypes'           => qr/${prefix_regex}non-static declaration 
for `([^']+)' follows static$/m,
+       '-Wmissing-prototypes'          => qr/${prefix_regex}no previous prototype for 
`([^']+)'$/m,
+       '-Wmissing-declarations:1'      => qr/${prefix_regex2}"([^"]+)" is not 
defined\s*$/m,
+       '-Wmissing-declarations:2'      => qr/${prefix_regex2}`([^']+)' is not 
defined\s*$/m,
+       '-Wmissing-noreturn'            => qr/${prefix_regex}function might be 
possible candidate for attribute `(noreturn)'$/m,
+       '-Wmissing-format-attribute'    => qr/${prefix_regex}function might be 
possible candidate for `printf' format attribute$/m,
+       '-Wpadded'                      => qr/${prefix_regex}padding struct to align 
`([^']+)'$/m,
+       '-Wredundant-decls'             => qr/${prefix_regex}redundant redeclaration 
of `([^']+)' in same scope\n${prefix_regex}previous declaration of `[^']+'$/m,
+       '-Wnested-externs'              => qr/${prefix_regex}nested extern declaration 
of `([^']+)'$/m,
+       '-Wunreachable-code'            => qr/${prefix_regex}will never be executed$/m,
+       '-Winline'                      => qr/${prefix_regex}inlining failed in call 
to `([^']+)'\n${prefix_regex}called from here$/m,
+
+
+
+
+
        'traditional-1'                 => qr/${prefix_regex}passing arg (\d+) of 
(?:`([^']+)'|(pointer to function)) with different width due to prototype$/m,
        'traditional-2'                 => qr/${prefix_regex}passing arg (\d+) of 
(?:`([^']+)'|(pointer to function)) as (unsigned|signed) due to prototype$/m,
        'traditional-3'                 => qr/${prefix_regex}passing arg (\d+) of 
`([^']+)' as `([^']+)' rather than `([^']+)' due to prototype$/m,
        'traditional-4'                 => qr/${prefix_regex}macro arg `([^']+)' would 
be stringified with -traditional\.$/m,
-       'shadow-1'                      => qr/${prefix_regex}declaration of `([^']+)' 
shadows a global declaration$/m,
-       'shadow-2'                      => qr/${prefix_regex}declaration of `([^']+)' 
shadows a previous local$/m,
-       'pointer-arith-1'               => qr/${prefix_regex}pointer of type `([^']+)' 
used in arithmetic$/m,
-       'pointer-arith-2'               => qr/${prefix_regex}pointer of type `([^']+)' 
used in subtraction$/m,
-       'bad-function-cast'             => qr/${prefix_regex}cast does not match 
function type$/m,
-       'cast-qual-1'                   => qr/${prefix_regex}cast discards qualifiers 
from pointer target type$/m,
-       'cast-qual-2'                   => qr/${prefix_regex}initialization discards 
qualifiers from pointer target type$/m,
-       'cast-qual-3'                   => qr/${prefix_regex}passing arg (\d+) of 
`([^']+)' discards qualifiers from pointer target type$/m,
-       'cast-qual-4'                   => qr/${prefix_regex}return discards 
qualifiers from pointer target type$/m,
-       'cast-qual-5'                   => qr/${prefix_regex}assignment discards 
qualifiers from pointer target type$/m,
-       'cast-align-1'                  => qr/${prefix_regex}padding struct size to 
alignment boundary$/m,
-       'cast-align-2'                  => qr/${prefix_regex}padding struct to align 
`([^']+)'$/m,
-       'conversion'                    => qr/${prefix_regex}negative integer 
implicitly converted to unsigned type$/m,
-       'sign-compare-1'                => qr/${prefix_regex}comparison of unsigned 
expression < 0 is always false$/m,
-       'sign-compare-2'                => qr/${prefix_regex}comparison between signed 
and unsigned$/m,
-       'sign-compare-3'                => qr/${prefix_regex}signed and unsigned type 
in conditional expression$/m,
-       'aggregate-return-1'            => qr/${prefix_regex}function call has 
aggregate value$/m,
-       'aggregate-return-2'            => qr/${prefix_regex}function returns an 
aggregate$/m,
-#      'strict-prototypes-1'           => qr/${prefix_regex}previous declaration of 
`([^']+)'$/m,
-       'strict-prototypes-1'           => qr/${prefix_regex}redundant redeclaration 
of `([^']+)' in same scope$/m,
-       'strict-prototypes-2'           => qr/${prefix_regex}non-static declaration 
for `([^']+)' follows static$/m,
-       'missing-prototypes'            => qr/${prefix_regex}no previous prototype for 
`([^']+)'$/m,
-       'missing-declarations-1'        => qr/${prefix_regex2}"([^"]+)" is not 
defined\s*$/m,
-       'missing-declarations-2'        => qr/${prefix_regex2}`([^']+)' is not 
defined\s*$/m,
-       'missing-noreturn'              => qr/${prefix_regex}function might be 
possible candidate for attribute `(noreturn)'$/m,
-       'attribute-formatf'             => qr/${prefix_regex}function might be 
possible candidate for `printf' format attribute$/m,
-       'redundant-decls'               => qr/${prefix_regex}redundant redeclaration 
of `([^']+)' in same scope$/m,
-       'nested-externs'                => qr/${prefix_regex}nested extern declaration 
of `([^']+)'$/m,
-       'unused'                        => qr/${prefix_regex}unused parameter 
`([^']+)'$/m,
-       'never-run'                     => qr/${prefix_regex}will never be executed$/m,
+       'traditional-5'                 => qr/${prefix_regex}passing arg (\d+) of 
`([^']+)' as (floating) rather than (integer) due to prototype$/m,
+
+
+       'implicit-func-decl-mismatch'   => qr/${prefix_regex}implicit declaration of 
function `([^']+)'$/m,
+       'deprecated-lvalue'             => qr/${prefix_regex}use of 
(compound|conditional|cast) expressions as lvalues is deprecated$/m,
+
+
 
 );
 
@@ -62,8 +84,8 @@
 my %errors;
 my $total_errors = 0;
 
-foreach my $type ( keys( %warning_types ) ) {
-       my $regex = $warning_types{ $type };
+for ( my $i = 0; $i + 1 < @warning_types; $i += 2 ) {
+       my ( $type, $regex ) = @warning_types[ $i .. $i+1 ];
 
 print( STDERR "\t$type\t\t" );
        my @matches;
@@ -101,7 +123,7 @@
                        my $params = $h2->{ $line };
                        foreach my $param ( @$params ) {
                                print( "\t\tLine: $line\n" );
-                               print( "\t\tParams: " . join( ',', @$param ) . "\n\n" 
) if ( @$params );
+                               print( "\t\tParams: " . join( ',', grep( { defined( $_ 
) } @$param ) ) . "\n\n" ) if ( @$params );
                        }
                }
        }

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to