Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #32952

Re: A hypothetical compiler extension

From Martin Gregorie <martin@address-in-sig.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: A hypothetical compiler extension
Date 2015-10-28 11:50 +0000
Organization A noiseless patient Spider
Message-ID <n0qcpj$1e3$1@dont-email.me> (permalink)
References <extension-20151027221547@ram.dialup.fu-berlin.de> <n0pbf2$ld5$1@speranza.aioe.org>

Show all headers | View raw


On Tue, 27 Oct 2015 22:21:20 -0400, Arne Vajhøj wrote:

> On 10/27/2015 5:24 PM, Stefan Ram wrote:
>>    The following is hypothetical AFAIK, but wouldn't it be nice?
>>
>>    One calls
>>
>> javac -Xlint:null
>>
>>    and then
>>
>> void m( final java.lang.Object o )
>> { java.lang.System.out.println
>>    ( o.toString() ); }
>>
>>    gives
>>
>>    ( o.toString() ); }
>>      ^
>> Warning: o might be null.
>>
>>    . One rewrites to
>>
>> void m( final java.lang.Object o )
>> { if( o != null )
>>    java.lang.System.out.println ( o.toString() ); }
>>
>>    and the warning disappears.
>>
>>    Javac alread has path-value-analysis as it already can detect when a
>>    path of execution of a method (think of nested ifs) accesses a
>>    variable that has not been defined yet in this path.
> 
> I don't think it would be appropriate for the compiler to complain about
> something that very well may not be a problem due to something being
> done in the calling code.
> 
> Defensive coding is good, but it should be a developer choice not
> something that the compiler get involved in.
> 
> The local variable not having gotten a value is a slightly different
> case as it will either happen or the code has been structured badly for
> the task.
> 

There is a similar tool, 'lint' for C and has been for a very long time, 
though  Its name is 'lint'. There is an enhanced version, 'splint', which 
has replaced lint on some Linux distros. It is separate from the 
compiler. The preferred approach is to run lint after the source has been 
clean compiled. ake a look at their manpages or visit http://splint.org/
to see what it can do.

I don't see why you shouldn't write a similar program for Java if you're 
feeling keen, though much simpler programs are also useful and can be 
whipped up in no time by using awk or Perl. For instance, I have one, 
written in awk, that searches C source for insecure string functions, 
i.e. using the strcpy() function instead of strncpy(). Its useful for 
hardening older code.


-- 
martin@   | Martin Gregorie
gregorie. | Essex, UK
org       |

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: A hypothetical compiler extension Arne Vajhøj <arne@vajhoej.dk> - 2015-10-27 22:21 -0400
  Re: A hypothetical compiler extension Martin Gregorie <martin@address-in-sig.invalid> - 2015-10-28 11:50 +0000
    Re: A hypothetical compiler extension Arne Vajhøj <arne@vajhoej.dk> - 2015-10-28 20:09 -0400
      Re: A hypothetical compiler extension Martin Gregorie <martin@address-in-sig.invalid> - 2015-10-29 12:24 +0000
        Re: A hypothetical compiler extension Jeff Higgins <jeff@invalid.invalid> - 2015-10-29 18:36 -0400

csiph-web