Coverage Report

Created: 2023-11-11 10:31

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h
Line
Count
Source (jump to first uncovered line)
1
//===- CheckerManager.h - Static Analyzer Checker Manager -------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Defines the Static Analyzer Checker Manager.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_STATICANALYZER_CORE_CHECKERMANAGER_H
14
#define LLVM_CLANG_STATICANALYZER_CORE_CHECKERMANAGER_H
15
16
#include "clang/Analysis/ProgramPoint.h"
17
#include "clang/Basic/Diagnostic.h"
18
#include "clang/Basic/LangOptions.h"
19
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h"
20
#include "clang/StaticAnalyzer/Core/PathSensitive/Store.h"
21
#include "llvm/ADT/ArrayRef.h"
22
#include "llvm/ADT/DenseMap.h"
23
#include "llvm/ADT/SmallVector.h"
24
#include "llvm/ADT/StringRef.h"
25
#include <vector>
26
27
namespace clang {
28
29
class AnalyzerOptions;
30
class CallExpr;
31
class Decl;
32
class LocationContext;
33
class Stmt;
34
class TranslationUnitDecl;
35
36
namespace ento {
37
38
class AnalysisManager;
39
class CXXAllocatorCall;
40
class BugReporter;
41
class CallEvent;
42
class CheckerBase;
43
class CheckerContext;
44
class CheckerRegistry;
45
struct CheckerRegistryData;
46
class ExplodedGraph;
47
class ExplodedNode;
48
class ExplodedNodeSet;
49
class ExprEngine;
50
struct EvalCallOptions;
51
class MemRegion;
52
struct NodeBuilderContext;
53
class ObjCMethodCall;
54
class RegionAndSymbolInvalidationTraits;
55
class SVal;
56
class SymbolReaper;
57
58
template <typename T> class CheckerFn;
59
60
template <typename RET, typename... Ps>
61
class CheckerFn<RET(Ps...)> {
62
  using Func = RET (*)(void *, Ps...);
63
64
  Func Fn;
65
66
public:
67
  CheckerBase *Checker;
68
69
84.8k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void ()>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*))
Line
Count
Source
69
27.7k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&))
Line
Count
Source
69
1.22k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<bool (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, bool (*)(void*, clang::ento::CallEvent const&, clang::ento::CheckerContext&))
Line
Count
Source
69
2.47k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&))
Line
Count
Source
69
32
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&))
Line
Count
Source
69
657
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::Stmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::Stmt const*, clang::ento::CheckerContext&))
Line
Count
Source
69
19.2k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&))
Line
Count
Source
69
3.05k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&))
Line
Count
Source
69
459
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*)>::CheckerFn(clang::ento::CheckerBase*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*))
Line
Count
Source
69
717
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::CXXAllocatorCall const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::CXXAllocatorCall const&, clang::ento::CheckerContext&))
Line
Count
Source
69
257
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&))
Line
Count
Source
69
7.26k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool)>::CheckerFn(clang::ento::CheckerBase*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool))
Line
Count
Source
69
533
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*)>::CheckerFn(clang::ento::CheckerBase*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (*)(void*, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*))
Line
Count
Source
69
633
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::SymbolReaper&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::SymbolReaper&, clang::ento::CheckerContext&))
Line
Count
Source
69
3.04k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (void const*)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, void const*))
Line
Count
Source
69
101
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::CheckerContext&))
Line
Count
Source
69
1.68k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ReturnStmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ReturnStmt const*, clang::ento::CheckerContext&))
Line
Count
Source
69
1.94k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::CallEvent const&, clang::ento::CheckerContext&))
Line
Count
Source
69
10.6k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
clang::ento::CheckerFn<void (clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&)>::CheckerFn(clang::ento::CheckerBase*, void (*)(void*, clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&))
Line
Count
Source
69
3.13k
  CheckerFn(CheckerBase *checker, Func fn) : Fn(fn), Checker(checker) {}
70
71
6.25M
  RET operator()(Ps... ps) const {
72
6.25M
    return Fn(Checker, ps...);
73
6.25M
  }
clang::ento::CheckerFn<void ()>::operator()() const
Line
Count
Source
71
27.7k
  RET operator()(Ps... ps) const {
72
27.7k
    return Fn(Checker, ps...);
73
27.7k
  }
clang::ento::CheckerFn<void (void const*)>::operator()(void const*) const
Line
Count
Source
71
70
  RET operator()(Ps... ps) const {
72
70
    return Fn(Checker, ps...);
73
70
  }
clang::ento::CheckerFn<void (clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::operator()(clang::Decl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&) const
Line
Count
Source
71
10.0k
  RET operator()(Ps... ps) const {
72
10.0k
    return Fn(Checker, ps...);
73
10.0k
  }
clang::ento::CheckerFn<void (clang::Stmt const*, clang::ento::CheckerContext&)>::operator()(clang::Stmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
71
1.41M
  RET operator()(Ps... ps) const {
72
1.41M
    return Fn(Checker, ps...);
73
1.41M
  }
clang::ento::CheckerFn<void (clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&)>::operator()(clang::ento::ObjCMethodCall const&, clang::ento::CheckerContext&) const
Line
Count
Source
71
19.5k
  RET operator()(Ps... ps) const {
72
19.5k
    return Fn(Checker, ps...);
73
19.5k
  }
clang::ento::CheckerFn<void (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::operator()(clang::ento::CallEvent const&, clang::ento::CheckerContext&) const
Line
Count
Source
71
1.07M
  RET operator()(Ps... ps) const {
72
1.07M
    return Fn(Checker, ps...);
73
1.07M
  }
clang::ento::CheckerFn<void (clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&)>::operator()(clang::ento::SVal const&, bool, clang::Stmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
71
685k
  RET operator()(Ps... ps) const {
72
685k
    return Fn(Checker, ps...);
73
685k
  }
clang::ento::CheckerFn<void (clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&)>::operator()(clang::ento::SVal const&, clang::ento::SVal const&, clang::Stmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
71
174k
  RET operator()(Ps... ps) const {
72
174k
    return Fn(Checker, ps...);
73
174k
  }
clang::ento::CheckerFn<void (clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&)>::operator()(clang::ento::ExplodedGraph&, clang::ento::BugReporter&, clang::ento::ExprEngine&) const
Line
Count
Source
71
9.60k
  RET operator()(Ps... ps) const {
72
9.60k
    return Fn(Checker, ps...);
73
9.60k
  }
clang::ento::CheckerFn<void (clang::ento::CheckerContext&)>::operator()(clang::ento::CheckerContext&) const
Line
Count
Source
71
71.1k
  RET operator()(Ps... ps) const {
72
71.1k
    return Fn(Checker, ps...);
73
71.1k
  }
clang::ento::CheckerFn<void (clang::ReturnStmt const*, clang::ento::CheckerContext&)>::operator()(clang::ReturnStmt const*, clang::ento::CheckerContext&) const
Line
Count
Source
71
107k
  RET operator()(Ps... ps) const {
72
107k
    return Fn(Checker, ps...);
73
107k
  }
clang::ento::CheckerFn<void (clang::ento::CXXAllocatorCall const&, clang::ento::CheckerContext&)>::operator()(clang::ento::CXXAllocatorCall const&, clang::ento::CheckerContext&) const
Line
Count
Source
71
628
  RET operator()(Ps... ps) const {
72
628
    return Fn(Checker, ps...);
73
628
  }
clang::ento::CheckerFn<void (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SymbolReaper&) const
Line
Count
Source
71
390k
  RET operator()(Ps... ps) const {
72
390k
    return Fn(Checker, ps...);
73
390k
  }
clang::ento::CheckerFn<void (clang::ento::SymbolReaper&, clang::ento::CheckerContext&)>::operator()(clang::ento::SymbolReaper&, clang::ento::CheckerContext&) const
Line
Count
Source
71
1.58M
  RET operator()(Ps... ps) const {
72
1.58M
    return Fn(Checker, ps...);
73
1.58M
  }
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const*, llvm::ArrayRef<clang::ento::MemRegion const*>, llvm::ArrayRef<clang::ento::MemRegion const*>, clang::LocationContext const*, clang::ento::CallEvent const*) const
Line
Count
Source
71
162k
  RET operator()(Ps... ps) const {
72
162k
    return Fn(Checker, ps...);
73
162k
  }
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, llvm::DenseSet<clang::ento::SymExpr const*, llvm::DenseMapInfo<clang::ento::SymExpr const*, void> > const&, clang::ento::CallEvent const*, clang::ento::PointerEscapeKind, clang::ento::RegionAndSymbolInvalidationTraits*) const
Line
Count
Source
71
34.8k
  RET operator()(Ps... ps) const {
72
34.8k
    return Fn(Checker, ps...);
73
34.8k
  }
clang::ento::CheckerFn<llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const> (llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool)>::operator()(llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>, clang::ento::SVal const&, bool) const
Line
Count
Source
71
233k
  RET operator()(Ps... ps) const {
72
233k
    return Fn(Checker, ps...);
73
233k
  }
clang::ento::CheckerFn<bool (clang::ento::CallEvent const&, clang::ento::CheckerContext&)>::operator()(clang::ento::CallEvent const&, clang::ento::CheckerContext&) const
Line
Count
Source
71
259k
  RET operator()(Ps... ps) const {
72
259k
    return Fn(Checker, ps...);
73
259k
  }
clang::ento::CheckerFn<void (clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&)>::operator()(clang::TranslationUnitDecl const*, clang::ento::AnalysisManager&, clang::ento::BugReporter&) const
Line
Count
Source
71
32
  RET operator()(Ps... ps) const {
72
32
    return Fn(Checker, ps...);
73
32
  }
74
};
75
76
/// Describes the different reasons a pointer escapes
77
/// during analysis.
78
enum PointerEscapeKind {
79
  /// A pointer escapes due to binding its value to a location
80
  /// that the analyzer cannot track.
81
  PSK_EscapeOnBind,
82
83
  /// The pointer has been passed to a function call directly.
84
  PSK_DirectEscapeOnCall,
85
86
  /// The pointer has been passed to a function indirectly.
87
  /// For example, the pointer is accessible through an
88
  /// argument to a function.
89
  PSK_IndirectEscapeOnCall,
90
91
92
  /// Escape for a new symbol that was generated into a region
93
  /// that the analyzer cannot follow during a conservative call.
94
  PSK_EscapeOutParameters,
95
96
  /// The reason for pointer escape is unknown. For example,
97
  /// a region containing this pointer is invalidated.
98
  PSK_EscapeOther
99
};
100
101
/// This wrapper is used to ensure that only StringRefs originating from the
102
/// CheckerRegistry are used as check names. We want to make sure all checker
103
/// name strings have a lifetime that keeps them alive at least until the path
104
/// diagnostics have been processed, since they are expected to be constexpr
105
/// string literals (most likely generated by TblGen).
106
class CheckerNameRef {
107
  friend class ::clang::ento::CheckerRegistry;
108
109
  StringRef Name;
110
111
31.9k
  explicit CheckerNameRef(StringRef Name) : Name(Name) {}
112
113
public:
114
38.7k
  CheckerNameRef() = default;
115
116
5.49k
  StringRef getName() const { return Name; }
117
106k
  operator StringRef() const { return Name; }
118
};
119
120
enum class ObjCMessageVisitKind {
121
  Pre,
122
  Post,
123
  MessageNil
124
};
125
126
class CheckerManager {
127
  ASTContext *Context = nullptr;
128
  const LangOptions LangOpts;
129
  const AnalyzerOptions &AOptions;
130
  const Preprocessor *PP = nullptr;
131
  CheckerNameRef CurrentCheckerName;
132
  DiagnosticsEngine &Diags;
133
  std::unique_ptr<CheckerRegistryData> RegistryData;
134
135
public:
136
  // These constructors are defined in the Frontend library, because
137
  // CheckerRegistry, a crucial component of the initialization is in there.
138
  // CheckerRegistry cannot be moved to the Core library, because the checker
139
  // registration functions are defined in the Checkers library, and the library
140
  // dependencies look like this: Core -> Checkers -> Frontend.
141
142
  CheckerManager(
143
      ASTContext &Context, AnalyzerOptions &AOptions, const Preprocessor &PP,
144
      ArrayRef<std::string> plugins,
145
      ArrayRef<std::function<void(CheckerRegistry &)>> checkerRegistrationFns);
146
147
  /// Constructs a CheckerManager that ignores all non TblGen-generated
148
  /// checkers. Useful for unit testing, unless the checker infrastructure
149
  /// itself is tested.
150
  CheckerManager(ASTContext &Context, AnalyzerOptions &AOptions,
151
                 const Preprocessor &PP)
152
0
      : CheckerManager(Context, AOptions, PP, {}, {}) {}
153
154
  /// Constructs a CheckerManager without requiring an AST. No checker
155
  /// registration will take place. Only useful when one needs to print the
156
  /// help flags through CheckerRegistryData, and the AST is unavailable.
157
  CheckerManager(AnalyzerOptions &AOptions, const LangOptions &LangOpts,
158
                 DiagnosticsEngine &Diags, ArrayRef<std::string> plugins);
159
160
  ~CheckerManager();
161
162
31.9k
  void setCurrentCheckerName(CheckerNameRef name) { CurrentCheckerName = name; }
163
17.0k
  CheckerNameRef getCurrentCheckerName() const { return CurrentCheckerName; }
164
165
  bool hasPathSensitiveCheckers() const;
166
167
  void finishedCheckerRegistration();
168
169
3.79k
  const LangOptions &getLangOpts() const { return LangOpts; }
170
14.1k
  const AnalyzerOptions &getAnalyzerOptions() const { return AOptions; }
171
0
  const Preprocessor &getPreprocessor() const {
172
0
    assert(PP);
173
0
    return *PP;
174
0
  }
175
29.9k
  const CheckerRegistryData &getCheckerRegistryData() const {
176
29.9k
    return *RegistryData;
177
29.9k
  }
178
6
  DiagnosticsEngine &getDiagnostics() const { return Diags; }
179
87
  ASTContext &getASTContext() const {
180
87
    assert(Context);
181
87
    return *Context;
182
87
  }
183
184
  /// Emits an error through a DiagnosticsEngine about an invalid user supplied
185
  /// checker option value.
186
  void reportInvalidCheckerOptionValue(const CheckerBase *C,
187
                                       StringRef OptionName,
188
                                       StringRef ExpectedValueDesc) const;
189
190
  using CheckerRef = CheckerBase *;
191
  using CheckerTag = const void *;
192
  using CheckerDtor = CheckerFn<void ()>;
193
194
//===----------------------------------------------------------------------===//
195
// Checker registration.
196
//===----------------------------------------------------------------------===//
197
198
  /// Used to register checkers.
199
  /// All arguments are automatically passed through to the checker
200
  /// constructor.
201
  ///
202
  /// \returns a pointer to the checker object.
203
  template <typename CHECKER, typename... AT>
204
27.5k
  CHECKER *registerChecker(AT &&... Args) {
205
27.5k
    CheckerTag tag = getTag<CHECKER>();
206
27.5k
    CheckerRef &ref = CheckerTags[tag];
207
27.5k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
27.5k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
27.5k
    checker->Name = CurrentCheckerName;
211
27.5k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
27.5k
    CHECKER::_register(checker, *this);
213
27.5k
    ref = checker;
214
27.5k
    return checker;
215
27.5k
  }
AnalysisOrderChecker.cpp:(anonymous namespace)::AnalysisOrderChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::AnalysisOrderChecker>()
Line
Count
Source
204
12
  CHECKER *registerChecker(AT &&... Args) {
205
12
    CheckerTag tag = getTag<CHECKER>();
206
12
    CheckerRef &ref = CheckerTags[tag];
207
12
    assert(!ref && "Checker already registered, use getChecker!");
208
209
12
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
12
    checker->Name = CurrentCheckerName;
211
12
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
12
    CHECKER::_register(checker, *this);
213
12
    ref = checker;
214
12
    return checker;
215
12
  }
AnalyzerStatsChecker.cpp:(anonymous namespace)::AnalyzerStatsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::AnalyzerStatsChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
ArrayBoundChecker.cpp:(anonymous namespace)::ArrayBoundChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ArrayBoundChecker>()
Line
Count
Source
204
6
  CHECKER *registerChecker(AT &&... Args) {
205
6
    CheckerTag tag = getTag<CHECKER>();
206
6
    CheckerRef &ref = CheckerTags[tag];
207
6
    assert(!ref && "Checker already registered, use getChecker!");
208
209
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
6
    checker->Name = CurrentCheckerName;
211
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
6
    CHECKER::_register(checker, *this);
213
6
    ref = checker;
214
6
    return checker;
215
6
  }
ArrayBoundCheckerV2.cpp:(anonymous namespace)::ArrayBoundCheckerV2* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ArrayBoundCheckerV2>()
Line
Count
Source
204
11
  CHECKER *registerChecker(AT &&... Args) {
205
11
    CheckerTag tag = getTag<CHECKER>();
206
11
    CheckerRef &ref = CheckerTags[tag];
207
11
    assert(!ref && "Checker already registered, use getChecker!");
208
209
11
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
11
    checker->Name = CurrentCheckerName;
211
11
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
11
    CHECKER::_register(checker, *this);
213
11
    ref = checker;
214
11
    return checker;
215
11
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::NilArgChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NilArgChecker>()
Line
Count
Source
204
53
  CHECKER *registerChecker(AT &&... Args) {
205
53
    CheckerTag tag = getTag<CHECKER>();
206
53
    CheckerRef &ref = CheckerTags[tag];
207
53
    assert(!ref && "Checker already registered, use getChecker!");
208
209
53
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
53
    checker->Name = CurrentCheckerName;
211
53
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
53
    CHECKER::_register(checker, *this);
213
53
    ref = checker;
214
53
    return checker;
215
53
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::CFNumberChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFNumberChecker>()
Line
Count
Source
204
47
  CHECKER *registerChecker(AT &&... Args) {
205
47
    CheckerTag tag = getTag<CHECKER>();
206
47
    CheckerRef &ref = CheckerTags[tag];
207
47
    assert(!ref && "Checker already registered, use getChecker!");
208
209
47
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
47
    checker->Name = CurrentCheckerName;
211
47
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
47
    CHECKER::_register(checker, *this);
213
47
    ref = checker;
214
47
    return checker;
215
47
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::CFRetainReleaseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFRetainReleaseChecker>()
Line
Count
Source
204
57
  CHECKER *registerChecker(AT &&... Args) {
205
57
    CheckerTag tag = getTag<CHECKER>();
206
57
    CheckerRef &ref = CheckerTags[tag];
207
57
    assert(!ref && "Checker already registered, use getChecker!");
208
209
57
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
57
    checker->Name = CurrentCheckerName;
211
57
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
57
    CHECKER::_register(checker, *this);
213
57
    ref = checker;
214
57
    return checker;
215
57
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::ClassReleaseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ClassReleaseChecker>()
Line
Count
Source
204
56
  CHECKER *registerChecker(AT &&... Args) {
205
56
    CheckerTag tag = getTag<CHECKER>();
206
56
    CheckerRef &ref = CheckerTags[tag];
207
56
    assert(!ref && "Checker already registered, use getChecker!");
208
209
56
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
56
    checker->Name = CurrentCheckerName;
211
56
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
56
    CHECKER::_register(checker, *this);
213
56
    ref = checker;
214
56
    return checker;
215
56
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::VariadicMethodTypeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VariadicMethodTypeChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::ObjCLoopChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCLoopChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
BasicObjCFoundationChecks.cpp:(anonymous namespace)::ObjCNonNilReturnValueChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCNonNilReturnValueChecker>()
Line
Count
Source
204
49
  CHECKER *registerChecker(AT &&... Args) {
205
49
    CheckerTag tag = getTag<CHECKER>();
206
49
    CheckerRef &ref = CheckerTags[tag];
207
49
    assert(!ref && "Checker already registered, use getChecker!");
208
209
49
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
49
    checker->Name = CurrentCheckerName;
211
49
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
49
    CHECKER::_register(checker, *this);
213
49
    ref = checker;
214
49
    return checker;
215
49
  }
BitwiseShiftChecker* clang::ento::CheckerManager::registerChecker<BitwiseShiftChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
BlockInCriticalSectionChecker.cpp:(anonymous namespace)::BlockInCriticalSectionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::BlockInCriticalSectionChecker>()
Line
Count
Source
204
5
  CHECKER *registerChecker(AT &&... Args) {
205
5
    CheckerTag tag = getTag<CHECKER>();
206
5
    CheckerRef &ref = CheckerTags[tag];
207
5
    assert(!ref && "Checker already registered, use getChecker!");
208
209
5
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
5
    checker->Name = CurrentCheckerName;
211
5
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
5
    CHECKER::_register(checker, *this);
213
5
    ref = checker;
214
5
    return checker;
215
5
  }
BoolAssignmentChecker.cpp:(anonymous namespace)::BoolAssignmentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::BoolAssignmentChecker>()
Line
Count
Source
204
76
  CHECKER *registerChecker(AT &&... Args) {
205
76
    CheckerTag tag = getTag<CHECKER>();
206
76
    CheckerRef &ref = CheckerTags[tag];
207
76
    assert(!ref && "Checker already registered, use getChecker!");
208
209
76
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
76
    checker->Name = CurrentCheckerName;
211
76
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
76
    CHECKER::_register(checker, *this);
213
76
    ref = checker;
214
76
    return checker;
215
76
  }
BuiltinFunctionChecker.cpp:(anonymous namespace)::BuiltinFunctionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::BuiltinFunctionChecker>()
Line
Count
Source
204
1.29k
  CHECKER *registerChecker(AT &&... Args) {
205
1.29k
    CheckerTag tag = getTag<CHECKER>();
206
1.29k
    CheckerRef &ref = CheckerTags[tag];
207
1.29k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.29k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.29k
    checker->Name = CurrentCheckerName;
211
1.29k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.29k
    CHECKER::_register(checker, *this);
213
1.29k
    ref = checker;
214
1.29k
    return checker;
215
1.29k
  }
CStringChecker.cpp:(anonymous namespace)::CStringChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CStringChecker>()
Line
Count
Source
204
274
  CHECKER *registerChecker(AT &&... Args) {
205
274
    CheckerTag tag = getTag<CHECKER>();
206
274
    CheckerRef &ref = CheckerTags[tag];
207
274
    assert(!ref && "Checker already registered, use getChecker!");
208
209
274
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
274
    checker->Name = CurrentCheckerName;
211
274
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
274
    CHECKER::_register(checker, *this);
213
274
    ref = checker;
214
274
    return checker;
215
274
  }
CStringSyntaxChecker.cpp:(anonymous namespace)::CStringSyntaxChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CStringSyntaxChecker>()
Line
Count
Source
204
97
  CHECKER *registerChecker(AT &&... Args) {
205
97
    CheckerTag tag = getTag<CHECKER>();
206
97
    CheckerRef &ref = CheckerTags[tag];
207
97
    assert(!ref && "Checker already registered, use getChecker!");
208
209
97
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
97
    checker->Name = CurrentCheckerName;
211
97
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
97
    CHECKER::_register(checker, *this);
213
97
    ref = checker;
214
97
    return checker;
215
97
  }
CallAndMessageChecker.cpp:(anonymous namespace)::CallAndMessageChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallAndMessageChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
CastSizeChecker.cpp:(anonymous namespace)::CastSizeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CastSizeChecker>()
Line
Count
Source
204
62
  CHECKER *registerChecker(AT &&... Args) {
205
62
    CheckerTag tag = getTag<CHECKER>();
206
62
    CheckerRef &ref = CheckerTags[tag];
207
62
    assert(!ref && "Checker already registered, use getChecker!");
208
209
62
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
62
    checker->Name = CurrentCheckerName;
211
62
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
62
    CHECKER::_register(checker, *this);
213
62
    ref = checker;
214
62
    return checker;
215
62
  }
CastToStructChecker.cpp:(anonymous namespace)::CastToStructChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CastToStructChecker>()
Line
Count
Source
204
80
  CHECKER *registerChecker(AT &&... Args) {
205
80
    CheckerTag tag = getTag<CHECKER>();
206
80
    CheckerRef &ref = CheckerTags[tag];
207
80
    assert(!ref && "Checker already registered, use getChecker!");
208
209
80
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
80
    checker->Name = CurrentCheckerName;
211
80
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
80
    CHECKER::_register(checker, *this);
213
80
    ref = checker;
214
80
    return checker;
215
80
  }
CastValueChecker.cpp:(anonymous namespace)::CastValueChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CastValueChecker>()
Line
Count
Source
204
52
  CHECKER *registerChecker(AT &&... Args) {
205
52
    CheckerTag tag = getTag<CHECKER>();
206
52
    CheckerRef &ref = CheckerTags[tag];
207
52
    assert(!ref && "Checker already registered, use getChecker!");
208
209
52
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
52
    checker->Name = CurrentCheckerName;
211
52
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
52
    CHECKER::_register(checker, *this);
213
52
    ref = checker;
214
52
    return checker;
215
52
  }
CheckObjCDealloc.cpp:(anonymous namespace)::ObjCDeallocChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCDeallocChecker>()
Line
Count
Source
204
50
  CHECKER *registerChecker(AT &&... Args) {
205
50
    CheckerTag tag = getTag<CHECKER>();
206
50
    CheckerRef &ref = CheckerTags[tag];
207
50
    assert(!ref && "Checker already registered, use getChecker!");
208
209
50
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
50
    checker->Name = CurrentCheckerName;
211
50
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
50
    CHECKER::_register(checker, *this);
213
50
    ref = checker;
214
50
    return checker;
215
50
  }
CheckObjCInstMethSignature.cpp:(anonymous namespace)::ObjCMethSigsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCMethSigsChecker>()
Line
Count
Source
204
49
  CHECKER *registerChecker(AT &&... Args) {
205
49
    CheckerTag tag = getTag<CHECKER>();
206
49
    CheckerRef &ref = CheckerTags[tag];
207
49
    assert(!ref && "Checker already registered, use getChecker!");
208
209
49
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
49
    checker->Name = CurrentCheckerName;
211
49
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
49
    CHECKER::_register(checker, *this);
213
49
    ref = checker;
214
49
    return checker;
215
49
  }
CheckPlacementNew.cpp:(anonymous namespace)::PlacementNewChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PlacementNewChecker>()
Line
Count
Source
204
67
  CHECKER *registerChecker(AT &&... Args) {
205
67
    CheckerTag tag = getTag<CHECKER>();
206
67
    CheckerRef &ref = CheckerTags[tag];
207
67
    assert(!ref && "Checker already registered, use getChecker!");
208
209
67
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
67
    checker->Name = CurrentCheckerName;
211
67
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
67
    CHECKER::_register(checker, *this);
213
67
    ref = checker;
214
67
    return checker;
215
67
  }
CheckSecuritySyntaxOnly.cpp:(anonymous namespace)::SecuritySyntaxChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SecuritySyntaxChecker>()
Line
Count
Source
204
50
  CHECKER *registerChecker(AT &&... Args) {
205
50
    CheckerTag tag = getTag<CHECKER>();
206
50
    CheckerRef &ref = CheckerTags[tag];
207
50
    assert(!ref && "Checker already registered, use getChecker!");
208
209
50
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
50
    checker->Name = CurrentCheckerName;
211
50
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
50
    CHECKER::_register(checker, *this);
213
50
    ref = checker;
214
50
    return checker;
215
50
  }
CheckSizeofPointer.cpp:(anonymous namespace)::SizeofPointerChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SizeofPointerChecker>()
Line
Count
Source
204
75
  CHECKER *registerChecker(AT &&... Args) {
205
75
    CheckerTag tag = getTag<CHECKER>();
206
75
    CheckerRef &ref = CheckerTags[tag];
207
75
    assert(!ref && "Checker already registered, use getChecker!");
208
209
75
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
75
    checker->Name = CurrentCheckerName;
211
75
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
75
    CHECKER::_register(checker, *this);
213
75
    ref = checker;
214
75
    return checker;
215
75
  }
ChrootChecker.cpp:(anonymous namespace)::ChrootChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ChrootChecker>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
CloneChecker.cpp:(anonymous namespace)::CloneChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CloneChecker>()
Line
Count
Source
204
28
  CHECKER *registerChecker(AT &&... Args) {
205
28
    CheckerTag tag = getTag<CHECKER>();
206
28
    CheckerRef &ref = CheckerTags[tag];
207
28
    assert(!ref && "Checker already registered, use getChecker!");
208
209
28
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
28
    checker->Name = CurrentCheckerName;
211
28
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
28
    CHECKER::_register(checker, *this);
213
28
    ref = checker;
214
28
    return checker;
215
28
  }
ContainerModeling.cpp:(anonymous namespace)::ContainerModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ContainerModeling>()
Line
Count
Source
204
21
  CHECKER *registerChecker(AT &&... Args) {
205
21
    CheckerTag tag = getTag<CHECKER>();
206
21
    CheckerRef &ref = CheckerTags[tag];
207
21
    assert(!ref && "Checker already registered, use getChecker!");
208
209
21
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
21
    checker->Name = CurrentCheckerName;
211
21
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
21
    CHECKER::_register(checker, *this);
213
21
    ref = checker;
214
21
    return checker;
215
21
  }
ConversionChecker.cpp:(anonymous namespace)::ConversionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ConversionChecker>()
Line
Count
Source
204
77
  CHECKER *registerChecker(AT &&... Args) {
205
77
    CheckerTag tag = getTag<CHECKER>();
206
77
    CheckerRef &ref = CheckerTags[tag];
207
77
    assert(!ref && "Checker already registered, use getChecker!");
208
209
77
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
77
    checker->Name = CurrentCheckerName;
211
77
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
77
    CHECKER::_register(checker, *this);
213
77
    ref = checker;
214
77
    return checker;
215
77
  }
CXXDeleteChecker.cpp:(anonymous namespace)::CXXArrayDeleteChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CXXArrayDeleteChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
CXXDeleteChecker.cpp:(anonymous namespace)::DeleteWithNonVirtualDtorChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DeleteWithNonVirtualDtorChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
CXXSelfAssignmentChecker.cpp:(anonymous namespace)::CXXSelfAssignmentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CXXSelfAssignmentChecker>()
Line
Count
Source
204
65
  CHECKER *registerChecker(AT &&... Args) {
205
65
    CheckerTag tag = getTag<CHECKER>();
206
65
    CheckerRef &ref = CheckerTags[tag];
207
65
    assert(!ref && "Checker already registered, use getChecker!");
208
209
65
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
65
    checker->Name = CurrentCheckerName;
211
65
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
65
    CHECKER::_register(checker, *this);
213
65
    ref = checker;
214
65
    return checker;
215
65
  }
DeadStoresChecker.cpp:(anonymous namespace)::DeadStoresChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DeadStoresChecker>()
Line
Count
Source
204
59
  CHECKER *registerChecker(AT &&... Args) {
205
59
    CheckerTag tag = getTag<CHECKER>();
206
59
    CheckerRef &ref = CheckerTags[tag];
207
59
    assert(!ref && "Checker already registered, use getChecker!");
208
209
59
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
59
    checker->Name = CurrentCheckerName;
211
59
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
59
    CHECKER::_register(checker, *this);
213
59
    ref = checker;
214
59
    return checker;
215
59
  }
DebugCheckers.cpp:(anonymous namespace)::DominatorsTreeDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DominatorsTreeDumper>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
DebugCheckers.cpp:(anonymous namespace)::PostDominatorsTreeDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PostDominatorsTreeDumper>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
DebugCheckers.cpp:(anonymous namespace)::ControlDependencyTreeDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ControlDependencyTreeDumper>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
DebugCheckers.cpp:(anonymous namespace)::LiveVariablesDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::LiveVariablesDumper>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
DebugCheckers.cpp:(anonymous namespace)::LiveExpressionsDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::LiveExpressionsDumper>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::CFGViewer* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFGViewer>()
DebugCheckers.cpp:(anonymous namespace)::CFGDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFGDumper>()
Line
Count
Source
204
40
  CHECKER *registerChecker(AT &&... Args) {
205
40
    CheckerTag tag = getTag<CHECKER>();
206
40
    CheckerRef &ref = CheckerTags[tag];
207
40
    assert(!ref && "Checker already registered, use getChecker!");
208
209
40
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
40
    checker->Name = CurrentCheckerName;
211
40
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
40
    CHECKER::_register(checker, *this);
213
40
    ref = checker;
214
40
    return checker;
215
40
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::CallGraphViewer* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallGraphViewer>()
DebugCheckers.cpp:(anonymous namespace)::CallGraphDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallGraphDumper>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
DebugCheckers.cpp:(anonymous namespace)::ConfigDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ConfigDumper>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
Unexecuted instantiation: DebugCheckers.cpp:(anonymous namespace)::ExplodedGraphViewer* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ExplodedGraphViewer>()
DebugCheckers.cpp:(anonymous namespace)::ReportStmts* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReportStmts>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
DebugContainerModeling.cpp:(anonymous namespace)::DebugContainerModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DebugContainerModeling>()
Line
Count
Source
204
13
  CHECKER *registerChecker(AT &&... Args) {
205
13
    CheckerTag tag = getTag<CHECKER>();
206
13
    CheckerRef &ref = CheckerTags[tag];
207
13
    assert(!ref && "Checker already registered, use getChecker!");
208
209
13
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
13
    checker->Name = CurrentCheckerName;
211
13
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
13
    CHECKER::_register(checker, *this);
213
13
    ref = checker;
214
13
    return checker;
215
13
  }
DebugIteratorModeling.cpp:(anonymous namespace)::DebugIteratorModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DebugIteratorModeling>()
Line
Count
Source
204
11
  CHECKER *registerChecker(AT &&... Args) {
205
11
    CheckerTag tag = getTag<CHECKER>();
206
11
    CheckerRef &ref = CheckerTags[tag];
207
11
    assert(!ref && "Checker already registered, use getChecker!");
208
209
11
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
11
    checker->Name = CurrentCheckerName;
211
11
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
11
    CHECKER::_register(checker, *this);
213
11
    ref = checker;
214
11
    return checker;
215
11
  }
DereferenceChecker.cpp:(anonymous namespace)::DereferenceChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DereferenceChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
DirectIvarAssignment.cpp:(anonymous namespace)::DirectIvarAssignment* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DirectIvarAssignment>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
DivZeroChecker.cpp:(anonymous namespace)::DivZeroChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DivZeroChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
DynamicTypePropagation.cpp:(anonymous namespace)::DynamicTypePropagation* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DynamicTypePropagation>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
DynamicTypeChecker.cpp:(anonymous namespace)::DynamicTypeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DynamicTypeChecker>()
Line
Count
Source
204
77
  CHECKER *registerChecker(AT &&... Args) {
205
77
    CheckerTag tag = getTag<CHECKER>();
206
77
    CheckerRef &ref = CheckerTags[tag];
207
77
    assert(!ref && "Checker already registered, use getChecker!");
208
209
77
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
77
    checker->Name = CurrentCheckerName;
211
77
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
77
    CHECKER::_register(checker, *this);
213
77
    ref = checker;
214
77
    return checker;
215
77
  }
EnumCastOutOfRangeChecker.cpp:(anonymous namespace)::EnumCastOutOfRangeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::EnumCastOutOfRangeChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
ErrnoChecker.cpp:(anonymous namespace)::ErrnoChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ErrnoChecker>()
Line
Count
Source
204
15
  CHECKER *registerChecker(AT &&... Args) {
205
15
    CheckerTag tag = getTag<CHECKER>();
206
15
    CheckerRef &ref = CheckerTags[tag];
207
15
    assert(!ref && "Checker already registered, use getChecker!");
208
209
15
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
15
    checker->Name = CurrentCheckerName;
211
15
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
15
    CHECKER::_register(checker, *this);
213
15
    ref = checker;
214
15
    return checker;
215
15
  }
ErrnoModeling.cpp:(anonymous namespace)::ErrnoModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ErrnoModeling>()
Line
Count
Source
204
56
  CHECKER *registerChecker(AT &&... Args) {
205
56
    CheckerTag tag = getTag<CHECKER>();
206
56
    CheckerRef &ref = CheckerTags[tag];
207
56
    assert(!ref && "Checker already registered, use getChecker!");
208
209
56
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
56
    checker->Name = CurrentCheckerName;
211
56
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
56
    CHECKER::_register(checker, *this);
213
56
    ref = checker;
214
56
    return checker;
215
56
  }
ErrnoTesterChecker.cpp:(anonymous namespace)::ErrnoTesterChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ErrnoTesterChecker>()
Line
Count
Source
204
6
  CHECKER *registerChecker(AT &&... Args) {
205
6
    CheckerTag tag = getTag<CHECKER>();
206
6
    CheckerRef &ref = CheckerTags[tag];
207
6
    assert(!ref && "Checker already registered, use getChecker!");
208
209
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
6
    checker->Name = CurrentCheckerName;
211
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
6
    CHECKER::_register(checker, *this);
213
6
    ref = checker;
214
6
    return checker;
215
6
  }
ExprInspectionChecker.cpp:(anonymous namespace)::ExprInspectionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ExprInspectionChecker>()
Line
Count
Source
204
444
  CHECKER *registerChecker(AT &&... Args) {
205
444
    CheckerTag tag = getTag<CHECKER>();
206
444
    CheckerRef &ref = CheckerTags[tag];
207
444
    assert(!ref && "Checker already registered, use getChecker!");
208
209
444
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
444
    checker->Name = CurrentCheckerName;
211
444
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
444
    CHECKER::_register(checker, *this);
213
444
    ref = checker;
214
444
    return checker;
215
444
  }
FixedAddressChecker.cpp:(anonymous namespace)::FixedAddressChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::FixedAddressChecker>()
Line
Count
Source
204
76
  CHECKER *registerChecker(AT &&... Args) {
205
76
    CheckerTag tag = getTag<CHECKER>();
206
76
    CheckerRef &ref = CheckerTags[tag];
207
76
    assert(!ref && "Checker already registered, use getChecker!");
208
209
76
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
76
    checker->Name = CurrentCheckerName;
211
76
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
76
    CHECKER::_register(checker, *this);
213
76
    ref = checker;
214
76
    return checker;
215
76
  }
FuchsiaHandleChecker.cpp:(anonymous namespace)::FuchsiaHandleChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::FuchsiaHandleChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
GCDAntipatternChecker.cpp:(anonymous namespace)::GCDAntipatternChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::GCDAntipatternChecker>()
Line
Count
Source
204
6
  CHECKER *registerChecker(AT &&... Args) {
205
6
    CheckerTag tag = getTag<CHECKER>();
206
6
    CheckerRef &ref = CheckerTags[tag];
207
6
    assert(!ref && "Checker already registered, use getChecker!");
208
209
6
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
6
    checker->Name = CurrentCheckerName;
211
6
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
6
    CHECKER::_register(checker, *this);
213
6
    ref = checker;
214
6
    return checker;
215
6
  }
GenericTaintChecker.cpp:(anonymous namespace)::GenericTaintChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::GenericTaintChecker>()
Line
Count
Source
204
27
  CHECKER *registerChecker(AT &&... Args) {
205
27
    CheckerTag tag = getTag<CHECKER>();
206
27
    CheckerRef &ref = CheckerTags[tag];
207
27
    assert(!ref && "Checker already registered, use getChecker!");
208
209
27
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
27
    checker->Name = CurrentCheckerName;
211
27
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
27
    CHECKER::_register(checker, *this);
213
27
    ref = checker;
214
27
    return checker;
215
27
  }
GTestChecker.cpp:(anonymous namespace)::GTestChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::GTestChecker>()
Line
Count
Source
204
17
  CHECKER *registerChecker(AT &&... Args) {
205
17
    CheckerTag tag = getTag<CHECKER>();
206
17
    CheckerRef &ref = CheckerTags[tag];
207
17
    assert(!ref && "Checker already registered, use getChecker!");
208
209
17
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
17
    checker->Name = CurrentCheckerName;
211
17
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
17
    CHECKER::_register(checker, *this);
213
17
    ref = checker;
214
17
    return checker;
215
17
  }
IdenticalExprChecker.cpp:(anonymous namespace)::FindIdenticalExprChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::FindIdenticalExprChecker>()
Line
Count
Source
204
75
  CHECKER *registerChecker(AT &&... Args) {
205
75
    CheckerTag tag = getTag<CHECKER>();
206
75
    CheckerRef &ref = CheckerTags[tag];
207
75
    assert(!ref && "Checker already registered, use getChecker!");
208
209
75
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
75
    checker->Name = CurrentCheckerName;
211
75
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
75
    CHECKER::_register(checker, *this);
213
75
    ref = checker;
214
75
    return checker;
215
75
  }
InnerPointerChecker.cpp:(anonymous namespace)::InnerPointerChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::InnerPointerChecker>()
Line
Count
Source
204
66
  CHECKER *registerChecker(AT &&... Args) {
205
66
    CheckerTag tag = getTag<CHECKER>();
206
66
    CheckerRef &ref = CheckerTags[tag];
207
66
    assert(!ref && "Checker already registered, use getChecker!");
208
209
66
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
66
    checker->Name = CurrentCheckerName;
211
66
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
66
    CHECKER::_register(checker, *this);
213
66
    ref = checker;
214
66
    return checker;
215
66
  }
InvalidatedIteratorChecker.cpp:(anonymous namespace)::InvalidatedIteratorChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::InvalidatedIteratorChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
InvalidPtrChecker.cpp:(anonymous namespace)::InvalidPtrChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::InvalidPtrChecker>()
Line
Count
Source
204
11
  CHECKER *registerChecker(AT &&... Args) {
205
11
    CheckerTag tag = getTag<CHECKER>();
206
11
    CheckerRef &ref = CheckerTags[tag];
207
11
    assert(!ref && "Checker already registered, use getChecker!");
208
209
11
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
11
    checker->Name = CurrentCheckerName;
211
11
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
11
    CHECKER::_register(checker, *this);
213
11
    ref = checker;
214
11
    return checker;
215
11
  }
IteratorModeling.cpp:(anonymous namespace)::IteratorModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::IteratorModeling>()
Line
Count
Source
204
19
  CHECKER *registerChecker(AT &&... Args) {
205
19
    CheckerTag tag = getTag<CHECKER>();
206
19
    CheckerRef &ref = CheckerTags[tag];
207
19
    assert(!ref && "Checker already registered, use getChecker!");
208
209
19
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
19
    checker->Name = CurrentCheckerName;
211
19
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
19
    CHECKER::_register(checker, *this);
213
19
    ref = checker;
214
19
    return checker;
215
19
  }
IteratorRangeChecker.cpp:(anonymous namespace)::IteratorRangeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::IteratorRangeChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
IvarInvalidationChecker.cpp:(anonymous namespace)::IvarInvalidationChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::IvarInvalidationChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
LLVMConventionsChecker.cpp:(anonymous namespace)::LLVMConventionsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::LLVMConventionsChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
LocalizationChecker.cpp:(anonymous namespace)::NonLocalizedStringChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NonLocalizedStringChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
LocalizationChecker.cpp:(anonymous namespace)::EmptyLocalizationContextChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::EmptyLocalizationContextChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
LocalizationChecker.cpp:(anonymous namespace)::PluralMisuseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PluralMisuseChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
MacOSKeychainAPIChecker.cpp:(anonymous namespace)::MacOSKeychainAPIChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MacOSKeychainAPIChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
MacOSXAPIChecker.cpp:(anonymous namespace)::MacOSXAPIChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MacOSXAPIChecker>()
Line
Count
Source
204
51
  CHECKER *registerChecker(AT &&... Args) {
205
51
    CheckerTag tag = getTag<CHECKER>();
206
51
    CheckerRef &ref = CheckerTags[tag];
207
51
    assert(!ref && "Checker already registered, use getChecker!");
208
209
51
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
51
    checker->Name = CurrentCheckerName;
211
51
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
51
    CHECKER::_register(checker, *this);
213
51
    ref = checker;
214
51
    return checker;
215
51
  }
MallocChecker.cpp:(anonymous namespace)::MallocChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MallocChecker>()
Line
Count
Source
204
245
  CHECKER *registerChecker(AT &&... Args) {
205
245
    CheckerTag tag = getTag<CHECKER>();
206
245
    CheckerRef &ref = CheckerTags[tag];
207
245
    assert(!ref && "Checker already registered, use getChecker!");
208
209
245
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
245
    checker->Name = CurrentCheckerName;
211
245
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
245
    CHECKER::_register(checker, *this);
213
245
    ref = checker;
214
245
    return checker;
215
245
  }
MallocOverflowSecurityChecker.cpp:(anonymous namespace)::MallocOverflowSecurityChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MallocOverflowSecurityChecker>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
MallocSizeofChecker.cpp:(anonymous namespace)::MallocSizeofChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MallocSizeofChecker>()
Line
Count
Source
204
68
  CHECKER *registerChecker(AT &&... Args) {
205
68
    CheckerTag tag = getTag<CHECKER>();
206
68
    CheckerRef &ref = CheckerTags[tag];
207
68
    assert(!ref && "Checker already registered, use getChecker!");
208
209
68
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
68
    checker->Name = CurrentCheckerName;
211
68
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
68
    CHECKER::_register(checker, *this);
213
68
    ref = checker;
214
68
    return checker;
215
68
  }
MismatchedIteratorChecker.cpp:(anonymous namespace)::MismatchedIteratorChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MismatchedIteratorChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
MmapWriteExecChecker.cpp:(anonymous namespace)::MmapWriteExecChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MmapWriteExecChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
MIGChecker.cpp:(anonymous namespace)::MIGChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MIGChecker>()
Line
Count
Source
204
47
  CHECKER *registerChecker(AT &&... Args) {
205
47
    CheckerTag tag = getTag<CHECKER>();
206
47
    CheckerRef &ref = CheckerTags[tag];
207
47
    assert(!ref && "Checker already registered, use getChecker!");
208
209
47
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
47
    checker->Name = CurrentCheckerName;
211
47
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
47
    CHECKER::_register(checker, *this);
213
47
    ref = checker;
214
47
    return checker;
215
47
  }
MoveChecker.cpp:(anonymous namespace)::MoveChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MoveChecker>()
Line
Count
Source
204
78
  CHECKER *registerChecker(AT &&... Args) {
205
78
    CheckerTag tag = getTag<CHECKER>();
206
78
    CheckerRef &ref = CheckerTags[tag];
207
78
    assert(!ref && "Checker already registered, use getChecker!");
208
209
78
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
78
    checker->Name = CurrentCheckerName;
211
78
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
78
    CHECKER::_register(checker, *this);
213
78
    ref = checker;
214
78
    return checker;
215
78
  }
clang::ento::mpi::MPIChecker* clang::ento::CheckerManager::registerChecker<clang::ento::mpi::MPIChecker>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
Unexecuted instantiation: NSAutoreleasePoolChecker.cpp:(anonymous namespace)::NSAutoreleasePoolChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NSAutoreleasePoolChecker>()
NSErrorChecker.cpp:(anonymous namespace)::NSOrCFErrorDerefChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NSOrCFErrorDerefChecker>()
Line
Count
Source
204
49
  CHECKER *registerChecker(AT &&... Args) {
205
49
    CheckerTag tag = getTag<CHECKER>();
206
49
    CheckerRef &ref = CheckerTags[tag];
207
49
    assert(!ref && "Checker already registered, use getChecker!");
208
209
49
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
49
    checker->Name = CurrentCheckerName;
211
49
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
49
    CHECKER::_register(checker, *this);
213
49
    ref = checker;
214
49
    return checker;
215
49
  }
NSErrorChecker.cpp:(anonymous namespace)::NSErrorMethodChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NSErrorMethodChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
NSErrorChecker.cpp:(anonymous namespace)::CFErrorFunctionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CFErrorFunctionChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
NoReturnFunctionChecker.cpp:(anonymous namespace)::NoReturnFunctionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NoReturnFunctionChecker>()
Line
Count
Source
204
1.29k
  CHECKER *registerChecker(AT &&... Args) {
205
1.29k
    CheckerTag tag = getTag<CHECKER>();
206
1.29k
    CheckerRef &ref = CheckerTags[tag];
207
1.29k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.29k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.29k
    checker->Name = CurrentCheckerName;
211
1.29k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.29k
    CHECKER::_register(checker, *this);
213
1.29k
    ref = checker;
214
1.29k
    return checker;
215
1.29k
  }
NonNullParamChecker.cpp:(anonymous namespace)::NonNullParamChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NonNullParamChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
NonnullGlobalConstantsChecker.cpp:(anonymous namespace)::NonnullGlobalConstantsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NonnullGlobalConstantsChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
NullabilityChecker.cpp:(anonymous namespace)::NullabilityChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NullabilityChecker>()
Line
Count
Source
204
52
  CHECKER *registerChecker(AT &&... Args) {
205
52
    CheckerTag tag = getTag<CHECKER>();
206
52
    CheckerRef &ref = CheckerTags[tag];
207
52
    assert(!ref && "Checker already registered, use getChecker!");
208
209
52
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
52
    checker->Name = CurrentCheckerName;
211
52
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
52
    CHECKER::_register(checker, *this);
213
52
    ref = checker;
214
52
    return checker;
215
52
  }
NumberObjectConversionChecker.cpp:(anonymous namespace)::NumberObjectConversionChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NumberObjectConversionChecker>()
Line
Count
Source
204
55
  CHECKER *registerChecker(AT &&... Args) {
205
55
    CheckerTag tag = getTag<CHECKER>();
206
55
    CheckerRef &ref = CheckerTags[tag];
207
55
    assert(!ref && "Checker already registered, use getChecker!");
208
209
55
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
55
    checker->Name = CurrentCheckerName;
211
55
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
55
    CHECKER::_register(checker, *this);
213
55
    ref = checker;
214
55
    return checker;
215
55
  }
ObjCAtSyncChecker.cpp:(anonymous namespace)::ObjCAtSyncChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCAtSyncChecker>()
Line
Count
Source
204
11
  CHECKER *registerChecker(AT &&... Args) {
205
11
    CheckerTag tag = getTag<CHECKER>();
206
11
    CheckerRef &ref = CheckerTags[tag];
207
11
    assert(!ref && "Checker already registered, use getChecker!");
208
209
11
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
11
    checker->Name = CurrentCheckerName;
211
11
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
11
    CHECKER::_register(checker, *this);
213
11
    ref = checker;
214
11
    return checker;
215
11
  }
ObjCAutoreleaseWriteChecker.cpp:(anonymous namespace)::ObjCAutoreleaseWriteChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCAutoreleaseWriteChecker>()
Line
Count
Source
204
49
  CHECKER *registerChecker(AT &&... Args) {
205
49
    CheckerTag tag = getTag<CHECKER>();
206
49
    CheckerRef &ref = CheckerTags[tag];
207
49
    assert(!ref && "Checker already registered, use getChecker!");
208
209
49
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
49
    checker->Name = CurrentCheckerName;
211
49
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
49
    CHECKER::_register(checker, *this);
213
49
    ref = checker;
214
49
    return checker;
215
49
  }
ObjCContainersASTChecker.cpp:(anonymous namespace)::ObjCContainersASTChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCContainersASTChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
ObjCContainersChecker.cpp:(anonymous namespace)::ObjCContainersChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCContainersChecker>()
Line
Count
Source
204
47
  CHECKER *registerChecker(AT &&... Args) {
205
47
    CheckerTag tag = getTag<CHECKER>();
206
47
    CheckerRef &ref = CheckerTags[tag];
207
47
    assert(!ref && "Checker already registered, use getChecker!");
208
209
47
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
47
    checker->Name = CurrentCheckerName;
211
47
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
47
    CHECKER::_register(checker, *this);
213
47
    ref = checker;
214
47
    return checker;
215
47
  }
ObjCMissingSuperCallChecker.cpp:(anonymous namespace)::ObjCSuperCallChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCSuperCallChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
ObjCPropertyChecker.cpp:(anonymous namespace)::ObjCPropertyChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCPropertyChecker>()
Line
Count
Source
204
47
  CHECKER *registerChecker(AT &&... Args) {
205
47
    CheckerTag tag = getTag<CHECKER>();
206
47
    CheckerRef &ref = CheckerTags[tag];
207
47
    assert(!ref && "Checker already registered, use getChecker!");
208
209
47
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
47
    checker->Name = CurrentCheckerName;
211
47
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
47
    CHECKER::_register(checker, *this);
213
47
    ref = checker;
214
47
    return checker;
215
47
  }
ObjCSelfInitChecker.cpp:(anonymous namespace)::ObjCSelfInitChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCSelfInitChecker>()
Line
Count
Source
204
50
  CHECKER *registerChecker(AT &&... Args) {
205
50
    CheckerTag tag = getTag<CHECKER>();
206
50
    CheckerRef &ref = CheckerTags[tag];
207
50
    assert(!ref && "Checker already registered, use getChecker!");
208
209
50
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
50
    checker->Name = CurrentCheckerName;
211
50
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
50
    CHECKER::_register(checker, *this);
213
50
    ref = checker;
214
50
    return checker;
215
50
  }
ObjCSuperDeallocChecker.cpp:(anonymous namespace)::ObjCSuperDeallocChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCSuperDeallocChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
ObjCUnusedIVarsChecker.cpp:(anonymous namespace)::ObjCUnusedIvarsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ObjCUnusedIvarsChecker>()
Line
Count
Source
204
48
  CHECKER *registerChecker(AT &&... Args) {
205
48
    CheckerTag tag = getTag<CHECKER>();
206
48
    CheckerRef &ref = CheckerTags[tag];
207
48
    assert(!ref && "Checker already registered, use getChecker!");
208
209
48
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
48
    checker->Name = CurrentCheckerName;
211
48
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
48
    CHECKER::_register(checker, *this);
213
48
    ref = checker;
214
48
    return checker;
215
48
  }
OSObjectCStyleCast.cpp:(anonymous namespace)::OSObjectCStyleCastChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::OSObjectCStyleCastChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
PaddingChecker.cpp:(anonymous namespace)::PaddingChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PaddingChecker>()
Line
Count
Source
204
7
  CHECKER *registerChecker(AT &&... Args) {
205
7
    CheckerTag tag = getTag<CHECKER>();
206
7
    CheckerRef &ref = CheckerTags[tag];
207
7
    assert(!ref && "Checker already registered, use getChecker!");
208
209
7
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
7
    checker->Name = CurrentCheckerName;
211
7
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
7
    CHECKER::_register(checker, *this);
213
7
    ref = checker;
214
7
    return checker;
215
7
  }
PointerArithChecker.cpp:(anonymous namespace)::PointerArithChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerArithChecker>()
Line
Count
Source
204
79
  CHECKER *registerChecker(AT &&... Args) {
205
79
    CheckerTag tag = getTag<CHECKER>();
206
79
    CheckerRef &ref = CheckerTags[tag];
207
79
    assert(!ref && "Checker already registered, use getChecker!");
208
209
79
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
79
    checker->Name = CurrentCheckerName;
211
79
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
79
    CHECKER::_register(checker, *this);
213
79
    ref = checker;
214
79
    return checker;
215
79
  }
PointerIterationChecker.cpp:(anonymous namespace)::PointerIterationChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerIterationChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
PointerSortingChecker.cpp:(anonymous namespace)::PointerSortingChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerSortingChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
PointerSubChecker.cpp:(anonymous namespace)::PointerSubChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PointerSubChecker>()
Line
Count
Source
204
76
  CHECKER *registerChecker(AT &&... Args) {
205
76
    CheckerTag tag = getTag<CHECKER>();
206
76
    CheckerRef &ref = CheckerTags[tag];
207
76
    assert(!ref && "Checker already registered, use getChecker!");
208
209
76
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
76
    checker->Name = CurrentCheckerName;
211
76
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
76
    CHECKER::_register(checker, *this);
213
76
    ref = checker;
214
76
    return checker;
215
76
  }
PthreadLockChecker.cpp:(anonymous namespace)::PthreadLockChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PthreadLockChecker>()
Line
Count
Source
204
81
  CHECKER *registerChecker(AT &&... Args) {
205
81
    CheckerTag tag = getTag<CHECKER>();
206
81
    CheckerRef &ref = CheckerTags[tag];
207
81
    assert(!ref && "Checker already registered, use getChecker!");
208
209
81
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
81
    checker->Name = CurrentCheckerName;
211
81
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
81
    CHECKER::_register(checker, *this);
213
81
    ref = checker;
214
81
    return checker;
215
81
  }
PutenvWithAutoChecker.cpp:(anonymous namespace)::PutenvWithAutoChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::PutenvWithAutoChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
clang::ento::retaincountchecker::RetainCountChecker* clang::ento::CheckerManager::registerChecker<clang::ento::retaincountchecker::RetainCountChecker>()
Line
Count
Source
204
96
  CHECKER *registerChecker(AT &&... Args) {
205
96
    CheckerTag tag = getTag<CHECKER>();
206
96
    CheckerRef &ref = CheckerTags[tag];
207
96
    assert(!ref && "Checker already registered, use getChecker!");
208
209
96
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
96
    checker->Name = CurrentCheckerName;
211
96
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
96
    CHECKER::_register(checker, *this);
213
96
    ref = checker;
214
96
    return checker;
215
96
  }
ReturnPointerRangeChecker.cpp:(anonymous namespace)::ReturnPointerRangeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReturnPointerRangeChecker>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
ReturnUndefChecker.cpp:(anonymous namespace)::ReturnUndefChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReturnUndefChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
ReturnValueChecker.cpp:(anonymous namespace)::ReturnValueChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ReturnValueChecker>()
Line
Count
Source
204
42
  CHECKER *registerChecker(AT &&... Args) {
205
42
    CheckerTag tag = getTag<CHECKER>();
206
42
    CheckerRef &ref = CheckerTags[tag];
207
42
    assert(!ref && "Checker already registered, use getChecker!");
208
209
42
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
42
    checker->Name = CurrentCheckerName;
211
42
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
42
    CHECKER::_register(checker, *this);
213
42
    ref = checker;
214
42
    return checker;
215
42
  }
RunLoopAutoreleaseLeakChecker.cpp:(anonymous namespace)::RunLoopAutoreleaseLeakChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::RunLoopAutoreleaseLeakChecker>()
Line
Count
Source
204
53
  CHECKER *registerChecker(AT &&... Args) {
205
53
    CheckerTag tag = getTag<CHECKER>();
206
53
    CheckerRef &ref = CheckerTags[tag];
207
53
    assert(!ref && "Checker already registered, use getChecker!");
208
209
53
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
53
    checker->Name = CurrentCheckerName;
211
53
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
53
    CHECKER::_register(checker, *this);
213
53
    ref = checker;
214
53
    return checker;
215
53
  }
SimpleStreamChecker.cpp:(anonymous namespace)::SimpleStreamChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SimpleStreamChecker>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
SmartPtrChecker.cpp:(anonymous namespace)::SmartPtrChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SmartPtrChecker>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
SmartPtrModeling.cpp:(anonymous namespace)::SmartPtrModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::SmartPtrModeling>()
Line
Count
Source
204
77
  CHECKER *registerChecker(AT &&... Args) {
205
77
    CheckerTag tag = getTag<CHECKER>();
206
77
    CheckerRef &ref = CheckerTags[tag];
207
77
    assert(!ref && "Checker already registered, use getChecker!");
208
209
77
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
77
    checker->Name = CurrentCheckerName;
211
77
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
77
    CHECKER::_register(checker, *this);
213
77
    ref = checker;
214
77
    return checker;
215
77
  }
StackAddrEscapeChecker.cpp:(anonymous namespace)::StackAddrEscapeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StackAddrEscapeChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
StdLibraryFunctionsChecker.cpp:(anonymous namespace)::StdLibraryFunctionsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StdLibraryFunctionsChecker>()
Line
Count
Source
204
115
  CHECKER *registerChecker(AT &&... Args) {
205
115
    CheckerTag tag = getTag<CHECKER>();
206
115
    CheckerRef &ref = CheckerTags[tag];
207
115
    assert(!ref && "Checker already registered, use getChecker!");
208
209
115
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
115
    checker->Name = CurrentCheckerName;
211
115
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
115
    CHECKER::_register(checker, *this);
213
115
    ref = checker;
214
115
    return checker;
215
115
  }
STLAlgorithmModeling.cpp:(anonymous namespace)::STLAlgorithmModeling* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::STLAlgorithmModeling>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
StreamChecker.cpp:(anonymous namespace)::StreamChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StreamChecker>()
Line
Count
Source
204
17
  CHECKER *registerChecker(AT &&... Args) {
205
17
    CheckerTag tag = getTag<CHECKER>();
206
17
    CheckerRef &ref = CheckerTags[tag];
207
17
    assert(!ref && "Checker already registered, use getChecker!");
208
209
17
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
17
    checker->Name = CurrentCheckerName;
211
17
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
17
    CHECKER::_register(checker, *this);
213
17
    ref = checker;
214
17
    return checker;
215
17
  }
StringChecker.cpp:(anonymous namespace)::StringChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::StringChecker>()
Line
Count
Source
204
66
  CHECKER *registerChecker(AT &&... Args) {
205
66
    CheckerTag tag = getTag<CHECKER>();
206
66
    CheckerRef &ref = CheckerTags[tag];
207
66
    assert(!ref && "Checker already registered, use getChecker!");
208
209
66
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
66
    checker->Name = CurrentCheckerName;
211
66
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
66
    CHECKER::_register(checker, *this);
213
66
    ref = checker;
214
66
    return checker;
215
66
  }
TaintTesterChecker.cpp:(anonymous namespace)::TaintTesterChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TaintTesterChecker>()
Line
Count
Source
204
8
  CHECKER *registerChecker(AT &&... Args) {
205
8
    CheckerTag tag = getTag<CHECKER>();
206
8
    CheckerRef &ref = CheckerTags[tag];
207
8
    assert(!ref && "Checker already registered, use getChecker!");
208
209
8
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
8
    checker->Name = CurrentCheckerName;
211
8
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
8
    CHECKER::_register(checker, *this);
213
8
    ref = checker;
214
8
    return checker;
215
8
  }
TestAfterDivZeroChecker.cpp:(anonymous namespace)::TestAfterDivZeroChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TestAfterDivZeroChecker>()
Line
Count
Source
204
76
  CHECKER *registerChecker(AT &&... Args) {
205
76
    CheckerTag tag = getTag<CHECKER>();
206
76
    CheckerRef &ref = CheckerTags[tag];
207
76
    assert(!ref && "Checker already registered, use getChecker!");
208
209
76
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
76
    checker->Name = CurrentCheckerName;
211
76
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
76
    CHECKER::_register(checker, *this);
213
76
    ref = checker;
214
76
    return checker;
215
76
  }
TraversalChecker.cpp:(anonymous namespace)::TraversalDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TraversalDumper>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
Unexecuted instantiation: TraversalChecker.cpp:(anonymous namespace)::CallDumper* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::CallDumper>()
TrustNonnullChecker.cpp:(anonymous namespace)::TrustNonnullChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TrustNonnullChecker, clang::ASTContext&>(clang::ASTContext&)
Line
Count
Source
204
41
  CHECKER *registerChecker(AT &&... Args) {
205
41
    CheckerTag tag = getTag<CHECKER>();
206
41
    CheckerRef &ref = CheckerTags[tag];
207
41
    assert(!ref && "Checker already registered, use getChecker!");
208
209
41
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
41
    checker->Name = CurrentCheckerName;
211
41
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
41
    CHECKER::_register(checker, *this);
213
41
    ref = checker;
214
41
    return checker;
215
41
  }
TrustReturnsNonnullChecker.cpp:(anonymous namespace)::TrustReturnsNonnullChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::TrustReturnsNonnullChecker, clang::ASTContext&>(clang::ASTContext&)
Line
Count
Source
204
42
  CHECKER *registerChecker(AT &&... Args) {
205
42
    CheckerTag tag = getTag<CHECKER>();
206
42
    CheckerRef &ref = CheckerTags[tag];
207
42
    assert(!ref && "Checker already registered, use getChecker!");
208
209
42
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
42
    checker->Name = CurrentCheckerName;
211
42
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
42
    CHECKER::_register(checker, *this);
213
42
    ref = checker;
214
42
    return checker;
215
42
  }
UndefBranchChecker.cpp:(anonymous namespace)::UndefBranchChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefBranchChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
UndefCapturedBlockVarChecker.cpp:(anonymous namespace)::UndefCapturedBlockVarChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefCapturedBlockVarChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
UndefResultChecker.cpp:(anonymous namespace)::UndefResultChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefResultChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
UndefinedArraySubscriptChecker.cpp:(anonymous namespace)::UndefinedArraySubscriptChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefinedArraySubscriptChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
UndefinedAssignmentChecker.cpp:(anonymous namespace)::UndefinedAssignmentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefinedAssignmentChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
UndefinedNewArraySizeChecker.cpp:(anonymous namespace)::UndefinedNewArraySizeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UndefinedNewArraySizeChecker>()
Line
Count
Source
204
775
  CHECKER *registerChecker(AT &&... Args) {
205
775
    CheckerTag tag = getTag<CHECKER>();
206
775
    CheckerRef &ref = CheckerTags[tag];
207
775
    assert(!ref && "Checker already registered, use getChecker!");
208
209
775
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
775
    checker->Name = CurrentCheckerName;
211
775
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
775
    CHECKER::_register(checker, *this);
213
775
    ref = checker;
214
775
    return checker;
215
775
  }
UninitializedObjectChecker.cpp:(anonymous namespace)::UninitializedObjectChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UninitializedObjectChecker>()
Line
Count
Source
204
14
  CHECKER *registerChecker(AT &&... Args) {
205
14
    CheckerTag tag = getTag<CHECKER>();
206
14
    CheckerRef &ref = CheckerTags[tag];
207
14
    assert(!ref && "Checker already registered, use getChecker!");
208
209
14
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
14
    checker->Name = CurrentCheckerName;
211
14
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
14
    CHECKER::_register(checker, *this);
213
14
    ref = checker;
214
14
    return checker;
215
14
  }
UnixAPIChecker.cpp:(anonymous namespace)::UnixAPIMisuseChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UnixAPIMisuseChecker>()
Line
Count
Source
204
71
  CHECKER *registerChecker(AT &&... Args) {
205
71
    CheckerTag tag = getTag<CHECKER>();
206
71
    CheckerRef &ref = CheckerTags[tag];
207
71
    assert(!ref && "Checker already registered, use getChecker!");
208
209
71
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
71
    checker->Name = CurrentCheckerName;
211
71
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
71
    CHECKER::_register(checker, *this);
213
71
    ref = checker;
214
71
    return checker;
215
71
  }
UnixAPIChecker.cpp:(anonymous namespace)::UnixAPIPortabilityChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UnixAPIPortabilityChecker>()
Line
Count
Source
204
4
  CHECKER *registerChecker(AT &&... Args) {
205
4
    CheckerTag tag = getTag<CHECKER>();
206
4
    CheckerRef &ref = CheckerTags[tag];
207
4
    assert(!ref && "Checker already registered, use getChecker!");
208
209
4
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
4
    checker->Name = CurrentCheckerName;
211
4
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
4
    CHECKER::_register(checker, *this);
213
4
    ref = checker;
214
4
    return checker;
215
4
  }
UnreachableCodeChecker.cpp:(anonymous namespace)::UnreachableCodeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UnreachableCodeChecker>()
Line
Count
Source
204
10
  CHECKER *registerChecker(AT &&... Args) {
205
10
    CheckerTag tag = getTag<CHECKER>();
206
10
    CheckerRef &ref = CheckerTags[tag];
207
10
    assert(!ref && "Checker already registered, use getChecker!");
208
209
10
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
10
    checker->Name = CurrentCheckerName;
211
10
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
10
    CHECKER::_register(checker, *this);
213
10
    ref = checker;
214
10
    return checker;
215
10
  }
VforkChecker.cpp:(anonymous namespace)::VforkChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VforkChecker>()
Line
Count
Source
204
68
  CHECKER *registerChecker(AT &&... Args) {
205
68
    CheckerTag tag = getTag<CHECKER>();
206
68
    CheckerRef &ref = CheckerTags[tag];
207
68
    assert(!ref && "Checker already registered, use getChecker!");
208
209
68
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
68
    checker->Name = CurrentCheckerName;
211
68
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
68
    CHECKER::_register(checker, *this);
213
68
    ref = checker;
214
68
    return checker;
215
68
  }
VLASizeChecker.cpp:(anonymous namespace)::VLASizeChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VLASizeChecker>()
Line
Count
Source
204
1.28k
  CHECKER *registerChecker(AT &&... Args) {
205
1.28k
    CheckerTag tag = getTag<CHECKER>();
206
1.28k
    CheckerRef &ref = CheckerTags[tag];
207
1.28k
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1.28k
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1.28k
    checker->Name = CurrentCheckerName;
211
1.28k
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1.28k
    CHECKER::_register(checker, *this);
213
1.28k
    ref = checker;
214
1.28k
    return checker;
215
1.28k
  }
ValistChecker.cpp:(anonymous namespace)::ValistChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::ValistChecker>()
Line
Count
Source
204
7
  CHECKER *registerChecker(AT &&... Args) {
205
7
    CheckerTag tag = getTag<CHECKER>();
206
7
    CheckerRef &ref = CheckerTags[tag];
207
7
    assert(!ref && "Checker already registered, use getChecker!");
208
209
7
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
7
    checker->Name = CurrentCheckerName;
211
7
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
7
    CHECKER::_register(checker, *this);
213
7
    ref = checker;
214
7
    return checker;
215
7
  }
VirtualCallChecker.cpp:(anonymous namespace)::VirtualCallChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::VirtualCallChecker>()
Line
Count
Source
204
73
  CHECKER *registerChecker(AT &&... Args) {
205
73
    CheckerTag tag = getTag<CHECKER>();
206
73
    CheckerRef &ref = CheckerTags[tag];
207
73
    assert(!ref && "Checker already registered, use getChecker!");
208
209
73
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
73
    checker->Name = CurrentCheckerName;
211
73
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
73
    CHECKER::_register(checker, *this);
213
73
    ref = checker;
214
73
    return checker;
215
73
  }
NoUncountedMembersChecker.cpp:(anonymous namespace)::NoUncountedMemberChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::NoUncountedMemberChecker>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
RefCntblBaseVirtualDtorChecker.cpp:(anonymous namespace)::RefCntblBaseVirtualDtorChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::RefCntblBaseVirtualDtorChecker>()
Line
Count
Source
204
3
  CHECKER *registerChecker(AT &&... Args) {
205
3
    CheckerTag tag = getTag<CHECKER>();
206
3
    CheckerRef &ref = CheckerTags[tag];
207
3
    assert(!ref && "Checker already registered, use getChecker!");
208
209
3
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
3
    checker->Name = CurrentCheckerName;
211
3
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
3
    CHECKER::_register(checker, *this);
213
3
    ref = checker;
214
3
    return checker;
215
3
  }
UncountedCallArgsChecker.cpp:(anonymous namespace)::UncountedCallArgsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UncountedCallArgsChecker>()
Line
Count
Source
204
2
  CHECKER *registerChecker(AT &&... Args) {
205
2
    CheckerTag tag = getTag<CHECKER>();
206
2
    CheckerRef &ref = CheckerTags[tag];
207
2
    assert(!ref && "Checker already registered, use getChecker!");
208
209
2
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
2
    checker->Name = CurrentCheckerName;
211
2
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
2
    CHECKER::_register(checker, *this);
213
2
    ref = checker;
214
2
    return checker;
215
2
  }
UncountedLambdaCapturesChecker.cpp:(anonymous namespace)::UncountedLambdaCapturesChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UncountedLambdaCapturesChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
UncountedLocalVarsChecker.cpp:(anonymous namespace)::UncountedLocalVarsChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::UncountedLocalVarsChecker>()
Line
Count
Source
204
1
  CHECKER *registerChecker(AT &&... Args) {
205
1
    CheckerTag tag = getTag<CHECKER>();
206
1
    CheckerRef &ref = CheckerTags[tag];
207
1
    assert(!ref && "Checker already registered, use getChecker!");
208
209
1
    CHECKER *checker = new CHECKER(std::forward<AT>(Args)...);
210
1
    checker->Name = CurrentCheckerName;
211
1
    CheckerDtors.push_back(CheckerDtor(checker, destruct<CHECKER>));
212
1
    CHECKER::_register(checker, *this);
213
1
    ref = checker;
214
1
    return checker;
215
1
  }
Unexecuted instantiation: MainCallChecker.cpp:(anonymous namespace)::MainCallChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MainCallChecker>()
Unexecuted instantiation: CheckerDependencyHandling.cpp:(anonymous namespace)::Dependency* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::Dependency>()
Unexecuted instantiation: CheckerDependencyHandling.cpp:(anonymous namespace)::DependendentChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::DependendentChecker>()
Unexecuted instantiation: CheckerOptionHandling.cpp:(anonymous namespace)::MyChecker* clang::ento::CheckerManager::registerChecker<(anonymous namespace)::MyChecker>()
216
217
  template <typename CHECKER>
218
4.29k
  CHECKER *getChecker() {
219
4.29k
    CheckerTag tag = getTag<CHECKER>();
220
4.29k
    assert(CheckerTags.count(tag) != 0 &&
221
4.29k
           "Requested checker is not registered! Maybe you should add it as a "
222
4.29k
           "dependency in Checkers.td?");
223
4.29k
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
4.29k
  }
CStringChecker.cpp:(anonymous namespace)::CStringChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::CStringChecker>()
Line
Count
Source
218
181
  CHECKER *getChecker() {
219
181
    CheckerTag tag = getTag<CHECKER>();
220
181
    assert(CheckerTags.count(tag) != 0 &&
221
181
           "Requested checker is not registered! Maybe you should add it as a "
222
181
           "dependency in Checkers.td?");
223
181
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
181
  }
CallAndMessageChecker.cpp:(anonymous namespace)::CallAndMessageChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::CallAndMessageChecker>()
Line
Count
Source
218
1.28k
  CHECKER *getChecker() {
219
1.28k
    CheckerTag tag = getTag<CHECKER>();
220
1.28k
    assert(CheckerTags.count(tag) != 0 &&
221
1.28k
           "Requested checker is not registered! Maybe you should add it as a "
222
1.28k
           "dependency in Checkers.td?");
223
1.28k
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
1.28k
  }
CheckSecuritySyntaxOnly.cpp:(anonymous namespace)::SecuritySyntaxChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::SecuritySyntaxChecker>()
Line
Count
Source
218
350
  CHECKER *getChecker() {
219
350
    CheckerTag tag = getTag<CHECKER>();
220
350
    assert(CheckerTags.count(tag) != 0 &&
221
350
           "Requested checker is not registered! Maybe you should add it as a "
222
350
           "dependency in Checkers.td?");
223
350
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
350
  }
DynamicTypePropagation.cpp:(anonymous namespace)::DynamicTypePropagation* clang::ento::CheckerManager::getChecker<(anonymous namespace)::DynamicTypePropagation>()
Line
Count
Source
218
50
  CHECKER *getChecker() {
219
50
    CheckerTag tag = getTag<CHECKER>();
220
50
    assert(CheckerTags.count(tag) != 0 &&
221
50
           "Requested checker is not registered! Maybe you should add it as a "
222
50
           "dependency in Checkers.td?");
223
50
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
50
  }
GenericTaintChecker.cpp:(anonymous namespace)::GenericTaintChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::GenericTaintChecker>()
Line
Count
Source
218
1
  CHECKER *getChecker() {
219
1
    CheckerTag tag = getTag<CHECKER>();
220
1
    assert(CheckerTags.count(tag) != 0 &&
221
1
           "Requested checker is not registered! Maybe you should add it as a "
222
1
           "dependency in Checkers.td?");
223
1
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
1
  }
IvarInvalidationChecker.cpp:(anonymous namespace)::IvarInvalidationChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::IvarInvalidationChecker>()
Line
Count
Source
218
2
  CHECKER *getChecker() {
219
2
    CheckerTag tag = getTag<CHECKER>();
220
2
    assert(CheckerTags.count(tag) != 0 &&
221
2
           "Requested checker is not registered! Maybe you should add it as a "
222
2
           "dependency in Checkers.td?");
223
2
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
2
  }
MallocChecker.cpp:(anonymous namespace)::MallocChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::MallocChecker>()
Line
Count
Source
218
494
  CHECKER *getChecker() {
219
494
    CheckerTag tag = getTag<CHECKER>();
220
494
    assert(CheckerTags.count(tag) != 0 &&
221
494
           "Requested checker is not registered! Maybe you should add it as a "
222
494
           "dependency in Checkers.td?");
223
494
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
494
  }
NSErrorChecker.cpp:(anonymous namespace)::NSOrCFErrorDerefChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::NSOrCFErrorDerefChecker>()
Line
Count
Source
218
96
  CHECKER *getChecker() {
219
96
    CheckerTag tag = getTag<CHECKER>();
220
96
    assert(CheckerTags.count(tag) != 0 &&
221
96
           "Requested checker is not registered! Maybe you should add it as a "
222
96
           "dependency in Checkers.td?");
223
96
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
96
  }
NullabilityChecker.cpp:(anonymous namespace)::NullabilityChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::NullabilityChecker>()
Line
Count
Source
218
157
  CHECKER *getChecker() {
219
157
    CheckerTag tag = getTag<CHECKER>();
220
157
    assert(CheckerTags.count(tag) != 0 &&
221
157
           "Requested checker is not registered! Maybe you should add it as a "
222
157
           "dependency in Checkers.td?");
223
157
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
157
  }
PthreadLockChecker.cpp:(anonymous namespace)::PthreadLockChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::PthreadLockChecker>()
Line
Count
Source
218
83
  CHECKER *getChecker() {
219
83
    CheckerTag tag = getTag<CHECKER>();
220
83
    assert(CheckerTags.count(tag) != 0 &&
221
83
           "Requested checker is not registered! Maybe you should add it as a "
222
83
           "dependency in Checkers.td?");
223
83
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
83
  }
clang::ento::retaincountchecker::RetainCountChecker* clang::ento::CheckerManager::getChecker<clang::ento::retaincountchecker::RetainCountChecker>()
Line
Count
Source
218
140
  CHECKER *getChecker() {
219
140
    CheckerTag tag = getTag<CHECKER>();
220
140
    assert(CheckerTags.count(tag) != 0 &&
221
140
           "Requested checker is not registered! Maybe you should add it as a "
222
140
           "dependency in Checkers.td?");
223
140
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
140
  }
StackAddrEscapeChecker.cpp:(anonymous namespace)::StackAddrEscapeChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::StackAddrEscapeChecker>()
Line
Count
Source
218
1.35k
  CHECKER *getChecker() {
219
1.35k
    CheckerTag tag = getTag<CHECKER>();
220
1.35k
    assert(CheckerTags.count(tag) != 0 &&
221
1.35k
           "Requested checker is not registered! Maybe you should add it as a "
222
1.35k
           "dependency in Checkers.td?");
223
1.35k
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
1.35k
  }
StdLibraryFunctionsChecker.cpp:(anonymous namespace)::StdLibraryFunctionsChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::StdLibraryFunctionsChecker>()
Line
Count
Source
218
8
  CHECKER *getChecker() {
219
8
    CheckerTag tag = getTag<CHECKER>();
220
8
    assert(CheckerTags.count(tag) != 0 &&
221
8
           "Requested checker is not registered! Maybe you should add it as a "
222
8
           "dependency in Checkers.td?");
223
8
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
8
  }
StreamChecker.cpp:(anonymous namespace)::StreamChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::StreamChecker>()
Line
Count
Source
218
1
  CHECKER *getChecker() {
219
1
    CheckerTag tag = getTag<CHECKER>();
220
1
    assert(CheckerTags.count(tag) != 0 &&
221
1
           "Requested checker is not registered! Maybe you should add it as a "
222
1
           "dependency in Checkers.td?");
223
1
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
1
  }
ValistChecker.cpp:(anonymous namespace)::ValistChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::ValistChecker>()
Line
Count
Source
218
13
  CHECKER *getChecker() {
219
13
    CheckerTag tag = getTag<CHECKER>();
220
13
    assert(CheckerTags.count(tag) != 0 &&
221
13
           "Requested checker is not registered! Maybe you should add it as a "
222
13
           "dependency in Checkers.td?");
223
13
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
13
  }
VirtualCallChecker.cpp:(anonymous namespace)::VirtualCallChecker* clang::ento::CheckerManager::getChecker<(anonymous namespace)::VirtualCallChecker>()
Line
Count
Source
218
76
  CHECKER *getChecker() {
219
76
    CheckerTag tag = getTag<CHECKER>();
220
76
    assert(CheckerTags.count(tag) != 0 &&
221
76
           "Requested checker is not registered! Maybe you should add it as a "
222
76
           "dependency in Checkers.td?");
223
76
    return static_cast<CHECKER *>(CheckerTags[tag]);
224
76
  }
225
226
//===----------------------------------------------------------------------===//
227
// Functions for running checkers for AST traversing.
228
//===----------------------------------------------------------------------===//
229
230
  /// Run checkers handling Decls.
231
  void runCheckersOnASTDecl(const Decl *D, AnalysisManager& mgr,
232
                            BugReporter &BR);
233
234
  /// Run checkers handling Decls containing a Stmt body.
235
  void runCheckersOnASTBody(const Decl *D, AnalysisManager& mgr,
236
                            BugReporter &BR);
237
238
//===----------------------------------------------------------------------===//
239
// Functions for running checkers for path-sensitive checking.
240
//===----------------------------------------------------------------------===//
241
242
  /// Run checkers for pre-visiting Stmts.
243
  ///
244
  /// The notification is performed for every explored CFGElement, which does
245
  /// not include the control flow statements such as IfStmt.
246
  ///
247
  /// \sa runCheckersForBranchCondition, runCheckersForPostStmt
248
  void runCheckersForPreStmt(ExplodedNodeSet &Dst,
249
                             const ExplodedNodeSet &Src,
250
                             const Stmt *S,
251
982k
                             ExprEngine &Eng) {
252
982k
    runCheckersForStmt(/*isPreVisit=*/true, Dst, Src, S, Eng);
253
982k
  }
254
255
  /// Run checkers for post-visiting Stmts.
256
  ///
257
  /// The notification is performed for every explored CFGElement, which does
258
  /// not include the control flow statements such as IfStmt.
259
  ///
260
  /// \sa runCheckersForBranchCondition, runCheckersForPreStmt
261
  void runCheckersForPostStmt(ExplodedNodeSet &Dst,
262
                              const ExplodedNodeSet &Src,
263
                              const Stmt *S,
264
                              ExprEngine &Eng,
265
998k
                              bool wasInlined = false) {
266
998k
    runCheckersForStmt(/*isPreVisit=*/false, Dst, Src, S, Eng, wasInlined);
267
998k
  }
268
269
  /// Run checkers for visiting Stmts.
270
  void runCheckersForStmt(bool isPreVisit,
271
                          ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
272
                          const Stmt *S, ExprEngine &Eng,
273
                          bool wasInlined = false);
274
275
  /// Run checkers for pre-visiting obj-c messages.
276
  void runCheckersForPreObjCMessage(ExplodedNodeSet &Dst,
277
                                    const ExplodedNodeSet &Src,
278
                                    const ObjCMethodCall &msg,
279
4.31k
                                    ExprEngine &Eng) {
280
4.31k
    runCheckersForObjCMessage(ObjCMessageVisitKind::Pre, Dst, Src, msg, Eng);
281
4.31k
  }
282
283
  /// Run checkers for post-visiting obj-c messages.
284
  void runCheckersForPostObjCMessage(ExplodedNodeSet &Dst,
285
                                     const ExplodedNodeSet &Src,
286
                                     const ObjCMethodCall &msg,
287
                                     ExprEngine &Eng,
288
4.94k
                                     bool wasInlined = false) {
289
4.94k
    runCheckersForObjCMessage(ObjCMessageVisitKind::Post, Dst, Src, msg, Eng,
290
4.94k
                              wasInlined);
291
4.94k
  }
292
293
  /// Run checkers for visiting an obj-c message to nil.
294
  void runCheckersForObjCMessageNil(ExplodedNodeSet &Dst,
295
                                    const ExplodedNodeSet &Src,
296
                                    const ObjCMethodCall &msg,
297
96
                                    ExprEngine &Eng) {
298
96
    runCheckersForObjCMessage(ObjCMessageVisitKind::MessageNil, Dst, Src, msg,
299
96
                              Eng);
300
96
  }
301
302
  /// Run checkers for visiting obj-c messages.
303
  void runCheckersForObjCMessage(ObjCMessageVisitKind visitKind,
304
                                 ExplodedNodeSet &Dst,
305
                                 const ExplodedNodeSet &Src,
306
                                 const ObjCMethodCall &msg, ExprEngine &Eng,
307
                                 bool wasInlined = false);
308
309
  /// Run checkers for pre-visiting obj-c messages.
310
  void runCheckersForPreCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
311
112k
                             const CallEvent &Call, ExprEngine &Eng) {
312
112k
    runCheckersForCallEvent(/*isPreVisit=*/true, Dst, Src, Call, Eng);
313
112k
  }
314
315
  /// Run checkers for post-visiting obj-c messages.
316
  void runCheckersForPostCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
317
                              const CallEvent &Call, ExprEngine &Eng,
318
153k
                              bool wasInlined = false) {
319
153k
    runCheckersForCallEvent(/*isPreVisit=*/false, Dst, Src, Call, Eng,
320
153k
                            wasInlined);
321
153k
  }
322
323
  /// Run checkers for visiting obj-c messages.
324
  void runCheckersForCallEvent(bool isPreVisit, ExplodedNodeSet &Dst,
325
                               const ExplodedNodeSet &Src,
326
                               const CallEvent &Call, ExprEngine &Eng,
327
                               bool wasInlined = false);
328
329
  /// Run checkers for load/store of a location.
330
  void runCheckersForLocation(ExplodedNodeSet &Dst,
331
                              const ExplodedNodeSet &Src,
332
                              SVal location,
333
                              bool isLoad,
334
                              const Stmt *NodeEx,
335
                              const Stmt *BoundEx,
336
                              ExprEngine &Eng);
337
338
  /// Run checkers for binding of a value to a location.
339
  void runCheckersForBind(ExplodedNodeSet &Dst,
340
                          const ExplodedNodeSet &Src,
341
                          SVal location, SVal val,
342
                          const Stmt *S, ExprEngine &Eng,
343
                          const ProgramPoint &PP);
344
345
  /// Run checkers for end of analysis.
346
  void runCheckersForEndAnalysis(ExplodedGraph &G, BugReporter &BR,
347
                                 ExprEngine &Eng);
348
349
  /// Run checkers on beginning of function.
350
  void runCheckersForBeginFunction(ExplodedNodeSet &Dst,
351
                                   const BlockEdge &L,
352
                                   ExplodedNode *Pred,
353
                                   ExprEngine &Eng);
354
355
  /// Run checkers on end of function.
356
  void runCheckersForEndFunction(NodeBuilderContext &BC,
357
                                 ExplodedNodeSet &Dst,
358
                                 ExplodedNode *Pred,
359
                                 ExprEngine &Eng,
360
                                 const ReturnStmt *RS);
361
362
  /// Run checkers for branch condition.
363
  void runCheckersForBranchCondition(const Stmt *condition,
364
                                     ExplodedNodeSet &Dst, ExplodedNode *Pred,
365
                                     ExprEngine &Eng);
366
367
  /// Run checkers between C++ operator new and constructor calls.
368
  void runCheckersForNewAllocator(const CXXAllocatorCall &Call,
369
                                  ExplodedNodeSet &Dst, ExplodedNode *Pred,
370
                                  ExprEngine &Eng, bool wasInlined = false);
371
372
  /// Run checkers for live symbols.
373
  ///
374
  /// Allows modifying SymbolReaper object. For example, checkers can explicitly
375
  /// register symbols of interest as live. These symbols will not be marked
376
  /// dead and removed.
377
  void runCheckersForLiveSymbols(ProgramStateRef state,
378
                                 SymbolReaper &SymReaper);
379
380
  /// Run checkers for dead symbols.
381
  ///
382
  /// Notifies checkers when symbols become dead. For example, this allows
383
  /// checkers to aggressively clean up/reduce the checker state and produce
384
  /// precise diagnostics.
385
  void runCheckersForDeadSymbols(ExplodedNodeSet &Dst,
386
                                 const ExplodedNodeSet &Src,
387
                                 SymbolReaper &SymReaper, const Stmt *S,
388
                                 ExprEngine &Eng,
389
                                 ProgramPoint::Kind K);
390
391
  /// Run checkers for region changes.
392
  ///
393
  /// This corresponds to the check::RegionChanges callback.
394
  /// \param state The current program state.
395
  /// \param invalidated A set of all symbols potentially touched by the change.
396
  /// \param ExplicitRegions The regions explicitly requested for invalidation.
397
  ///   For example, in the case of a function call, these would be arguments.
398
  /// \param Regions The transitive closure of accessible regions,
399
  ///   i.e. all regions that may have been touched by this change.
400
  /// \param Call The call expression wrapper if the regions are invalidated
401
  ///   by a call.
402
  ProgramStateRef
403
  runCheckersForRegionChanges(ProgramStateRef state,
404
                              const InvalidatedSymbols *invalidated,
405
                              ArrayRef<const MemRegion *> ExplicitRegions,
406
                              ArrayRef<const MemRegion *> Regions,
407
                              const LocationContext *LCtx,
408
                              const CallEvent *Call);
409
410
  /// Run checkers when pointers escape.
411
  ///
412
  /// This notifies the checkers about pointer escape, which occurs whenever
413
  /// the analyzer cannot track the symbol any more. For example, as a
414
  /// result of assigning a pointer into a global or when it's passed to a
415
  /// function call the analyzer cannot model.
416
  ///
417
  /// \param State The state at the point of escape.
418
  /// \param Escaped The list of escaped symbols.
419
  /// \param Call The corresponding CallEvent, if the symbols escape as
420
  ///        parameters to the given call.
421
  /// \param Kind The reason of pointer escape.
422
  /// \param ITraits Information about invalidation for a particular
423
  ///        region/symbol.
424
  /// \returns Checkers can modify the state by returning a new one.
425
  ProgramStateRef
426
  runCheckersForPointerEscape(ProgramStateRef State,
427
                              const InvalidatedSymbols &Escaped,
428
                              const CallEvent *Call,
429
                              PointerEscapeKind Kind,
430
                              RegionAndSymbolInvalidationTraits *ITraits);
431
432
  /// Run checkers for handling assumptions on symbolic values.
433
  ProgramStateRef runCheckersForEvalAssume(ProgramStateRef state,
434
                                           SVal Cond, bool Assumption);
435
436
  /// Run checkers for evaluating a call.
437
  ///
438
  /// Warning: Currently, the CallEvent MUST come from a CallExpr!
439
  void runCheckersForEvalCall(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src,
440
                              const CallEvent &CE, ExprEngine &Eng,
441
                              const EvalCallOptions &CallOpts);
442
443
  /// Run checkers for the entire Translation Unit.
444
  void runCheckersOnEndOfTranslationUnit(const TranslationUnitDecl *TU,
445
                                         AnalysisManager &mgr,
446
                                         BugReporter &BR);
447
448
  /// Run checkers for debug-printing a ProgramState.
449
  ///
450
  /// Unlike most other callbacks, any checker can simply implement the virtual
451
  /// method CheckerBase::printState if it has custom data to print.
452
  ///
453
  /// \param Out   The output stream
454
  /// \param State The state being printed
455
  /// \param NL    The preferred representation of a newline.
456
  /// \param Space The preferred space between the left side and the message.
457
  /// \param IsDot Whether the message will be printed in 'dot' format.
458
  void runCheckersForPrintStateJson(raw_ostream &Out, ProgramStateRef State,
459
                                    const char *NL = "\n",
460
                                    unsigned int Space = 0,
461
                                    bool IsDot = false) const;
462
463
  //===----------------------------------------------------------------------===//
464
  // Internal registration functions for AST traversing.
465
  //===----------------------------------------------------------------------===//
466
467
  // Functions used by the registration mechanism, checkers should not touch
468
  // these directly.
469
470
  using CheckDeclFunc =
471
      CheckerFn<void (const Decl *, AnalysisManager&, BugReporter &)>;
472
473
  using HandlesDeclFunc = bool (*)(const Decl *D);
474
475
  void _registerForDecl(CheckDeclFunc checkfn, HandlesDeclFunc isForDeclFn);
476
477
  void _registerForBody(CheckDeclFunc checkfn);
478
479
//===----------------------------------------------------------------------===//
480
// Internal registration functions for path-sensitive checking.
481
//===----------------------------------------------------------------------===//
482
483
  using CheckStmtFunc = CheckerFn<void (const Stmt *, CheckerContext &)>;
484
485
  using CheckObjCMessageFunc =
486
      CheckerFn<void (const ObjCMethodCall &, CheckerContext &)>;
487
488
  using CheckCallFunc =
489
      CheckerFn<void (const CallEvent &, CheckerContext &)>;
490
491
  using CheckLocationFunc =
492
      CheckerFn<void (const SVal &location, bool isLoad, const Stmt *S,
493
                      CheckerContext &)>;
494
495
  using CheckBindFunc =
496
      CheckerFn<void (const SVal &location, const SVal &val, const Stmt *S,
497
                      CheckerContext &)>;
498
499
  using CheckEndAnalysisFunc =
500
      CheckerFn<void (ExplodedGraph &, BugReporter &, ExprEngine &)>;
501
502
  using CheckBeginFunctionFunc = CheckerFn<void (CheckerContext &)>;
503
504
  using CheckEndFunctionFunc =
505
      CheckerFn<void (const ReturnStmt *, CheckerContext &)>;
506
507
  using CheckBranchConditionFunc =
508
      CheckerFn<void (const Stmt *, CheckerContext &)>;
509
510
  using CheckNewAllocatorFunc =
511
      CheckerFn<void(const CXXAllocatorCall &Call, CheckerContext &)>;
512
513
  using CheckDeadSymbolsFunc =
514
      CheckerFn<void (SymbolReaper &, CheckerContext &)>;
515
516
  using CheckLiveSymbolsFunc = CheckerFn<void (ProgramStateRef,SymbolReaper &)>;
517
518
  using CheckRegionChangesFunc =
519
      CheckerFn<ProgramStateRef (ProgramStateRef,
520
                                 const InvalidatedSymbols *symbols,
521
                                 ArrayRef<const MemRegion *> ExplicitRegions,
522
                                 ArrayRef<const MemRegion *> Regions,
523
                                 const LocationContext *LCtx,
524
                                 const CallEvent *Call)>;
525
526
  using CheckPointerEscapeFunc =
527
      CheckerFn<ProgramStateRef (ProgramStateRef,
528
                                 const InvalidatedSymbols &Escaped,
529
                                 const CallEvent *Call, PointerEscapeKind Kind,
530
                                 RegionAndSymbolInvalidationTraits *ITraits)>;
531
532
  using EvalAssumeFunc =
533
      CheckerFn<ProgramStateRef (ProgramStateRef, const SVal &cond,
534
                                 bool assumption)>;
535
536
  using EvalCallFunc = CheckerFn<bool (const CallEvent &, CheckerContext &)>;
537
538
  using CheckEndOfTranslationUnit =
539
      CheckerFn<void (const TranslationUnitDecl *, AnalysisManager &,
540
                      BugReporter &)>;
541
542
  using HandlesStmtFunc = bool (*)(const Stmt *D);
543
544
  void _registerForPreStmt(CheckStmtFunc checkfn,
545
                           HandlesStmtFunc isForStmtFn);
546
  void _registerForPostStmt(CheckStmtFunc checkfn,
547
                            HandlesStmtFunc isForStmtFn);
548
549
  void _registerForPreObjCMessage(CheckObjCMessageFunc checkfn);
550
  void _registerForPostObjCMessage(CheckObjCMessageFunc checkfn);
551
552
  void _registerForObjCMessageNil(CheckObjCMessageFunc checkfn);
553
554
  void _registerForPreCall(CheckCallFunc checkfn);
555
  void _registerForPostCall(CheckCallFunc checkfn);
556
557
  void _registerForLocation(CheckLocationFunc checkfn);
558
559
  void _registerForBind(CheckBindFunc checkfn);
560
561
  void _registerForEndAnalysis(CheckEndAnalysisFunc checkfn);
562
563
  void _registerForBeginFunction(CheckBeginFunctionFunc checkfn);
564
  void _registerForEndFunction(CheckEndFunctionFunc checkfn);
565
566
  void _registerForBranchCondition(CheckBranchConditionFunc checkfn);
567
568
  void _registerForNewAllocator(CheckNewAllocatorFunc checkfn);
569
570
  void _registerForLiveSymbols(CheckLiveSymbolsFunc checkfn);
571
572
  void _registerForDeadSymbols(CheckDeadSymbolsFunc checkfn);
573
574
  void _registerForRegionChanges(CheckRegionChangesFunc checkfn);
575
576
  void _registerForPointerEscape(CheckPointerEscapeFunc checkfn);
577
578
  void _registerForConstPointerEscape(CheckPointerEscapeFunc checkfn);
579
580
  void _registerForEvalAssume(EvalAssumeFunc checkfn);
581
582
  void _registerForEvalCall(EvalCallFunc checkfn);
583
584
  void _registerForEndOfTranslationUnit(CheckEndOfTranslationUnit checkfn);
585
586
//===----------------------------------------------------------------------===//
587
// Internal registration functions for events.
588
//===----------------------------------------------------------------------===//
589
590
  using EventTag = void *;
591
  using CheckEventFunc = CheckerFn<void (const void *event)>;
592
593
  template <typename EVENT>
594
101
  void _registerListenerForEvent(CheckEventFunc checkfn) {
595
101
    EventInfo &info = Events[&EVENT::Tag];
596
101
    info.Checkers.push_back(checkfn);
597
101
  }
598
599
  template <typename EVENT>
600
2.62k
  void _registerDispatcherForEvent() {
601
2.62k
    EventInfo &info = Events[&EVENT::Tag];
602
2.62k
    info.HasDispatcher = true;
603
2.62k
  }
604
605
  template <typename EVENT>
606
3.34k
  void _dispatchEvent(const EVENT &event) const {
607
3.34k
    EventsTy::const_iterator I = Events.find(&EVENT::Tag);
608
3.34k
    if (I == Events.end())
609
0
      return;
610
3.34k
    const EventInfo &info = I->second;
611
3.34k
    for (const auto &Checker : info.Checkers)
612
70
      Checker(&event);
613
3.34k
  }
614
615
//===----------------------------------------------------------------------===//
616
// Implementation details.
617
//===----------------------------------------------------------------------===//
618
619
private:
620
  template <typename CHECKER>
621
27.5k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
AnalysisOrderChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::AnalysisOrderChecker>(void*)
Line
Count
Source
621
12
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
AnalyzerStatsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::AnalyzerStatsChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ArrayBoundChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ArrayBoundChecker>(void*)
Line
Count
Source
621
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ArrayBoundCheckerV2.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ArrayBoundCheckerV2>(void*)
Line
Count
Source
621
11
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NilArgChecker>(void*)
Line
Count
Source
621
53
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFNumberChecker>(void*)
Line
Count
Source
621
47
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFRetainReleaseChecker>(void*)
Line
Count
Source
621
57
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ClassReleaseChecker>(void*)
Line
Count
Source
621
56
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VariadicMethodTypeChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCLoopChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BasicObjCFoundationChecks.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCNonNilReturnValueChecker>(void*)
Line
Count
Source
621
49
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
void clang::ento::CheckerManager::destruct<BitwiseShiftChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BlockInCriticalSectionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::BlockInCriticalSectionChecker>(void*)
Line
Count
Source
621
5
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BoolAssignmentChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::BoolAssignmentChecker>(void*)
Line
Count
Source
621
76
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
BuiltinFunctionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::BuiltinFunctionChecker>(void*)
Line
Count
Source
621
1.29k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CStringChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CStringChecker>(void*)
Line
Count
Source
621
274
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CStringSyntaxChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CStringSyntaxChecker>(void*)
Line
Count
Source
621
97
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CallAndMessageChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallAndMessageChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CastSizeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CastSizeChecker>(void*)
Line
Count
Source
621
62
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CastToStructChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CastToStructChecker>(void*)
Line
Count
Source
621
80
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CastValueChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CastValueChecker>(void*)
Line
Count
Source
621
52
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckObjCDealloc.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCDeallocChecker>(void*)
Line
Count
Source
621
50
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckObjCInstMethSignature.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCMethSigsChecker>(void*)
Line
Count
Source
621
49
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckPlacementNew.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PlacementNewChecker>(void*)
Line
Count
Source
621
67
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckSecuritySyntaxOnly.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SecuritySyntaxChecker>(void*)
Line
Count
Source
621
50
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CheckSizeofPointer.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SizeofPointerChecker>(void*)
Line
Count
Source
621
75
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ChrootChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ChrootChecker>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CloneChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CloneChecker>(void*)
Line
Count
Source
621
28
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ContainerModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ContainerModeling>(void*)
Line
Count
Source
621
21
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ConversionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ConversionChecker>(void*)
Line
Count
Source
621
77
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CXXDeleteChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CXXArrayDeleteChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CXXDeleteChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DeleteWithNonVirtualDtorChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
CXXSelfAssignmentChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CXXSelfAssignmentChecker>(void*)
Line
Count
Source
621
65
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DeadStoresChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DeadStoresChecker>(void*)
Line
Count
Source
621
59
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DominatorsTreeDumper>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PostDominatorsTreeDumper>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ControlDependencyTreeDumper>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::LiveVariablesDumper>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::LiveExpressionsDumper>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFGViewer>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFGDumper>(void*)
Line
Count
Source
621
40
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallGraphViewer>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallGraphDumper>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ConfigDumper>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ExplodedGraphViewer>(void*)
DebugCheckers.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReportStmts>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugContainerModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DebugContainerModeling>(void*)
Line
Count
Source
621
13
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DebugIteratorModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DebugIteratorModeling>(void*)
Line
Count
Source
621
11
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DereferenceChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DereferenceChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DirectIvarAssignment.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DirectIvarAssignment>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DivZeroChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DivZeroChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DynamicTypePropagation.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DynamicTypePropagation>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
DynamicTypeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DynamicTypeChecker>(void*)
Line
Count
Source
621
77
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
EnumCastOutOfRangeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::EnumCastOutOfRangeChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ErrnoChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ErrnoChecker>(void*)
Line
Count
Source
621
15
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ErrnoModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ErrnoModeling>(void*)
Line
Count
Source
621
56
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ErrnoTesterChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ErrnoTesterChecker>(void*)
Line
Count
Source
621
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ExprInspectionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ExprInspectionChecker>(void*)
Line
Count
Source
621
444
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
FixedAddressChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::FixedAddressChecker>(void*)
Line
Count
Source
621
76
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
FuchsiaHandleChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::FuchsiaHandleChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
GCDAntipatternChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::GCDAntipatternChecker>(void*)
Line
Count
Source
621
6
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
GenericTaintChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::GenericTaintChecker>(void*)
Line
Count
Source
621
27
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
GTestChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::GTestChecker>(void*)
Line
Count
Source
621
17
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IdenticalExprChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::FindIdenticalExprChecker>(void*)
Line
Count
Source
621
75
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
InnerPointerChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::InnerPointerChecker>(void*)
Line
Count
Source
621
66
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
InvalidatedIteratorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::InvalidatedIteratorChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
InvalidPtrChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::InvalidPtrChecker>(void*)
Line
Count
Source
621
11
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IteratorModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::IteratorModeling>(void*)
Line
Count
Source
621
19
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IteratorRangeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::IteratorRangeChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
IvarInvalidationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::IvarInvalidationChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LLVMConventionsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::LLVMConventionsChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LocalizationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NonLocalizedStringChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LocalizationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::EmptyLocalizationContextChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
LocalizationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PluralMisuseChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MacOSKeychainAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MacOSKeychainAPIChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MacOSXAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MacOSXAPIChecker>(void*)
Line
Count
Source
621
51
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MallocChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MallocChecker>(void*)
Line
Count
Source
621
245
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MallocOverflowSecurityChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MallocOverflowSecurityChecker>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MallocSizeofChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MallocSizeofChecker>(void*)
Line
Count
Source
621
68
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MismatchedIteratorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MismatchedIteratorChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MmapWriteExecChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MmapWriteExecChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MIGChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MIGChecker>(void*)
Line
Count
Source
621
47
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
MoveChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MoveChecker>(void*)
Line
Count
Source
621
78
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
void clang::ento::CheckerManager::destruct<clang::ento::mpi::MPIChecker>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: NSAutoreleasePoolChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NSAutoreleasePoolChecker>(void*)
NSErrorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NSOrCFErrorDerefChecker>(void*)
Line
Count
Source
621
49
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NSErrorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NSErrorMethodChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NSErrorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CFErrorFunctionChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NoReturnFunctionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NoReturnFunctionChecker>(void*)
Line
Count
Source
621
1.29k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NonNullParamChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NonNullParamChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NonnullGlobalConstantsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NonnullGlobalConstantsChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NullabilityChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NullabilityChecker>(void*)
Line
Count
Source
621
52
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NumberObjectConversionChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NumberObjectConversionChecker>(void*)
Line
Count
Source
621
55
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCAtSyncChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCAtSyncChecker>(void*)
Line
Count
Source
621
11
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCAutoreleaseWriteChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCAutoreleaseWriteChecker>(void*)
Line
Count
Source
621
49
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCContainersASTChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCContainersASTChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCContainersChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCContainersChecker>(void*)
Line
Count
Source
621
47
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCMissingSuperCallChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCSuperCallChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCPropertyChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCPropertyChecker>(void*)
Line
Count
Source
621
47
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCSelfInitChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCSelfInitChecker>(void*)
Line
Count
Source
621
50
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCSuperDeallocChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCSuperDeallocChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ObjCUnusedIVarsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ObjCUnusedIvarsChecker>(void*)
Line
Count
Source
621
48
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
OSObjectCStyleCast.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::OSObjectCStyleCastChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PaddingChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PaddingChecker>(void*)
Line
Count
Source
621
7
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerArithChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerArithChecker>(void*)
Line
Count
Source
621
79
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerIterationChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerIterationChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerSortingChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerSortingChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PointerSubChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PointerSubChecker>(void*)
Line
Count
Source
621
76
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PthreadLockChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PthreadLockChecker>(void*)
Line
Count
Source
621
81
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
PutenvWithAutoChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::PutenvWithAutoChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
void clang::ento::CheckerManager::destruct<clang::ento::retaincountchecker::RetainCountChecker>(void*)
Line
Count
Source
621
96
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ReturnPointerRangeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReturnPointerRangeChecker>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ReturnUndefChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReturnUndefChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ReturnValueChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ReturnValueChecker>(void*)
Line
Count
Source
621
42
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
RunLoopAutoreleaseLeakChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::RunLoopAutoreleaseLeakChecker>(void*)
Line
Count
Source
621
53
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
SimpleStreamChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SimpleStreamChecker>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
SmartPtrChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SmartPtrChecker>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
SmartPtrModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::SmartPtrModeling>(void*)
Line
Count
Source
621
77
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StackAddrEscapeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StackAddrEscapeChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StdLibraryFunctionsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StdLibraryFunctionsChecker>(void*)
Line
Count
Source
621
115
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
STLAlgorithmModeling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::STLAlgorithmModeling>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StreamChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StreamChecker>(void*)
Line
Count
Source
621
17
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
StringChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::StringChecker>(void*)
Line
Count
Source
621
66
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TaintTesterChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TaintTesterChecker>(void*)
Line
Count
Source
621
8
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TestAfterDivZeroChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TestAfterDivZeroChecker>(void*)
Line
Count
Source
621
76
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TraversalChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TraversalDumper>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: TraversalChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::CallDumper>(void*)
TrustNonnullChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TrustNonnullChecker>(void*)
Line
Count
Source
621
41
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
TrustReturnsNonnullChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::TrustReturnsNonnullChecker>(void*)
Line
Count
Source
621
42
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefBranchChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefBranchChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefCapturedBlockVarChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefCapturedBlockVarChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefResultChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefResultChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefinedArraySubscriptChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefinedArraySubscriptChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefinedAssignmentChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefinedAssignmentChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UndefinedNewArraySizeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UndefinedNewArraySizeChecker>(void*)
Line
Count
Source
621
775
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UninitializedObjectChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UninitializedObjectChecker>(void*)
Line
Count
Source
621
14
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UnixAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UnixAPIMisuseChecker>(void*)
Line
Count
Source
621
71
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UnixAPIChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UnixAPIPortabilityChecker>(void*)
Line
Count
Source
621
4
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UnreachableCodeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UnreachableCodeChecker>(void*)
Line
Count
Source
621
10
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
VforkChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VforkChecker>(void*)
Line
Count
Source
621
68
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
VLASizeChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VLASizeChecker>(void*)
Line
Count
Source
621
1.28k
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
ValistChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::ValistChecker>(void*)
Line
Count
Source
621
7
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
VirtualCallChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::VirtualCallChecker>(void*)
Line
Count
Source
621
73
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
NoUncountedMembersChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::NoUncountedMemberChecker>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
RefCntblBaseVirtualDtorChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::RefCntblBaseVirtualDtorChecker>(void*)
Line
Count
Source
621
3
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UncountedCallArgsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UncountedCallArgsChecker>(void*)
Line
Count
Source
621
2
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UncountedLambdaCapturesChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UncountedLambdaCapturesChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
UncountedLocalVarsChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::UncountedLocalVarsChecker>(void*)
Line
Count
Source
621
1
  static void destruct(void *obj) { delete static_cast<CHECKER *>(obj); }
Unexecuted instantiation: MainCallChecker.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MainCallChecker>(void*)
Unexecuted instantiation: CheckerDependencyHandling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::Dependency>(void*)
Unexecuted instantiation: CheckerDependencyHandling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::DependendentChecker>(void*)
Unexecuted instantiation: CheckerOptionHandling.cpp:void clang::ento::CheckerManager::destruct<(anonymous namespace)::MyChecker>(void*)
622
623
  template <typename T>
624
31.8k
  static void *getTag() { static int tag; return &tag; }
AnalysisOrderChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::AnalysisOrderChecker>()
Line
Count
Source
624
12
  static void *getTag() { static int tag; return &tag; }
AnalyzerStatsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::AnalyzerStatsChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
ArrayBoundChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ArrayBoundChecker>()
Line
Count
Source
624
6
  static void *getTag() { static int tag; return &tag; }
ArrayBoundCheckerV2.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ArrayBoundCheckerV2>()
Line
Count
Source
624
11
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NilArgChecker>()
Line
Count
Source
624
53
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFNumberChecker>()
Line
Count
Source
624
47
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFRetainReleaseChecker>()
Line
Count
Source
624
57
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ClassReleaseChecker>()
Line
Count
Source
624
56
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VariadicMethodTypeChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCLoopChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
BasicObjCFoundationChecks.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCNonNilReturnValueChecker>()
Line
Count
Source
624
49
  static void *getTag() { static int tag; return &tag; }
void* clang::ento::CheckerManager::getTag<BitwiseShiftChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
BlockInCriticalSectionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::BlockInCriticalSectionChecker>()
Line
Count
Source
624
5
  static void *getTag() { static int tag; return &tag; }
BoolAssignmentChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::BoolAssignmentChecker>()
Line
Count
Source
624
76
  static void *getTag() { static int tag; return &tag; }
BuiltinFunctionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::BuiltinFunctionChecker>()
Line
Count
Source
624
1.29k
  static void *getTag() { static int tag; return &tag; }
CStringChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CStringChecker>()
Line
Count
Source
624
455
  static void *getTag() { static int tag; return &tag; }
CStringSyntaxChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CStringSyntaxChecker>()
Line
Count
Source
624
97
  static void *getTag() { static int tag; return &tag; }
CallAndMessageChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallAndMessageChecker>()
Line
Count
Source
624
2.56k
  static void *getTag() { static int tag; return &tag; }
CastSizeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CastSizeChecker>()
Line
Count
Source
624
62
  static void *getTag() { static int tag; return &tag; }
CastToStructChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CastToStructChecker>()
Line
Count
Source
624
80
  static void *getTag() { static int tag; return &tag; }
CastValueChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CastValueChecker>()
Line
Count
Source
624
52
  static void *getTag() { static int tag; return &tag; }
CheckObjCDealloc.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCDeallocChecker>()
Line
Count
Source
624
50
  static void *getTag() { static int tag; return &tag; }
CheckObjCInstMethSignature.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCMethSigsChecker>()
Line
Count
Source
624
49
  static void *getTag() { static int tag; return &tag; }
CheckPlacementNew.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PlacementNewChecker>()
Line
Count
Source
624
67
  static void *getTag() { static int tag; return &tag; }
CheckSecuritySyntaxOnly.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SecuritySyntaxChecker>()
Line
Count
Source
624
400
  static void *getTag() { static int tag; return &tag; }
CheckSizeofPointer.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SizeofPointerChecker>()
Line
Count
Source
624
75
  static void *getTag() { static int tag; return &tag; }
ChrootChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ChrootChecker>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
CloneChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CloneChecker>()
Line
Count
Source
624
28
  static void *getTag() { static int tag; return &tag; }
ContainerModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ContainerModeling>()
Line
Count
Source
624
21
  static void *getTag() { static int tag; return &tag; }
ConversionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ConversionChecker>()
Line
Count
Source
624
77
  static void *getTag() { static int tag; return &tag; }
CXXDeleteChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CXXArrayDeleteChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
CXXDeleteChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DeleteWithNonVirtualDtorChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
CXXSelfAssignmentChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CXXSelfAssignmentChecker>()
Line
Count
Source
624
65
  static void *getTag() { static int tag; return &tag; }
DeadStoresChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DeadStoresChecker>()
Line
Count
Source
624
59
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DominatorsTreeDumper>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PostDominatorsTreeDumper>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ControlDependencyTreeDumper>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::LiveVariablesDumper>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::LiveExpressionsDumper>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFGViewer>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFGDumper>()
Line
Count
Source
624
40
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallGraphViewer>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallGraphDumper>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ConfigDumper>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ExplodedGraphViewer>()
DebugCheckers.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReportStmts>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
DebugContainerModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DebugContainerModeling>()
Line
Count
Source
624
13
  static void *getTag() { static int tag; return &tag; }
DebugIteratorModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DebugIteratorModeling>()
Line
Count
Source
624
11
  static void *getTag() { static int tag; return &tag; }
DereferenceChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DereferenceChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
DirectIvarAssignment.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DirectIvarAssignment>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
DivZeroChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DivZeroChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
DynamicTypePropagation.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DynamicTypePropagation>()
Line
Count
Source
624
1.33k
  static void *getTag() { static int tag; return &tag; }
DynamicTypeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DynamicTypeChecker>()
Line
Count
Source
624
77
  static void *getTag() { static int tag; return &tag; }
EnumCastOutOfRangeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::EnumCastOutOfRangeChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
ErrnoChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ErrnoChecker>()
Line
Count
Source
624
15
  static void *getTag() { static int tag; return &tag; }
ErrnoModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ErrnoModeling>()
Line
Count
Source
624
56
  static void *getTag() { static int tag; return &tag; }
ErrnoTesterChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ErrnoTesterChecker>()
Line
Count
Source
624
6
  static void *getTag() { static int tag; return &tag; }
ExprInspectionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ExprInspectionChecker>()
Line
Count
Source
624
444
  static void *getTag() { static int tag; return &tag; }
FixedAddressChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::FixedAddressChecker>()
Line
Count
Source
624
76
  static void *getTag() { static int tag; return &tag; }
FuchsiaHandleChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::FuchsiaHandleChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
GCDAntipatternChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::GCDAntipatternChecker>()
Line
Count
Source
624
6
  static void *getTag() { static int tag; return &tag; }
GenericTaintChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::GenericTaintChecker>()
Line
Count
Source
624
28
  static void *getTag() { static int tag; return &tag; }
GTestChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::GTestChecker>()
Line
Count
Source
624
17
  static void *getTag() { static int tag; return &tag; }
IdenticalExprChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::FindIdenticalExprChecker>()
Line
Count
Source
624
75
  static void *getTag() { static int tag; return &tag; }
InnerPointerChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::InnerPointerChecker>()
Line
Count
Source
624
66
  static void *getTag() { static int tag; return &tag; }
InvalidatedIteratorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::InvalidatedIteratorChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
InvalidPtrChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::InvalidPtrChecker>()
Line
Count
Source
624
11
  static void *getTag() { static int tag; return &tag; }
IteratorModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::IteratorModeling>()
Line
Count
Source
624
19
  static void *getTag() { static int tag; return &tag; }
IteratorRangeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::IteratorRangeChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
IvarInvalidationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::IvarInvalidationChecker>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
LLVMConventionsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::LLVMConventionsChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
LocalizationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NonLocalizedStringChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
LocalizationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::EmptyLocalizationContextChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
LocalizationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PluralMisuseChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
MacOSKeychainAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MacOSKeychainAPIChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
MacOSXAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MacOSXAPIChecker>()
Line
Count
Source
624
51
  static void *getTag() { static int tag; return &tag; }
MallocChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MallocChecker>()
Line
Count
Source
624
739
  static void *getTag() { static int tag; return &tag; }
MallocOverflowSecurityChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MallocOverflowSecurityChecker>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
MallocSizeofChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MallocSizeofChecker>()
Line
Count
Source
624
68
  static void *getTag() { static int tag; return &tag; }
MismatchedIteratorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MismatchedIteratorChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
MmapWriteExecChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MmapWriteExecChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
MIGChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MIGChecker>()
Line
Count
Source
624
47
  static void *getTag() { static int tag; return &tag; }
MoveChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MoveChecker>()
Line
Count
Source
624
78
  static void *getTag() { static int tag; return &tag; }
void* clang::ento::CheckerManager::getTag<clang::ento::mpi::MPIChecker>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: NSAutoreleasePoolChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NSAutoreleasePoolChecker>()
NSErrorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NSOrCFErrorDerefChecker>()
Line
Count
Source
624
145
  static void *getTag() { static int tag; return &tag; }
NSErrorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NSErrorMethodChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
NSErrorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CFErrorFunctionChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
NoReturnFunctionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NoReturnFunctionChecker>()
Line
Count
Source
624
1.29k
  static void *getTag() { static int tag; return &tag; }
NonNullParamChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NonNullParamChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
NonnullGlobalConstantsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NonnullGlobalConstantsChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
NullabilityChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NullabilityChecker>()
Line
Count
Source
624
209
  static void *getTag() { static int tag; return &tag; }
NumberObjectConversionChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NumberObjectConversionChecker>()
Line
Count
Source
624
55
  static void *getTag() { static int tag; return &tag; }
ObjCAtSyncChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCAtSyncChecker>()
Line
Count
Source
624
11
  static void *getTag() { static int tag; return &tag; }
ObjCAutoreleaseWriteChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCAutoreleaseWriteChecker>()
Line
Count
Source
624
49
  static void *getTag() { static int tag; return &tag; }
ObjCContainersASTChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCContainersASTChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
ObjCContainersChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCContainersChecker>()
Line
Count
Source
624
47
  static void *getTag() { static int tag; return &tag; }
ObjCMissingSuperCallChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCSuperCallChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
ObjCPropertyChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCPropertyChecker>()
Line
Count
Source
624
47
  static void *getTag() { static int tag; return &tag; }
ObjCSelfInitChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCSelfInitChecker>()
Line
Count
Source
624
50
  static void *getTag() { static int tag; return &tag; }
ObjCSuperDeallocChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCSuperDeallocChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
ObjCUnusedIVarsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ObjCUnusedIvarsChecker>()
Line
Count
Source
624
48
  static void *getTag() { static int tag; return &tag; }
OSObjectCStyleCast.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::OSObjectCStyleCastChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
PaddingChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PaddingChecker>()
Line
Count
Source
624
7
  static void *getTag() { static int tag; return &tag; }
PointerArithChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerArithChecker>()
Line
Count
Source
624
79
  static void *getTag() { static int tag; return &tag; }
PointerIterationChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerIterationChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
PointerSortingChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerSortingChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
PointerSubChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PointerSubChecker>()
Line
Count
Source
624
76
  static void *getTag() { static int tag; return &tag; }
PthreadLockChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PthreadLockChecker>()
Line
Count
Source
624
164
  static void *getTag() { static int tag; return &tag; }
PutenvWithAutoChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::PutenvWithAutoChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
void* clang::ento::CheckerManager::getTag<clang::ento::retaincountchecker::RetainCountChecker>()
Line
Count
Source
624
236
  static void *getTag() { static int tag; return &tag; }
ReturnPointerRangeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReturnPointerRangeChecker>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
ReturnUndefChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReturnUndefChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
ReturnValueChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ReturnValueChecker>()
Line
Count
Source
624
42
  static void *getTag() { static int tag; return &tag; }
RunLoopAutoreleaseLeakChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::RunLoopAutoreleaseLeakChecker>()
Line
Count
Source
624
53
  static void *getTag() { static int tag; return &tag; }
SimpleStreamChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SimpleStreamChecker>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
SmartPtrChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SmartPtrChecker>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
SmartPtrModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::SmartPtrModeling>()
Line
Count
Source
624
77
  static void *getTag() { static int tag; return &tag; }
StackAddrEscapeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StackAddrEscapeChecker>()
Line
Count
Source
624
2.63k
  static void *getTag() { static int tag; return &tag; }
StdLibraryFunctionsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StdLibraryFunctionsChecker>()
Line
Count
Source
624
123
  static void *getTag() { static int tag; return &tag; }
STLAlgorithmModeling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::STLAlgorithmModeling>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
StreamChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StreamChecker>()
Line
Count
Source
624
18
  static void *getTag() { static int tag; return &tag; }
StringChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::StringChecker>()
Line
Count
Source
624
66
  static void *getTag() { static int tag; return &tag; }
TaintTesterChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TaintTesterChecker>()
Line
Count
Source
624
8
  static void *getTag() { static int tag; return &tag; }
TestAfterDivZeroChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TestAfterDivZeroChecker>()
Line
Count
Source
624
76
  static void *getTag() { static int tag; return &tag; }
TraversalChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TraversalDumper>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: TraversalChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::CallDumper>()
TrustNonnullChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TrustNonnullChecker>()
Line
Count
Source
624
41
  static void *getTag() { static int tag; return &tag; }
TrustReturnsNonnullChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::TrustReturnsNonnullChecker>()
Line
Count
Source
624
42
  static void *getTag() { static int tag; return &tag; }
UndefBranchChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefBranchChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
UndefCapturedBlockVarChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefCapturedBlockVarChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
UndefResultChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefResultChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
UndefinedArraySubscriptChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefinedArraySubscriptChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
UndefinedAssignmentChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefinedAssignmentChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
UndefinedNewArraySizeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UndefinedNewArraySizeChecker>()
Line
Count
Source
624
775
  static void *getTag() { static int tag; return &tag; }
UninitializedObjectChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UninitializedObjectChecker>()
Line
Count
Source
624
14
  static void *getTag() { static int tag; return &tag; }
UnixAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UnixAPIMisuseChecker>()
Line
Count
Source
624
71
  static void *getTag() { static int tag; return &tag; }
UnixAPIChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UnixAPIPortabilityChecker>()
Line
Count
Source
624
4
  static void *getTag() { static int tag; return &tag; }
UnreachableCodeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UnreachableCodeChecker>()
Line
Count
Source
624
10
  static void *getTag() { static int tag; return &tag; }
VforkChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VforkChecker>()
Line
Count
Source
624
68
  static void *getTag() { static int tag; return &tag; }
VLASizeChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VLASizeChecker>()
Line
Count
Source
624
1.28k
  static void *getTag() { static int tag; return &tag; }
ValistChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::ValistChecker>()
Line
Count
Source
624
20
  static void *getTag() { static int tag; return &tag; }
VirtualCallChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::VirtualCallChecker>()
Line
Count
Source
624
149
  static void *getTag() { static int tag; return &tag; }
NoUncountedMembersChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::NoUncountedMemberChecker>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
RefCntblBaseVirtualDtorChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::RefCntblBaseVirtualDtorChecker>()
Line
Count
Source
624
3
  static void *getTag() { static int tag; return &tag; }
UncountedCallArgsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UncountedCallArgsChecker>()
Line
Count
Source
624
2
  static void *getTag() { static int tag; return &tag; }
UncountedLambdaCapturesChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UncountedLambdaCapturesChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
UncountedLocalVarsChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::UncountedLocalVarsChecker>()
Line
Count
Source
624
1
  static void *getTag() { static int tag; return &tag; }
Unexecuted instantiation: MainCallChecker.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MainCallChecker>()
Unexecuted instantiation: CheckerDependencyHandling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::Dependency>()
Unexecuted instantiation: CheckerDependencyHandling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::DependendentChecker>()
Unexecuted instantiation: CheckerOptionHandling.cpp:void* clang::ento::CheckerManager::getTag<(anonymous namespace)::MyChecker>()
625
626
  llvm::DenseMap<CheckerTag, CheckerRef> CheckerTags;
627
628
  std::vector<CheckerDtor> CheckerDtors;
629
630
  struct DeclCheckerInfo {
631
    CheckDeclFunc CheckFn;
632
    HandlesDeclFunc IsForDeclFn;
633
  };
634
  std::vector<DeclCheckerInfo> DeclCheckers;
635
636
  std::vector<CheckDeclFunc> BodyCheckers;
637
638
  using CachedDeclCheckers = SmallVector<CheckDeclFunc, 4>;
639
  using CachedDeclCheckersMapTy = llvm::DenseMap<unsigned, CachedDeclCheckers>;
640
  CachedDeclCheckersMapTy CachedDeclCheckersMap;
641
642
  struct StmtCheckerInfo {
643
    CheckStmtFunc CheckFn;
644
    HandlesStmtFunc IsForStmtFn;
645
    bool IsPreVisit;
646
  };
647
  std::vector<StmtCheckerInfo> StmtCheckers;
648
649
  using CachedStmtCheckers = SmallVector<CheckStmtFunc, 4>;
650
  using CachedStmtCheckersMapTy = llvm::DenseMap<unsigned, CachedStmtCheckers>;
651
  CachedStmtCheckersMapTy CachedStmtCheckersMap;
652
653
  const CachedStmtCheckers &getCachedStmtCheckersFor(const Stmt *S,
654
                                                     bool isPreVisit);
655
656
  /// Returns the checkers that have registered for callbacks of the
657
  /// given \p Kind.
658
  const std::vector<CheckObjCMessageFunc> &
659
  getObjCMessageCheckers(ObjCMessageVisitKind Kind) const;
660
661
  std::vector<CheckObjCMessageFunc> PreObjCMessageCheckers;
662
  std::vector<CheckObjCMessageFunc> PostObjCMessageCheckers;
663
  std::vector<CheckObjCMessageFunc> ObjCMessageNilCheckers;
664
665
  std::vector<CheckCallFunc> PreCallCheckers;
666
  std::vector<CheckCallFunc> PostCallCheckers;
667
668
  std::vector<CheckLocationFunc> LocationCheckers;
669
670
  std::vector<CheckBindFunc> BindCheckers;
671
672
  std::vector<CheckEndAnalysisFunc> EndAnalysisCheckers;
673
674
  std::vector<CheckBeginFunctionFunc> BeginFunctionCheckers;
675
  std::vector<CheckEndFunctionFunc> EndFunctionCheckers;
676
677
  std::vector<CheckBranchConditionFunc> BranchConditionCheckers;
678
679
  std::vector<CheckNewAllocatorFunc> NewAllocatorCheckers;
680
681
  std::vector<CheckLiveSymbolsFunc> LiveSymbolsCheckers;
682
683
  std::vector<CheckDeadSymbolsFunc> DeadSymbolsCheckers;
684
685
  std::vector<CheckRegionChangesFunc> RegionChangesCheckers;
686
687
  std::vector<CheckPointerEscapeFunc> PointerEscapeCheckers;
688
689
  std::vector<EvalAssumeFunc> EvalAssumeCheckers;
690
691
  std::vector<EvalCallFunc> EvalCallCheckers;
692
693
  std::vector<CheckEndOfTranslationUnit> EndOfTranslationUnitCheckers;
694
695
  struct EventInfo {
696
    SmallVector<CheckEventFunc, 4> Checkers;
697
    bool HasDispatcher = false;
698
699
1.28k
    EventInfo() = default;
700
  };
701
702
  using EventsTy = llvm::DenseMap<EventTag, EventInfo>;
703
  EventsTy Events;
704
};
705
706
} // namespace ento
707
708
} // namespace clang
709
710
#endif // LLVM_CLANG_STATICANALYZER_CORE_CHECKERMANAGER_H