@@ -666,40 +666,26 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
666666 simplecpp::TokenList tokens1 (fileStream, files, filename, &outputList);
667667
668668 // If there is a syntax error, report it and stop
669- for (const simplecpp::Output &output : outputList) {
670- bool err;
671- switch (output.type ) {
672- case simplecpp::Output::ERROR:
673- case simplecpp::Output::INCLUDE_NESTED_TOO_DEEPLY:
674- case simplecpp::Output::SYNTAX_ERROR:
675- case simplecpp::Output::UNHANDLED_CHAR_ERROR:
676- case simplecpp::Output::EXPLICIT_INCLUDE_NOT_FOUND:
677- err = true ;
678- break ;
679- case simplecpp::Output::WARNING:
680- case simplecpp::Output::MISSING_HEADER:
681- case simplecpp::Output::PORTABILITY_BACKSLASH:
682- err = false ;
683- break ;
684- }
685-
686- if (err) {
687- std::string file = Path::fromNativeSeparators (output.location .file ());
688- if (mSettings .relativePaths )
689- file = Path::getRelativePath (file, mSettings .basePaths );
690-
691- const ErrorMessage::FileLocation loc1 (file, output.location .line , output.location .col );
692- std::list<ErrorMessage::FileLocation> callstack (1 , loc1);
693-
694- ErrorMessage errmsg (callstack,
695- " " ,
696- Severity::error,
697- output.msg ,
698- " syntaxError" ,
699- Certainty::normal);
700- reportErr (errmsg);
701- return mExitCode ;
702- }
669+ const auto output_it = std::find_if (outputList.cbegin (), outputList.cend (), [](const simplecpp::Output &output){
670+ return Preprocessor::hasErrors (output);
671+ });
672+ if (output_it != outputList.cend ()) {
673+ const simplecpp::Output &output = *output_it;
674+ std::string file = Path::fromNativeSeparators (output.location .file ());
675+ if (mSettings .relativePaths )
676+ file = Path::getRelativePath (file, mSettings .basePaths );
677+
678+ const ErrorMessage::FileLocation loc1 (file, output.location .line , output.location .col );
679+ std::list<ErrorMessage::FileLocation> callstack (1 , loc1);
680+
681+ ErrorMessage errmsg (callstack,
682+ " " ,
683+ Severity::error,
684+ output.msg ,
685+ " syntaxError" ,
686+ Certainty::normal);
687+ reportErr (errmsg);
688+ return mExitCode ;
703689 }
704690
705691 if (!preprocessor.loadFiles (tokens1, files))
@@ -797,10 +783,10 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
797783 }
798784
799785 // Run define rules on raw code
800- const auto it = std::find_if (mSettings .rules .cbegin (), mSettings .rules .cend (), [](const Settings::Rule& rule) {
786+ const auto rules_it = std::find_if (mSettings .rules .cbegin (), mSettings .rules .cend (), [](const Settings::Rule& rule) {
801787 return rule.tokenlist == " define" ;
802788 });
803- if (it != mSettings .rules .cend ()) {
789+ if (rules_it != mSettings .rules .cend ()) {
804790 std::string code;
805791 const std::list<Directive> &directives = preprocessor.getDirectives ();
806792 for (const Directive &dir : directives) {
0 commit comments