@@ -715,8 +715,9 @@ unsigned int CppCheck::checkClang(const FileWithDetails &file)
715
715
}
716
716
717
717
try {
718
- Tokenizer tokenizer (mSettings , mErrorLogger );
719
- tokenizer.list .appendFileIfNew (file.spath ());
718
+ TokenList tokenlist{&mSettings };
719
+ tokenlist.appendFileIfNew (file.spath ());
720
+ Tokenizer tokenizer (std::move (tokenlist), mSettings , mErrorLogger );
720
721
std::istringstream ast (output2);
721
722
clangimport::parseClangAstDump (tokenizer, ast);
722
723
ValueFlow::setValues (tokenizer.list ,
@@ -902,18 +903,17 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
902
903
903
904
if (mUnusedFunctionsCheck && (mSettings .useSingleJob () || analyzerInformation)) {
904
905
std::size_t hash = 0 ;
905
- // 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.
906
- Tokenizer tokenizer (mSettings , mErrorLogger );
906
+ TokenList tokenlist{&mSettings };
907
907
// enforce the language since markup files are special and do not adhere to the enforced language
908
- tokenizer. list .setLang (Standards::Language::C, true );
908
+ tokenlist .setLang (Standards::Language::C, true );
909
909
if (fileStream) {
910
910
std::vector<std::string> files;
911
911
simplecpp::TokenList tokens (*fileStream, files, file.spath ());
912
912
if (analyzerInformation) {
913
913
const Preprocessor preprocessor (mSettings , mErrorLogger );
914
914
hash = calculateHash (preprocessor, tokens, mSettings , mSuppressions );
915
915
}
916
- tokenizer. list .createTokens (std::move (tokens));
916
+ tokenlist .createTokens (std::move (tokens));
917
917
}
918
918
else {
919
919
std::vector<std::string> files;
@@ -922,8 +922,10 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
922
922
const Preprocessor preprocessor (mSettings , mErrorLogger );
923
923
hash = calculateHash (preprocessor, tokens, mSettings , mSuppressions );
924
924
}
925
- tokenizer. list .createTokens (std::move (tokens));
925
+ tokenlist .createTokens (std::move (tokens));
926
926
}
927
+ // 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.
928
+ Tokenizer tokenizer (std::move (tokenlist), mSettings , mErrorLogger );
927
929
mUnusedFunctionsCheck ->parseTokens (tokenizer, mSettings );
928
930
929
931
if (analyzerInformation) {
@@ -1123,19 +1125,21 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
1123
1125
continue ;
1124
1126
}
1125
1127
1126
- Tokenizer tokenizer (mSettings , mErrorLogger );
1127
- if (mSettings .showtime != SHOWTIME_MODES::SHOWTIME_NONE)
1128
- tokenizer.setTimerResults (&s_timerResults);
1129
- tokenizer.setDirectives (directives); // TODO: how to avoid repeated copies?
1128
+ TokenList tokenlist{&mSettings };
1130
1129
1131
1130
try {
1132
1131
// Create tokens, skip rest of iteration if failed
1133
1132
Timer::run (" Tokenizer::createTokens" , mSettings .showtime , &s_timerResults, [&]() {
1134
1133
simplecpp::TokenList tokensP = preprocessor.preprocess (tokens1, mCurrentConfig , files, true );
1135
- tokenizer. list .createTokens (std::move (tokensP));
1134
+ tokenlist .createTokens (std::move (tokensP));
1136
1135
});
1137
1136
hasValidConfig = true ;
1138
1137
1138
+ Tokenizer tokenizer (std::move (tokenlist), mSettings , mErrorLogger );
1139
+ if (mSettings .showtime != SHOWTIME_MODES::SHOWTIME_NONE)
1140
+ tokenizer.setTimerResults (&s_timerResults);
1141
+ tokenizer.setDirectives (directives); // TODO: how to avoid repeated copies?
1142
+
1139
1143
// locations macros
1140
1144
mLogger ->setLocationMacros (tokenizer.tokens (), files);
1141
1145
@@ -1221,7 +1225,7 @@ unsigned int CppCheck::checkFile(const FileWithDetails& file, const std::string
1221
1225
mLogger ->setAnalyzerInfo (nullptr );
1222
1226
return mLogger ->exitcode ();
1223
1227
} catch (const InternalError &e) {
1224
- ErrorMessage errmsg = ErrorMessage::fromInternalError (e, &tokenizer. list , file.spath ());
1228
+ ErrorMessage errmsg = ErrorMessage::fromInternalError (e, &tokenlist , file.spath ());
1225
1229
mErrorLogger .reportErr (errmsg);
1226
1230
}
1227
1231
}
0 commit comments