10b57cec5SDimitry Andric //== Checker.cpp - Registration mechanism for checkers -----------*- C++ -*--=//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric //
90b57cec5SDimitry Andric // This file defines Checker, used to create and register checkers.
100b57cec5SDimitry Andric //
110b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric
130b57cec5SDimitry Andric #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
140b57cec5SDimitry Andric #include "clang/StaticAnalyzer/Core/Checker.h"
150b57cec5SDimitry Andric
160b57cec5SDimitry Andric using namespace clang;
170b57cec5SDimitry Andric using namespace ento;
180b57cec5SDimitry Andric
190b57cec5SDimitry Andric int ImplicitNullDerefEvent::Tag;
200b57cec5SDimitry Andric
getTagDescription() const210b57cec5SDimitry Andric StringRef CheckerBase::getTagDescription() const {
22*a7dea167SDimitry Andric return getCheckerName().getName();
230b57cec5SDimitry Andric }
240b57cec5SDimitry Andric
getCheckerName() const25*a7dea167SDimitry Andric CheckerNameRef CheckerBase::getCheckerName() const { return Name; }
260b57cec5SDimitry Andric
CheckerProgramPointTag(StringRef CheckerName,StringRef Msg)270b57cec5SDimitry Andric CheckerProgramPointTag::CheckerProgramPointTag(StringRef CheckerName,
280b57cec5SDimitry Andric StringRef Msg)
290b57cec5SDimitry Andric : SimpleProgramPointTag(CheckerName, Msg) {}
300b57cec5SDimitry Andric
CheckerProgramPointTag(const CheckerBase * Checker,StringRef Msg)310b57cec5SDimitry Andric CheckerProgramPointTag::CheckerProgramPointTag(const CheckerBase *Checker,
320b57cec5SDimitry Andric StringRef Msg)
33*a7dea167SDimitry Andric : SimpleProgramPointTag(Checker->getCheckerName().getName(), Msg) {}
340b57cec5SDimitry Andric
operator <<(raw_ostream & Out,const CheckerBase & Checker)350b57cec5SDimitry Andric raw_ostream& clang::ento::operator<<(raw_ostream &Out,
360b57cec5SDimitry Andric const CheckerBase &Checker) {
37*a7dea167SDimitry Andric Out << Checker.getCheckerName().getName();
380b57cec5SDimitry Andric return Out;
390b57cec5SDimitry Andric }
40