[cfe-dev] How to get started in C++ analysis support
Ted Kremenek
kremenek at apple.com
Sat Aug 6 09:53:01 PDT 2011
Hi Lei,
There are a variety of ways to get started. Roughly I can see the tasks broken down into three areas:
(1) Fix crashes/bugs in current C++ analysis functionality already supported.
(2) Add support for C++ expressions/etc. not currently handled by the analyzer.
(3) Large infrastructural changes, e.g., basic inter procedural analysis to (better handle things like RAII.
I would suggest starting with (1) or (2).
For (1), there are already some existing Bugzilla's for specific issues. It's not easy to get a query of all of them, and that's something we should fix. You can also just run the analyzer over a bunch of C++ code and see what comes out. Identifying false positives, false negatives, and crashes, are all useful. Even just filing bug reports with reduced test cases is immensely useful.
For (2), a good place to look is in ExprEngine::Visit():
switch (S->getStmtClass()) {
// C++ and ARC stuff we don't support yet.
case Expr::ObjCIndirectCopyRestoreExprClass:
case Stmt::CXXBindTemporaryExprClass:
case Stmt::CXXCatchStmtClass:
case Stmt::CXXDependentScopeMemberExprClass:
case Stmt::CXXForRangeStmtClass:
case Stmt::CXXPseudoDestructorExprClass:
case Stmt::CXXTemporaryObjectExprClass:
case Stmt::CXXThrowExprClass:
case Stmt::CXXTryStmtClass:
case Stmt::CXXTypeidExprClass:
case Stmt::CXXUuidofExprClass:
case Stmt::CXXUnresolvedConstructExprClass:
…
Gradually chipping away at this list directly expands the amount of C++ code the analyzer can handle.
Another option is to work on more C++-specific checkers.
Cheers,
Ted
On Jul 29, 2011, at 12:32 AM, 章磊 wrote:
> Hi clang,
>
> The C++ analysis support is a WIP and i want to contribute to it, but i don't know current state of C++ analysis support and where to get started.
>
> Maybe i can try to fix some crashes at first?
>
> And where can i get some small C++ codebases(as Crypto++)?
>
> --
> Best regards!
>
> Lei Zhang
>
> _______________________________________________
> 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/20110806/c3a962c6/attachment.html>
More information about the cfe-dev
mailing list