[PATCH] D26768: [analyzer] Improve VirtualCallChecker diagnostics and move to optin package.

Devin Coughlin via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 12 09:28:38 PST 2016

dcoughlin added a comment.

In https://reviews.llvm.org/D26768#619222, @malcolm.parsons wrote:

> In https://reviews.llvm.org/D26768#618651, @dcoughlin wrote:
> > The definite false positives were cases where the programmer seemed aware of the semantics of virtual calls during construction/destruction and had each subclass explicitly call its own version of the virtual method in question.
> How is this avoiding the check for a qualifier on the call?
>   if (CME->getQualifier())
>     callIsNonVirtual = true;

They didn't use the qualified version. Rather, each class had duplication of the same logic calling the virtual method its individual constructor/destructor. In the cases I examined either the virtual method didn't call super (most common pattern) or it did and was idempotent if called multiple times.

>> The likely false positives were cases where there was no subclass of the constructed class that overrode the method in question.
> I'd like to be told about these so that the class can be marked final.

I agree, but this produces too many alarms to be on by default in the analyzer. I put the check in it in the 'optin' package so individual projects can decide whether they want to enforce this rule or not.



More information about the cfe-commits mailing list