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