Skip to content

Commit 2545e8d

Browse files
committed
made TemplateSimplifier::mErrorLogger and Tokenizer::mErrorLogger references
1 parent 628b894 commit 2545e8d

26 files changed

Lines changed: 76 additions & 82 deletions

lib/cppcheck.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ unsigned int CppCheck::checkClang(const std::string &path)
506506
}
507507

508508
try {
509-
Tokenizer tokenizer(mSettings, this);
509+
Tokenizer tokenizer(mSettings, *this);
510510
tokenizer.list.appendFileIfNew(path);
511511
std::istringstream ast(output2);
512512
clangimport::parseClangAstDump(tokenizer, ast);
@@ -657,7 +657,7 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
657657
if (mSettings.library.markupFile(filename)) {
658658
if (mUnusedFunctionsCheck && mSettings.useSingleJob() && mSettings.buildDir.empty()) {
659659
// this is not a real source file - we just want to tokenize it. treat it as C anyways as the language needs to be determined.
660-
Tokenizer tokenizer(mSettings, this);
660+
Tokenizer tokenizer(mSettings, *this);
661661
tokenizer.list.setLang(Standards::Language::C);
662662
if (fileStream) {
663663
tokenizer.list.createTokens(*fileStream, filename);
@@ -886,7 +886,7 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
886886
continue;
887887
}
888888

889-
Tokenizer tokenizer(mSettings, this);
889+
Tokenizer tokenizer(mSettings, *this);
890890
if (mSettings.showtime != SHOWTIME_MODES::SHOWTIME_NONE)
891891
tokenizer.setTimerResults(&s_timerResults);
892892
tokenizer.setDirectives(directives); // TODO: how to avoid repeated copies?

lib/templatesimplifier.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,14 +1170,14 @@ void TemplateSimplifier::useDefaultArgumentValues(TokenAndName &declaration)
11701170
while (it != eq.cend()) {
11711171
// check for end
11721172
if (!it->end) {
1173-
if (mSettings.debugwarnings && mErrorLogger && mSettings.severity.isEnabled(Severity::debug)) {
1173+
if (mSettings.debugwarnings && mSettings.severity.isEnabled(Severity::debug)) {
11741174
const std::list<const Token*> locationList(1, it->eq);
11751175
const ErrorMessage errmsg(locationList, &mTokenizer.list,
11761176
Severity::debug,
11771177
"noparamend",
11781178
"TemplateSimplifier couldn't find end of template parameter.",
11791179
Certainty::normal);
1180-
mErrorLogger->reportErr(errmsg);
1180+
mErrorLogger.reportErr(errmsg);
11811181
}
11821182
break;
11831183
}
@@ -3078,7 +3078,7 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
30783078
numberOfTemplateInstantiations = mTemplateInstantiations.size();
30793079
++recursiveCount;
30803080
if (recursiveCount > mSettings.maxTemplateRecursion) {
3081-
if (mErrorLogger && mSettings.severity.isEnabled(Severity::information)) {
3081+
if (mSettings.severity.isEnabled(Severity::information)) {
30823082
std::list<std::string> typeStringsUsedInTemplateInstantiation;
30833083
const std::string typeForNewName = templateDeclaration.name() + "<" + getNewName(instantiation.token(), typeStringsUsedInTemplateInstantiation) + ">";
30843084

@@ -3091,7 +3091,7 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
30913091
+ std::to_string(mSettings.maxTemplateRecursion)
30923092
+ ") reached for template '"+typeForNewName+"'. You might want to limit Cppcheck recursion.",
30933093
Certainty::normal);
3094-
mErrorLogger->reportErr(errmsg);
3094+
mErrorLogger.reportErr(errmsg);
30953095
}
30963096

30973097
// bail out..
@@ -3159,8 +3159,8 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
31593159
continue;
31603160

31613161
Token * const tok2 = instantiation.token();
3162-
if (mErrorLogger && !mTokenList.getFiles().empty())
3163-
mErrorLogger->reportProgress(mTokenList.getFiles()[0], "TemplateSimplifier::simplifyTemplateInstantiations()", tok2->progressValue());
3162+
if (!mTokenList.getFiles().empty())
3163+
mErrorLogger.reportProgress(mTokenList.getFiles()[0], "TemplateSimplifier::simplifyTemplateInstantiations()", tok2->progressValue());
31643164

31653165
if (maxtime > 0 && std::time(nullptr) > maxtime) {
31663166
if (mSettings.debugwarnings) {
@@ -3171,7 +3171,7 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
31713171
"Template instantiation maximum time exceeded",
31723172
"templateMaxTime",
31733173
Certainty::normal);
3174-
mErrorLogger->reportErr(errmsg);
3174+
mErrorLogger.reportErr(errmsg);
31753175
}
31763176
return false;
31773177
}
@@ -3201,10 +3201,10 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
32013201

32023202
if ((typeForNewName.empty() && !templateDeclaration.isVariadic()) ||
32033203
(!typeParametersInDeclaration.empty() && !instantiateMatch(tok2, typeParametersInDeclaration.size(), templateDeclaration.isVariadic(), nullptr))) {
3204-
if (printDebug && mErrorLogger) {
3204+
if (printDebug) {
32053205
std::list<const Token *> callstack(1, tok2);
3206-
mErrorLogger->reportErr(ErrorMessage(callstack, &mTokenList, Severity::debug, "templateInstantiation",
3207-
"Failed to instantiate template \"" + instantiation.name() + "\". The checking continues anyway.", Certainty::normal));
3206+
mErrorLogger.reportErr(ErrorMessage(callstack, &mTokenList, Severity::debug, "templateInstantiation",
3207+
"Failed to instantiate template \"" + instantiation.name() + "\". The checking continues anyway.", Certainty::normal));
32083208
}
32093209
if (typeForNewName.empty())
32103210
continue;
@@ -3229,8 +3229,8 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
32293229
// TODO: remove the specialized check and handle all uninstantiated templates someday.
32303230
if (!instantiated && specialized) {
32313231
auto * tok2 = const_cast<Token *>(templateDeclaration.nameToken());
3232-
if (mErrorLogger && !mTokenList.getFiles().empty())
3233-
mErrorLogger->reportProgress(mTokenList.getFiles()[0], "TemplateSimplifier::simplifyTemplateInstantiations()", tok2->progressValue());
3232+
if (!mTokenList.getFiles().empty())
3233+
mErrorLogger.reportProgress(mTokenList.getFiles()[0], "TemplateSimplifier::simplifyTemplateInstantiations()", tok2->progressValue());
32343234

32353235
if (maxtime > 0 && std::time(nullptr) > maxtime) {
32363236
if (mSettings.debugwarnings) {
@@ -3241,7 +3241,7 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
32413241
"Template instantiation maximum time exceeded",
32423242
"templateMaxTime",
32433243
Certainty::normal);
3244-
mErrorLogger->reportErr(errmsg);
3244+
mErrorLogger.reportErr(errmsg);
32453245
}
32463246
return false;
32473247
}
@@ -3278,10 +3278,10 @@ bool TemplateSimplifier::simplifyTemplateInstantiations(
32783278
std::string typeForNewName = getNewName(tok2, typeStringsUsedInTemplateInstantiation);
32793279

32803280
if (typeForNewName.empty()) {
3281-
if (printDebug && mErrorLogger) {
3281+
if (printDebug) {
32823282
std::list<const Token *> callstack(1, tok2);
3283-
mErrorLogger->reportErr(ErrorMessage(callstack, &mTokenList, Severity::debug, "templateInstantiation",
3284-
"Failed to instantiate template \"" + templateDeclaration.name() + "\". The checking continues anyway.", Certainty::normal));
3283+
mErrorLogger.reportErr(ErrorMessage(callstack, &mTokenList, Severity::debug, "templateInstantiation",
3284+
"Failed to instantiate template \"" + templateDeclaration.name() + "\". The checking continues anyway.", Certainty::normal));
32853285
}
32863286
return false;
32873287
}
@@ -3972,14 +3972,14 @@ void TemplateSimplifier::simplifyTemplates(const std::time_t maxtime)
39723972
}
39733973

39743974
if (passCount == passCountMax) {
3975-
if (mSettings.debugwarnings && mErrorLogger) {
3975+
if (mSettings.debugwarnings) {
39763976
const std::list<const Token*> locationList(1, mTokenList.front());
39773977
const ErrorMessage errmsg(locationList, &mTokenizer.list,
39783978
Severity::debug,
39793979
"debug",
39803980
"TemplateSimplifier: pass count limit hit before simplifications were finished.",
39813981
Certainty::normal);
3982-
mErrorLogger->reportErr(errmsg);
3982+
mErrorLogger.reportErr(errmsg);
39833983
}
39843984
}
39853985

lib/templatesimplifier.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ class CPPCHECKLIB TemplateSimplifier {
494494
Tokenizer &mTokenizer;
495495
TokenList &mTokenList;
496496
const Settings &mSettings;
497-
ErrorLogger *mErrorLogger;
497+
ErrorLogger &mErrorLogger;
498498
bool mChanged{};
499499

500500
std::list<TokenAndName> mTemplateDeclarations;

lib/tokenize.cpp

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static bool isClassStructUnionEnumStart(const Token * tok)
152152

153153
//---------------------------------------------------------------------------
154154

155-
Tokenizer::Tokenizer(const Settings &settings, ErrorLogger *errorLogger) :
155+
Tokenizer::Tokenizer(const Settings &settings, ErrorLogger &errorLogger) :
156156
list(&settings),
157157
mSettings(settings),
158158
mErrorLogger(errorLogger),
@@ -1141,22 +1141,22 @@ void Tokenizer::simplifyTypedefCpp()
11411141
const std::time_t maxTime = mSettings.typedefMaxTime > 0 ? std::time(nullptr) + mSettings.typedefMaxTime: 0;
11421142

11431143
for (Token *tok = list.front(); tok; tok = tok->next()) {
1144-
if (mErrorLogger && !list.getFiles().empty())
1145-
mErrorLogger->reportProgress(list.getFiles()[0], "Tokenize (typedef)", tok->progressValue());
1144+
if (!list.getFiles().empty())
1145+
mErrorLogger.reportProgress(list.getFiles()[0], "Tokenize (typedef)", tok->progressValue());
11461146

11471147
if (Settings::terminated())
11481148
return;
11491149

11501150
if (maxTime > 0 && std::time(nullptr) > maxTime) {
1151-
if (mErrorLogger && mSettings.debugwarnings) {
1151+
if (mSettings.debugwarnings) {
11521152
ErrorMessage::FileLocation loc(list.getFiles()[0], 0, 0);
11531153
ErrorMessage errmsg({std::move(loc)},
11541154
emptyString,
11551155
Severity::debug,
11561156
"Typedef simplification instantiation maximum time exceeded",
11571157
"typedefMaxTime",
11581158
Certainty::normal);
1159-
mErrorLogger->reportErr(errmsg);
1159+
mErrorLogger.reportErr(errmsg);
11601160
}
11611161
return;
11621162
}
@@ -2876,8 +2876,8 @@ bool Tokenizer::simplifyUsing()
28762876
std::list<Using> usingList;
28772877

28782878
for (Token *tok = list.front(); tok; tok = tok->next()) {
2879-
if (mErrorLogger && !list.getFiles().empty())
2880-
mErrorLogger->reportProgress(list.getFiles()[0], "Tokenize (using)", tok->progressValue());
2879+
if (!list.getFiles().empty())
2880+
mErrorLogger.reportProgress(list.getFiles()[0], "Tokenize (using)", tok->progressValue());
28812881

28822882
if (Settings::terminated())
28832883
return substitute;
@@ -3342,7 +3342,7 @@ bool Tokenizer::simplifyUsing()
33423342

33433343
void Tokenizer::simplifyUsingError(const Token* usingStart, const Token* usingEnd)
33443344
{
3345-
if (mSettings.debugwarnings && mErrorLogger) {
3345+
if (mSettings.debugwarnings) {
33463346
std::string str;
33473347
for (const Token *tok = usingStart; tok && tok != usingEnd; tok = tok->next()) {
33483348
if (!str.empty())
@@ -3351,8 +3351,8 @@ void Tokenizer::simplifyUsingError(const Token* usingStart, const Token* usingEn
33513351
}
33523352
str += " ;";
33533353
std::list<const Token *> callstack(1, usingStart);
3354-
mErrorLogger->reportErr(ErrorMessage(callstack, &list, Severity::debug, "simplifyUsing",
3355-
"Failed to parse \'" + str + "\'. The checking continues anyway.", Certainty::normal));
3354+
mErrorLogger.reportErr(ErrorMessage(callstack, &list, Severity::debug, "simplifyUsing",
3355+
"Failed to parse \'" + str + "\'. The checking continues anyway.", Certainty::normal));
33563356
}
33573357
}
33583358

@@ -3405,12 +3405,11 @@ bool Tokenizer::simplifyTokens1(const std::string &configuration)
34053405
const bool doValueFlow = !disableValueflowEnv || (std::strcmp(disableValueflowEnv, "1") != 0);
34063406

34073407
if (doValueFlow) {
3408-
assert(mErrorLogger);
34093408
if (mTimerResults) {
34103409
Timer t("Tokenizer::simplifyTokens1::ValueFlow", mSettings.showtime, mTimerResults);
3411-
ValueFlow::setValues(list, *mSymbolDatabase, *mErrorLogger, mSettings, mTimerResults);
3410+
ValueFlow::setValues(list, *mSymbolDatabase, mErrorLogger, mSettings, mTimerResults);
34123411
} else {
3413-
ValueFlow::setValues(list, *mSymbolDatabase, *mErrorLogger, mSettings, mTimerResults);
3412+
ValueFlow::setValues(list, *mSymbolDatabase, mErrorLogger, mSettings, mTimerResults);
34143413
}
34153414

34163415
arraySizeAfterValueFlow();
@@ -9987,10 +9986,8 @@ void Tokenizer::simplifyBorland()
99879986

99889987
void Tokenizer::createSymbolDatabase()
99899988
{
9990-
if (!mSymbolDatabase) {
9991-
assert(mErrorLogger != nullptr);
9992-
mSymbolDatabase = new SymbolDatabase(*this, mSettings, *mErrorLogger);
9993-
}
9989+
if (!mSymbolDatabase)
9990+
mSymbolDatabase = new SymbolDatabase(*this, mSettings, mErrorLogger);
99949991
mSymbolDatabase->validate();
99959992
}
99969993

@@ -10430,10 +10427,7 @@ void Tokenizer::reportError(const Token* tok, const Severity severity, const std
1043010427
void Tokenizer::reportError(const std::list<const Token*>& callstack, Severity severity, const std::string& id, const std::string& msg, bool inconclusive) const
1043110428
{
1043210429
const ErrorMessage errmsg(callstack, &list, severity, id, msg, inconclusive ? Certainty::inconclusive : Certainty::normal);
10433-
if (mErrorLogger)
10434-
mErrorLogger->reportErr(errmsg);
10435-
else
10436-
Check::writeToErrorList(errmsg);
10430+
mErrorLogger.reportErr(errmsg);
1043710431
}
1043810432

1043910433
void Tokenizer::setPodTypes()

lib/tokenize.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class CPPCHECKLIB Tokenizer {
5353
friend class TestTokenizer;
5454

5555
public:
56-
explicit Tokenizer(const Settings & settings, ErrorLogger *errorLogger);
56+
explicit Tokenizer(const Settings & settings, ErrorLogger &errorLogger);
5757
~Tokenizer();
5858

5959
void setTimerResults(TimerResults *tr) {
@@ -645,7 +645,7 @@ class CPPCHECKLIB Tokenizer {
645645
const Settings & mSettings;
646646

647647
/** errorlogger */
648-
ErrorLogger* const mErrorLogger;
648+
ErrorLogger& mErrorLogger;
649649

650650
/** Symbol database that all checks etc can use */
651651
SymbolDatabase* mSymbolDatabase{};

test/helpers.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ namespace simplecpp {
4242
class SimpleTokenizer : public Tokenizer {
4343
public:
4444
SimpleTokenizer(ErrorLogger& errorlogger, const char code[], bool cpp = true)
45-
: Tokenizer{s_settings, &errorlogger}
45+
: Tokenizer{s_settings, errorlogger}
4646
{
4747
if (!tokenize(code, cpp))
4848
throw std::runtime_error("creating tokens failed");
4949
}
5050

5151
SimpleTokenizer(const Settings& settings, ErrorLogger& errorlogger)
52-
: Tokenizer{settings, &errorlogger}
52+
: Tokenizer{settings, errorlogger}
5353
{}
5454

5555
/*

test/testbufferoverrun.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class TestBufferOverrun : public TestFixture {
6666
.c(Standards::CLatest).cpp(Standards::CPPLatest).certainty(Certainty::inconclusive).build();
6767

6868
std::vector<std::string> files(1, filename);
69-
Tokenizer tokenizer(settings, this);
69+
Tokenizer tokenizer(settings, *this);
7070
PreprocessorHelper::preprocess(code, files, tokenizer, *this);
7171

7272
// Tokenizer..

test/testclangimport.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class TestClangImport : public TestFixture {
140140

141141
std::string parse(const char clang[]) {
142142
const Settings settings = settingsBuilder().clang().build();
143-
Tokenizer tokenizer(settings, this);
143+
Tokenizer tokenizer(settings, *this);
144144
std::istringstream istr(clang);
145145
clangimport::parseClangAstDump(tokenizer, istr);
146146
if (!tokenizer.tokens()) {
@@ -1054,7 +1054,7 @@ class TestClangImport : public TestFixture {
10541054

10551055
#define GET_SYMBOL_DB(AST) \
10561056
const Settings settings = settingsBuilder().clang().platform(Platform::Type::Unix64).build(); \
1057-
Tokenizer tokenizer(settings, this); \
1057+
Tokenizer tokenizer(settings, *this); \
10581058
{ \
10591059
std::istringstream istr(AST); \
10601060
clangimport::parseClangAstDump(tokenizer, istr); \

test/testclass.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8504,7 +8504,7 @@ class TestClass : public TestFixture {
85048504
const Settings settings = settingsBuilder().severity(Severity::style).build();
85058505

85068506
std::vector<std::string> files(1, "test.cpp");
8507-
Tokenizer tokenizer(settings, this);
8507+
Tokenizer tokenizer(settings, *this);
85088508
PreprocessorHelper::preprocess(code, files, tokenizer, *this);
85098509

85108510
ASSERT_LOC(tokenizer.simplifyTokens1(""), file, line);
@@ -8847,7 +8847,7 @@ class TestClass : public TestFixture {
88478847
// getFileInfo
88488848
std::list<Check::FileInfo*> fileInfo;
88498849
for (const std::string& c: code) {
8850-
Tokenizer tokenizer(settingsDefault, this);
8850+
Tokenizer tokenizer(settingsDefault, *this);
88518851
std::istringstream istr(c);
88528852
const std::string filename = std::to_string(fileInfo.size()) + ".cpp";
88538853
ASSERT(tokenizer.list.createTokens(istr, filename));
@@ -8911,7 +8911,7 @@ class TestClass : public TestFixture {
89118911
const Settings settings = settingsBuilder().severity(Severity::performance).library("std.cfg").build();
89128912

89138913
std::vector<std::string> files(1, "test.cpp");
8914-
Tokenizer tokenizer(settings, this);
8914+
Tokenizer tokenizer(settings, *this);
89158915
PreprocessorHelper::preprocess(code, files, tokenizer, *this);
89168916

89178917
ASSERT_LOC(tokenizer.simplifyTokens1(""), file, line);

test/testcondition.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class TestCondition : public TestFixture {
127127
#define check(...) check_(__FILE__, __LINE__, __VA_ARGS__)
128128
void check_(const char* file, int line, const char code[], const Settings &settings, const char* filename = "test.cpp") {
129129
std::vector<std::string> files(1, filename);
130-
Tokenizer tokenizer(settings, this);
130+
Tokenizer tokenizer(settings, *this);
131131
PreprocessorHelper::preprocess(code, files, tokenizer, *this);
132132

133133
// Tokenizer..

0 commit comments

Comments
 (0)