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