1*e5dd7070Spatrick //== Checker.cpp - Registration mechanism for checkers -----------*- C++ -*--=//
2*e5dd7070Spatrick //
3*e5dd7070Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*e5dd7070Spatrick // See https://llvm.org/LICENSE.txt for license information.
5*e5dd7070Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*e5dd7070Spatrick //
7*e5dd7070Spatrick //===----------------------------------------------------------------------===//
8*e5dd7070Spatrick //
9*e5dd7070Spatrick // This file defines Checker, used to create and register checkers.
10*e5dd7070Spatrick //
11*e5dd7070Spatrick //===----------------------------------------------------------------------===//
12*e5dd7070Spatrick
13*e5dd7070Spatrick #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
14*e5dd7070Spatrick #include "clang/StaticAnalyzer/Core/Checker.h"
15*e5dd7070Spatrick
16*e5dd7070Spatrick using namespace clang;
17*e5dd7070Spatrick using namespace ento;
18*e5dd7070Spatrick
19*e5dd7070Spatrick int ImplicitNullDerefEvent::Tag;
20*e5dd7070Spatrick
getTagDescription() const21*e5dd7070Spatrick StringRef CheckerBase::getTagDescription() const {
22*e5dd7070Spatrick return getCheckerName().getName();
23*e5dd7070Spatrick }
24*e5dd7070Spatrick
getCheckerName() const25*e5dd7070Spatrick CheckerNameRef CheckerBase::getCheckerName() const { return Name; }
26*e5dd7070Spatrick
CheckerProgramPointTag(StringRef CheckerName,StringRef Msg)27*e5dd7070Spatrick CheckerProgramPointTag::CheckerProgramPointTag(StringRef CheckerName,
28*e5dd7070Spatrick StringRef Msg)
29*e5dd7070Spatrick : SimpleProgramPointTag(CheckerName, Msg) {}
30*e5dd7070Spatrick
CheckerProgramPointTag(const CheckerBase * Checker,StringRef Msg)31*e5dd7070Spatrick CheckerProgramPointTag::CheckerProgramPointTag(const CheckerBase *Checker,
32*e5dd7070Spatrick StringRef Msg)
33*e5dd7070Spatrick : SimpleProgramPointTag(Checker->getCheckerName().getName(), Msg) {}
34*e5dd7070Spatrick
operator <<(raw_ostream & Out,const CheckerBase & Checker)35*e5dd7070Spatrick raw_ostream& clang::ento::operator<<(raw_ostream &Out,
36*e5dd7070Spatrick const CheckerBase &Checker) {
37*e5dd7070Spatrick Out << Checker.getCheckerName().getName();
38*e5dd7070Spatrick return Out;
39*e5dd7070Spatrick }
40