Coverage Report

Created: 2020-09-19 12:23

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