[cfe-dev] C++ analysis with Clang?

Anna Zaks ganna at apple.com
Mon Jun 4 14:57:11 PDT 2012

On Jun 1, 2012, at 6:36 PM, Karl Mazurak wrote:

> Hi all -
> Our group is considering using Clang for some program analysis, 
> primarily aimed at bug-hunting.  We're targeting C++, which I understand 
> means the static analyzer isn't an option just yet,
> but it looks like 
> there's still plenty there that could be useful - so much that I'm not 
> sure what to start experimenting with.
> The plugin tutorial uses a PluginASTAction and links to an example with 
> a RecursiveASTVisitor, but of course we'd like to avoid reinventing the 
> wheel (at coding time or at run time) as much as possible.  For 
> instance, are CFGs pre-constructed somewhere?

CFG is part of Analyzes library and is used by both clang and the analyzer.
You can use ViewCFG and DumpCFG checkers to see how C++ statements are modeled (and what the deficiencies are):
clang -cc1 -analyze -analyzer-checker=debug.ViewCFG test.c

>  Does the dataflow 
> framework in Analysis/FlowSensitive work with C++?
The analyzer's C++ support is work in progress. You can run the analyzer's path sensitive checkers on C++ code, however, it does not reason about many C++ concepts. 

>  Is this Sema of any 
> use outside the path-sensitive analyzer?  

You can write a non-path-sensitive checkers, which visit different AST nodes (AST does have full C++ support). See AST Visitors in http://clang-analyzer.llvm.org/checker_dev_manual.html#ast. 

> And is there anything in Clang 
> that could be useful in aggregating results together in whole program 
> analysis?

The static analyzer does not currently support whole program analysis. 

> Thanks!
> -- 
> Karl
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120604/cbb3b434/attachment.html>

More information about the cfe-dev mailing list