Wish: Variable Not Used Warning
Walter Bright
newshound1 at digitalmars.com
Sat Jul 5 23:45:03 PDT 2008
Nick Sabalausky wrote:
> I don't suppose there's any chance of DMD getting a warning for
> variables/arguments that are declared but never accessed? Just today alone
> there's been two bugs I spent 10-30 minutes going nuts trying to track down
> that turned out to be variables I had intended to use but forgot to.
The problem with unused variable warnings is they are annoying when
you're developing code in an iterative manner. They get in the way when
you're commenting out sections of code to try and isolate a problem.
They can be a problem when using "version" and "static if" statements.
So, why not just turn off the warnings?
The problem with warnings is that if there are n warnings, there are
essentially n factorial different versions of the language. If you're
faced with compiling someone else's code (like you downloaded it off the
internet and have to compile it because it only is distributed as
source) and warnings go off, is that a bug in the code or not? What do
you do?
Some shops have a "thou shall compile with warnings enabled, and there
shall be no warning messages." That causes problems when you port the
code to a different compiler with a different, even contradictory,
notion of what is a warning. So then you wind up putting wacky things in
the code just to get the compiler to shut up about the warnings.
Those kind of things tend to interfere with the beauty of the code, and
since they are not necessary to the program's logic, they tend to
confuse and misdirect the maintenance programmer (why is this variable
pointlessly referenced here? Why is this unreachable return statement
here? Is this a bug?)
There is a place for warnings, however. That is in a separate static
analysis tool (i.e. lint, coverity, etc.) which can be armed with all
kinds of heuristics with which to flag questionable constructs. I don't
think they should be part of the compiler, however.
More information about the Digitalmars-d
mailing list