[cfe-dev] Missing dealloc analysis

Ted Kremenek kremenek at apple.com
Thu Jul 3 09:28:08 PDT 2008


Hi Nikita,

On Jul 2, 2008, at 10:35 PM, Nikita Zhuk wrote:

> I noticed the addition of missing dealloc analysis in r53075. It's a
> good idea to check that dealloc is implemented and that it always
> calls [super dealloc], but there're couple of points I would like to
> mention:
>
> 1. It should be disabled in GC environment, because dealloc methods
> are not called under GC

Done:

   http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080630/006371.html

> 2. In non-GC environment, the primary function of dealloc method is to
> update retain counts of variables the object being dealloced is
> pointing to. So that usually means that dealloc must be implemented
> when an object has some ivars. Dealloc is not always required, and
> there're lot of classes which don't need it (e.g. singleton classes).
> Currently missing dealloc analysis requires every class to implement
> dealloc and it's causing a lot of false positives.
>
> I'm not completely sure if absence of ivars should be the only factor
> which disables missing dealloc analysis, but at least in my case it
> would suppress a lot of false positives.

Done:

   http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080630/006373.html

Both commits are now rolled into checker-55 on the Clang website.

These are both great suggestions.  I remembered the GC/non-GC issue  
this morning before I read your email, and I can easily see how not  
checking to see if a class contains any ivars would lead to many false  
positives.  I also believe that checking for ivars should also handle  
the Singleton design pattern (please correct me if I am wrong).

Please keep these great comments/suggestions coming!  The goal is to  
have most checks have a false positive rate to not exceed 20%, and  
incorporating simple heuristics like these is often a huge win in  
cutting down false positives.

Ted



More information about the cfe-dev mailing list