Coverage Report

Created: 2020-02-15 09:57

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