Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #32952
| 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> |
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
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