Skip to content

Commit 2bc4ee9

Browse files
authored
parse files with simplecpp without providing a stream (#4955)
1 parent 8cf6a22 commit 2bc4ee9

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

lib/cppcheck.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -583,14 +583,13 @@ unsigned int CppCheck::check(const std::string &path)
583583
return mExitCode;
584584
}
585585

586-
std::ifstream fin(path);
587-
return checkFile(Path::simplifyPath(path), emptyString, fin);
586+
return checkFile(Path::simplifyPath(path), emptyString);
588587
}
589588

590589
unsigned int CppCheck::check(const std::string &path, const std::string &content)
591590
{
592591
std::istringstream iss(content);
593-
return checkFile(Path::simplifyPath(path), emptyString, iss);
592+
return checkFile(Path::simplifyPath(path), emptyString, &iss);
594593
}
595594

596595
unsigned int CppCheck::check(const ImportProject::FileSettings &fs)
@@ -615,13 +614,20 @@ unsigned int CppCheck::check(const ImportProject::FileSettings &fs)
615614
temp.mSettings.includePaths.insert(temp.mSettings.includePaths.end(), fs.systemIncludePaths.cbegin(), fs.systemIncludePaths.cend());
616615
return temp.check(Path::simplifyPath(fs.filename));
617616
}
618-
std::ifstream fin(fs.filename);
619-
const unsigned int returnValue = temp.checkFile(Path::simplifyPath(fs.filename), fs.cfg, fin);
617+
const unsigned int returnValue = temp.checkFile(Path::simplifyPath(fs.filename), fs.cfg);
620618
mSettings.nomsg.addSuppressions(temp.mSettings.nomsg.getSuppressions());
621619
return returnValue;
622620
}
623621

624-
unsigned int CppCheck::checkFile(const std::string& filename, const std::string &cfgname, std::istream& fileStream)
622+
static simplecpp::TokenList createTokenList(const std::string& filename, std::vector<std::string>& files, simplecpp::OutputList* outputList, std::istream* fileStream)
623+
{
624+
if (fileStream)
625+
return {*fileStream, files, filename, outputList};
626+
627+
return {filename, files, outputList};
628+
}
629+
630+
unsigned int CppCheck::checkFile(const std::string& filename, const std::string &cfgname, std::istream* fileStream)
625631
{
626632
mExitCode = 0;
627633

@@ -663,7 +669,7 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
663669

664670
simplecpp::OutputList outputList;
665671
std::vector<std::string> files;
666-
simplecpp::TokenList tokens1(fileStream, files, filename, &outputList);
672+
simplecpp::TokenList tokens1 = createTokenList(filename, files, &outputList, fileStream);
667673

668674
// If there is a syntax error, report it and stop
669675
const auto output_it = std::find_if(outputList.cbegin(), outputList.cend(), [](const simplecpp::Output &output){

lib/cppcheck.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class CPPCHECKLIB CppCheck : ErrorLogger {
155155
* @param fileStream stream the file content can be read from
156156
* @return number of errors found
157157
*/
158-
unsigned int checkFile(const std::string& filename, const std::string &cfgname, std::istream& fileStream);
158+
unsigned int checkFile(const std::string& filename, const std::string &cfgname, std::istream* fileStream = nullptr);
159159

160160
/**
161161
* @brief Check raw tokens

0 commit comments

Comments
 (0)