[cfe-dev] Missing dealloc analysis
kremenek at apple.com
Thu Jul 3 09:28:08 PDT 2008
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
> 1. It should be disabled in GC environment, because dealloc methods
> are not called under GC
> 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.
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.
More information about the cfe-dev