xref: /llvm-project/clang/lib/StaticAnalyzer/Core/Checker.cpp (revision 72649423c043341c770516cd73aecde281730260)
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