1 //== Checker.cpp - Registration mechanism for checkers -----------*- C++ -*--=// 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 Checker, used to create and register checkers. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" 15 #include "clang/StaticAnalyzer/Core/Checker.h" 16 17 using namespace clang; 18 using namespace ento; 19 20 int ImplicitNullDerefEvent::Tag; 21 getTagDescription() const22StringRef CheckerBase::getTagDescription() const { 23 return getCheckName().getName(); 24 } 25 getCheckName() const26CheckName CheckerBase::getCheckName() const { return Name; } 27 CheckerProgramPointTag(StringRef CheckerName,StringRef Msg)28CheckerProgramPointTag::CheckerProgramPointTag(StringRef CheckerName, 29 StringRef Msg) 30 : SimpleProgramPointTag(CheckerName, Msg) {} 31 CheckerProgramPointTag(const CheckerBase * Checker,StringRef Msg)32CheckerProgramPointTag::CheckerProgramPointTag(const CheckerBase *Checker, 33 StringRef Msg) 34 : SimpleProgramPointTag(Checker->getCheckName().getName(), Msg) {} 35 operator <<(raw_ostream & Out,const CheckerBase & Checker)36raw_ostream& clang::ento::operator<<(raw_ostream &Out, 37 const CheckerBase &Checker) { 38 Out << Checker.getCheckName().getName(); 39 return Out; 40 } 41