xref: /openbsd-src/gnu/llvm/clang/lib/StaticAnalyzer/Core/Checker.cpp (revision e5dd70708596ae51455a0ffa086a00c5b29f8583)
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