Skip to content

Commit bda3dd0

Browse files
committed
[analyzer][NFC] Change LangOptions to CheckerManager in the shouldRegister* functions
Some checkers may not only depend on language options but also analyzer options. To make this possible this patch changes the parameter of the shouldRegister* function to CheckerManager to be able to query the analyzer options when deciding whether the checker should be registered. Differential Revision: https://reviews.llvm.org/D75271
1 parent 08d5426 commit bda3dd0

File tree

116 files changed

+175
-162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+175
-162
lines changed

clang/include/clang/StaticAnalyzer/Checkers/BuiltinCheckerRegistration.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class CheckerRegistry;
2828
#define GET_CHECKERS
2929
#define CHECKER(FULLNAME, CLASS, HELPTEXT, DOC_URI, IS_HIDDEN) \
3030
void register##CLASS(CheckerManager &mgr); \
31-
bool shouldRegister##CLASS(const LangOptions &LO);
31+
bool shouldRegister##CLASS(const CheckerManager &mgr);
3232
#include "clang/StaticAnalyzer/Checkers/Checkers.inc"
3333
#undef CHECKER
3434
#undef GET_CHECKERS

clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistry.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ namespace clang {
6969

7070
class AnalyzerOptions;
7171
class DiagnosticsEngine;
72-
class LangOptions;
7372

7473
namespace ento {
7574

@@ -96,7 +95,7 @@ class CheckerRegistry {
9695
/// Initialization functions perform any necessary setup for a checker.
9796
/// They should include a call to CheckerManager::registerChecker.
9897
using InitializationFunction = void (*)(CheckerManager &);
99-
using ShouldRegisterFunction = bool (*)(const LangOptions &);
98+
using ShouldRegisterFunction = bool (*)(const CheckerManager &);
10099

101100
/// Specifies a command line option. It may either belong to a checker or a
102101
/// package.
@@ -168,12 +167,12 @@ class CheckerRegistry {
168167

169168
ConstCheckerInfoList Dependencies;
170169

171-
bool isEnabled(const LangOptions &LO) const {
172-
return State == StateFromCmdLine::State_Enabled && ShouldRegister(LO);
170+
bool isEnabled(const CheckerManager &mgr) const {
171+
return State == StateFromCmdLine::State_Enabled && ShouldRegister(mgr);
173172
}
174173

175-
bool isDisabled(const LangOptions &LO) const {
176-
return State == StateFromCmdLine::State_Disabled || !ShouldRegister(LO);
174+
bool isDisabled(const CheckerManager &mgr) const {
175+
return State == StateFromCmdLine::State_Disabled || !ShouldRegister(mgr);
177176
}
178177

179178
// Since each checker must have a different full name, we can identify
@@ -220,7 +219,7 @@ class CheckerRegistry {
220219
mgr.template registerChecker<T>();
221220
}
222221

223-
template <typename T> static bool returnTrue(const LangOptions &) {
222+
template <typename T> static bool returnTrue(const CheckerManager &mgr) {
224223
return true;
225224
}
226225

clang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class AnalyzerOptions;
2020

2121
namespace ento {
2222

23+
class CheckerManager;
24+
2325
//===----------------------------------------------------------------------===//
2426
// AST Consumer Actions
2527
//===----------------------------------------------------------------------===//
@@ -52,7 +54,6 @@ class ParseModelFileAction : public ASTFrontendAction {
5254
};
5355

5456
} // namespace ento
55-
5657
} // end namespace clang
5758

5859
#endif

clang/lib/Analysis/plugins/CheckerOptionHandling/CheckerOptionHandling.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void registerMyChecker(CheckerManager &Mgr) {
2121
<< '\n';
2222
}
2323

24-
bool shouldRegisterMyChecker(const LangOptions &LO) { return true; }
24+
bool shouldRegisterMyChecker(const CheckerManager &mgr) { return true; }
2525

2626
} // end anonymous namespace
2727

clang/lib/StaticAnalyzer/Checkers/AnalysisOrderChecker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,6 @@ void ento::registerAnalysisOrderChecker(CheckerManager &mgr) {
186186
mgr.registerChecker<AnalysisOrderChecker>();
187187
}
188188

189-
bool ento::shouldRegisterAnalysisOrderChecker(const LangOptions &LO) {
189+
bool ento::shouldRegisterAnalysisOrderChecker(const CheckerManager &mgr) {
190190
return true;
191191
}

clang/lib/StaticAnalyzer/Checkers/AnalyzerStatsChecker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,6 @@ void ento::registerAnalyzerStatsChecker(CheckerManager &mgr) {
140140
mgr.registerChecker<AnalyzerStatsChecker>();
141141
}
142142

143-
bool ento::shouldRegisterAnalyzerStatsChecker(const LangOptions &LO) {
143+
bool ento::shouldRegisterAnalyzerStatsChecker(const CheckerManager &mgr) {
144144
return true;
145145
}

clang/lib/StaticAnalyzer/Checkers/ArrayBoundChecker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,6 @@ void ento::registerArrayBoundChecker(CheckerManager &mgr) {
9292
mgr.registerChecker<ArrayBoundChecker>();
9393
}
9494

95-
bool ento::shouldRegisterArrayBoundChecker(const LangOptions &LO) {
95+
bool ento::shouldRegisterArrayBoundChecker(const CheckerManager &mgr) {
9696
return true;
9797
}

clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,6 @@ void ento::registerArrayBoundCheckerV2(CheckerManager &mgr) {
356356
mgr.registerChecker<ArrayBoundCheckerV2>();
357357
}
358358

359-
bool ento::shouldRegisterArrayBoundCheckerV2(const LangOptions &LO) {
359+
bool ento::shouldRegisterArrayBoundCheckerV2(const CheckerManager &mgr) {
360360
return true;
361361
}

clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,54 +1243,54 @@ void ento::registerNilArgChecker(CheckerManager &mgr) {
12431243
mgr.registerChecker<NilArgChecker>();
12441244
}
12451245

1246-
bool ento::shouldRegisterNilArgChecker(const LangOptions &LO) {
1246+
bool ento::shouldRegisterNilArgChecker(const CheckerManager &mgr) {
12471247
return true;
12481248
}
12491249

12501250
void ento::registerCFNumberChecker(CheckerManager &mgr) {
12511251
mgr.registerChecker<CFNumberChecker>();
12521252
}
12531253

1254-
bool ento::shouldRegisterCFNumberChecker(const LangOptions &LO) {
1254+
bool ento::shouldRegisterCFNumberChecker(const CheckerManager &mgr) {
12551255
return true;
12561256
}
12571257

12581258
void ento::registerCFRetainReleaseChecker(CheckerManager &mgr) {
12591259
mgr.registerChecker<CFRetainReleaseChecker>();
12601260
}
12611261

1262-
bool ento::shouldRegisterCFRetainReleaseChecker(const LangOptions &LO) {
1262+
bool ento::shouldRegisterCFRetainReleaseChecker(const CheckerManager &mgr) {
12631263
return true;
12641264
}
12651265

12661266
void ento::registerClassReleaseChecker(CheckerManager &mgr) {
12671267
mgr.registerChecker<ClassReleaseChecker>();
12681268
}
12691269

1270-
bool ento::shouldRegisterClassReleaseChecker(const LangOptions &LO) {
1270+
bool ento::shouldRegisterClassReleaseChecker(const CheckerManager &mgr) {
12711271
return true;
12721272
}
12731273

12741274
void ento::registerVariadicMethodTypeChecker(CheckerManager &mgr) {
12751275
mgr.registerChecker<VariadicMethodTypeChecker>();
12761276
}
12771277

1278-
bool ento::shouldRegisterVariadicMethodTypeChecker(const LangOptions &LO) {
1278+
bool ento::shouldRegisterVariadicMethodTypeChecker(const CheckerManager &mgr) {
12791279
return true;
12801280
}
12811281

12821282
void ento::registerObjCLoopChecker(CheckerManager &mgr) {
12831283
mgr.registerChecker<ObjCLoopChecker>();
12841284
}
12851285

1286-
bool ento::shouldRegisterObjCLoopChecker(const LangOptions &LO) {
1286+
bool ento::shouldRegisterObjCLoopChecker(const CheckerManager &mgr) {
12871287
return true;
12881288
}
12891289

12901290
void ento::registerObjCNonNilReturnValueChecker(CheckerManager &mgr) {
12911291
mgr.registerChecker<ObjCNonNilReturnValueChecker>();
12921292
}
12931293

1294-
bool ento::shouldRegisterObjCNonNilReturnValueChecker(const LangOptions &LO) {
1294+
bool ento::shouldRegisterObjCNonNilReturnValueChecker(const CheckerManager &mgr) {
12951295
return true;
12961296
}

clang/lib/StaticAnalyzer/Checkers/BlockInCriticalSectionChecker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,6 @@ void ento::registerBlockInCriticalSectionChecker(CheckerManager &mgr) {
184184
mgr.registerChecker<BlockInCriticalSectionChecker>();
185185
}
186186

187-
bool ento::shouldRegisterBlockInCriticalSectionChecker(const LangOptions &LO) {
187+
bool ento::shouldRegisterBlockInCriticalSectionChecker(const CheckerManager &mgr) {
188188
return true;
189189
}

0 commit comments

Comments
 (0)