1e8f7316fSTed Kremenek //== Checker.cpp - Registration mechanism for checkers -----------*- C++ -*--=//
2e8f7316fSTed Kremenek //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e8f7316fSTed Kremenek //
7e8f7316fSTed Kremenek //===----------------------------------------------------------------------===//
8e8f7316fSTed Kremenek //
9e8f7316fSTed Kremenek // This file defines Checker, used to create and register checkers.
10e8f7316fSTed Kremenek //
11e8f7316fSTed Kremenek //===----------------------------------------------------------------------===//
12e8f7316fSTed Kremenek
132753ca84SArgyrios Kyrtzidis #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
14e8f7316fSTed Kremenek #include "clang/StaticAnalyzer/Core/Checker.h"
15e8f7316fSTed Kremenek
16e8f7316fSTed Kremenek using namespace clang;
17e8f7316fSTed Kremenek using namespace ento;
18e8f7316fSTed Kremenek
1925dac79eSArtem Dergachev int ImplicitNullDerefEvent::Tag;
2025dac79eSArtem Dergachev
getTagDescription() const21e8f7316fSTed Kremenek StringRef CheckerBase::getTagDescription() const {
22*72649423SKristof Umann return getCheckerName().getName();
23e8f7316fSTed Kremenek }
2468e081d6SDavid Blaikie
getCheckerName() const25*72649423SKristof Umann CheckerNameRef CheckerBase::getCheckerName() const { return Name; }
264aca9b1cSAlexander Kornienko
CheckerProgramPointTag(StringRef CheckerName,StringRef Msg)276a619222SAnton Yartsev CheckerProgramPointTag::CheckerProgramPointTag(StringRef CheckerName,
286a619222SAnton Yartsev StringRef Msg)
296a619222SAnton Yartsev : SimpleProgramPointTag(CheckerName, Msg) {}
306a619222SAnton Yartsev
CheckerProgramPointTag(const CheckerBase * Checker,StringRef Msg)316a619222SAnton Yartsev CheckerProgramPointTag::CheckerProgramPointTag(const CheckerBase *Checker,
326a619222SAnton Yartsev StringRef Msg)
33*72649423SKristof Umann : SimpleProgramPointTag(Checker->getCheckerName().getName(), Msg) {}
346a619222SAnton Yartsev
operator <<(raw_ostream & Out,const CheckerBase & Checker)356a619222SAnton Yartsev raw_ostream& clang::ento::operator<<(raw_ostream &Out,
366a619222SAnton Yartsev const CheckerBase &Checker) {
37*72649423SKristof Umann Out << Checker.getCheckerName().getName();
386a619222SAnton Yartsev return Out;
396a619222SAnton Yartsev }
40