1 //== CheckerContext.cpp - Context info for path-sensitive checkers-----------=// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines CheckerContext that provides contextual info for 11 // path-sensitive checkers. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" 16 using namespace clang; 17 using namespace ento; 18 19 const FunctionDecl *CheckerContext::getCalleeDecl(const CallExpr *CE) const { 20 const ProgramState *State = getState(); 21 const Expr *Callee = CE->getCallee(); 22 SVal L = State->getSVal(Callee); 23 return L.getAsFunctionDecl(); 24 } 25 26 StringRef CheckerContext::getCalleeName(const CallExpr *CE) const { 27 const FunctionDecl *funDecl = getCalleeDecl(CE); 28 if (!funDecl) 29 return StringRef(); 30 IdentifierInfo *funI = funDecl->getIdentifier(); 31 if (!funI) 32 return StringRef(); 33 return funI->getName(); 34 } 35