[cfe-dev] Clang Static Analyzer - BugReporter::EmitBasicReport with Stmt

Jordan Rose jordan_rose at apple.com
Tue May 7 18:57:04 PDT 2013


Hi, Gábor. The LocationContext/AnalysisDeclContext is used to find an appropriate location for the statement, which may be in an enclosing expression. You need a Decl for this because we don't want to build a parent map for the entire ASTContext.

May I suggest running your matcher in checkASTCodeBody instead of checkEndOfTranslationUnit?

Jordan


On May 7, 2013, at 9:32 , Gábor Kozár <kozargabor at gmail.com> wrote:

> Hi,
> 
> In a Static Analyzer checker, using AST matchers, I located an IntegerLiteral that I want to report. I'm trying to do this with BugReporter::EmitBasicReport, which requires a PathDiagnosticLocation.
> 
> There is PathDiagnosticLocation::createBegin that I've used before with previous checkers - unfortunately, the overload that accepts an Stmt* (as an IntegerLiteral is not a Decl, but it is an Stmt) also requires a mysterious third parameter, a LocationOrAnalysisDeclContext. I tried looking through the documentation, but apparently anything that returns a LocationDeclContext or AnalysisDeclContext either require a CheckerContext (which I don't have, because I'm in checkEndOfTranslationUnit: all I have is the TranslationUnitDecl, the AnalysisManager and the BugReporter), or a Decl*.
> 
> Any clues on how could I do this? I'm using Clang 3.2.
> 
> Note: I'm aware that the Clang Static Analyzer by default is not linked to libASTMatchers, but I solved that, that is NOT the issue here.
> 
> Thanks!
> 
> Gabor
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev





More information about the cfe-dev mailing list