Wish: Variable Not Used Warning

Koroskin Denis 2korden at gmail.com
Sun Jul 6 01:07:54 PDT 2008


On Sun, 06 Jul 2008 10:45:03 +0400, Walter Bright  
<newshound1 at digitalmars.com> 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?)
>
> 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.

Since DMD already has -w switch, why not make use of it? I think it would  
be a good practice to compile your code with -w on just once in a while,  
say, before a public release. This should enable more strick code  
checking, like unused methods, variables, unreachable code etc.



More information about the Digitalmars-d mailing list