[GRASS5] Re: src/libes/gmath
Glynn Clements
glynn.clements at virgin.net
Thu Aug 30 23:09:43 EDT 2001
Markus Neteler wrote:
> sorry to disturb again: Currently I try to compile
> gmath on CRAY. The CRAY compiler finds everything...
gcc will find a lot if you use '-Wall'. Here's a brief analysis of the
results:
2759 GRASS_copyright defined but not used
1818 unused variable `X'
1187 implicit declaration of function `X'
827 `X' might be used uninitialized in this function
506 return-type defaults to `int'
490 suggest parentheses around assignment used as truth value
275 control reaches end of non-void function
250 `X' defined but not used
201 <standard input>:can't break line
175 use of `l' length character with `X' type character
102 X format, Y arg (arg N)
95 passing arg 3 of `Tcl_CreateCommand' from incompatible pointer type
93 embedded `\0' in format
66 `return' with no value, in function returning non-void
35 array subscript has type `char'
35 <standard input>:numeric expression expected (got `X')
32 suggest explicit braces to avoid ambiguous `else'
20 type defaults to `int' in declaration of `X'
14 format argument is not a pointer (arg #)
11 too many arguments for format
11 label `X' defined but not used
10 suggest parentheses around && within ||
10 `/*' within comment
8 suggest parentheses around comparison in operand of &
8 ignoring pragma: ident
5 value computed is not used
5 suggest parentheses around arithmetic in operand of |
5 suggest parentheses around + or - inside shift
5 missing braces around initializer for `X'
5 `X' declared `static' but never defined
5 <standard input>:`X' not defined (probable missing space after `X')
3 zero-length format string
3 unknown conversion type character `X' in format
3 too few arguments for format
3 suggest parentheses around comparison in operand of |
3 statement with no effect
2 variable `X' might be clobbered by `longjmp' or `vfork'
2 enumeration value `X' not handled in switch
2 `0' flag ignored with precision specifier and `d' format
1 spurious trailing `%' in format
1 no closing `]' for `%[' format
1 `main' is usually a function
1 <standard input>:can't find special character `X'
1 <standard input>:can't find character with input code 12
Total: 9094
Some of these are definitely harmless; others maybe not.
2759 GRASS_copyright defined but not used
Harmless, although a bit of a nuisance; XEmacs' next-error command is
a lot less useful when so many warnings are false alarms.
1187 implicit declaration of function `X'
Many of these can be fixed by adding the correct #include lines.
Others may need to have the header written.
This can cause problems, particularly for functions which have float
arguments, or on systems where long is larger than int.
827 `X' might be used uninitialized in this function
This may indicate a problem, or it may just indicate that the compiler
can't determine that the variable will always be initialised.
506 return-type defaults to `int'
Indicates a pre-ANSI prototype without an explicit return type.
Ideally these would be explicitly declared as returning either int or
void. Probably harmless.
490 suggest parentheses around assignment used as truth value
I.e. "if (foo = bar) ...". I found a couple of cases in the gmath
library where this was a real error. It's quite possible that some of
those 490 are also errors.
275 control reaches end of non-void function
Missing "return foo;" at the end of a function which returns a value.
Some of these are an artifact of the "return-type defaults to int"
issue, where the function should really return void but implicitly
returns int. Probably most are harmless, although some might be cases
where a function may return a garbage result.
250 `X' defined but not used
Messy but harmless.
175 use of `l' length character with `X' type character
[where `X' is `E', `e' or `f']
The 'l' modifier isn't valid for FP types in printf() etc (unlike
scanf() etc). Messy but harmless.
102 X format, Y arg (arg #)
Most of these look problematic, although about half of those are down
to these two cases:
25 int format, long int arg (arg #)
28 long int format, int arg (arg #)
Next:
95 passing arg 3 of `Tcl_CreateCommand' from incompatible pointer type
All of these are in src.contrib/GMSL/NVIZ2.2/src/init_commands.c
93 embedded `\0' in format
91 of these are in src/raster/r.agnps50/agnps-source/debugflg.c; the
author of which appears to have been unaware that string literals are
automatically NUL terminated.
66 `return' with no value, in function returning non-void
Some of these are an artifact of the "return-type defaults to int"
issue.
35 array subscript has type `char'
In 3 files; this usually causes problems with characters outside of
the 7-bit range.
Others which indicate actual problems:
14 format argument is not a pointer (arg N)
11 too many arguments for format
3 unknown conversion type character `X' in format
3 too few arguments for format
It might also be worth looking at the "suggest parentheses" warnings.
--
Glynn Clements <glynn.clements at virgin.net>
More information about the grass-dev
mailing list