[cfe-dev] [analyzer] Whole Program Analysis - Full Call Graph

Phil Camp via cfe-dev cfe-dev at lists.llvm.org
Mon Nov 30 09:46:24 PST 2015


Hello cfe-dev,

I am interested in researching possible static analyzer schemes on whole 
program states. Initially I would like to build a whole program call 
graph. I plan to develop program wide checkers for calls to a 
proprietary SDK. To begin with these checkers would rely on simple call 
graph/AST based analysis rather than ‘full’ static analysis. These 
checkers would include items like simple flow analysis of SDK calls that 
should occur in a particular order (e.g. open()/read()/write()/close()). 
I would be very grateful if anyone can offer any guidance as to how to 
achieve this.

My initial thoughts are to use the current AST call graph feature within 
clang. I would create a checker that builds and serialises the call 
graph to a file for each source file. I plan to add this serialisation 
to the clang CallGraph class along the lines of the current AST 
serialisation. The available serialised call graph files would 
subsequently be read and a merged, creating a full program graph  (or 
partial program graph if the whole program has not been serialised).

I have a couple of questions regarding development style:

a) Would the clang CallGraph class be the best place for the 
serialisation, or would it better to place it in the checker(s)?

b) For the read and merge process, should this be an external utility or 
use the regular clang executable?

Any feedback most welcome. Thank you for your time.

Phil Camp
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20151130/fa97ae1f/attachment.html>


More information about the cfe-dev mailing list