Wish: Variable Not Used Warning

Don nospam at nospam.com.au
Mon Jul 7 01:23:15 PDT 2008


Walter Bright wrote:
> 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?)

I agree. Unfortunately, there's a problem with the 'optional' warnings 
we have in DMD right now. They are not optional for libraries. If a 
library generates warnings, then it is not usable by anyone who wants to 
compile with warnings enabled.

I'd love to see the warnings tightened up so that they can become bugs.

> 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