[Static Analyzer] New checker hook: checkInitialState

Gabor Kozar via cfe-commits cfe-commits at lists.llvm.org
Sat Nov 28 13:52:31 PST 2015


Once, long ago, I started working on this checker callback, but forgot
about it. I have decided to finish it now. Original discussion:

The motivation was (pipermail doesn't seem to have my original mail, for
some reason):

> I had an issue recently with the Static Analyzer [while implementing a
> checker] that I wouldn't be able
 to detect when a function was entered - either through a call or
 serving as the entry point of the analysis. (I ended up using
 checkPreStmt and figuring out if we've been magically transported
 inside a function body and check the program state whether the
 necessary info was already recorded by checkPreCall. Not something I'd
 call nice by any means.)

The attached patch creates a new checker hook, with the signature:

> ProgramStateRef checkInitialState(const EntryPointInfo& EPInfo) /* non-
> const */;

EntryPointInfo is currently a very simple class containing a Decl* of
the declaration being used as an entry point and a ProgramStateRef of
the initial state.

Checkers implementing this hook can make changes to the program state by
returning a new one. They are also allowed to return nullptr, in which
case the analysis doesn't proceed further from that entry point.

Please let me know what you think!

Best regards,

Gábor 'ShdNx' Kozár http://gaborkozar.me

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151128/a94c8b44/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clangsa_checkinitial.patch
Type: text/x-patch
Size: 8198 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151128/a94c8b44/attachment.bin>

More information about the cfe-commits mailing list