Skip to content

Commit c11bcc4

Browse files
committed
make addons use cache
1 parent 4f1d616 commit c11bcc4

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

lib/cppcheck.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,7 +1654,7 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
16541654
}
16551655
}
16561656

1657-
void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const std::string& ctuInfo)
1657+
void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails>& /*files*/, const std::list<FileSettings>& /*fileSettings*/, const std::string& ctuInfo)
16581658
{
16591659
if (mSettings.addons.empty())
16601660
return;
@@ -1671,13 +1671,19 @@ void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails> &files
16711671
}
16721672

16731673
std::vector<std::string> ctuInfoFiles;
1674-
for (const auto &f: files) {
1675-
const std::string &dumpFileName = getDumpFileName(mSettings, f);
1676-
ctuInfoFiles.push_back(getCtuInfoFileName(dumpFileName));
1677-
}
1678-
1679-
for (const auto &fs: fileSettings) {
1680-
const std::string &dumpFileName = getDumpFileName(mSettings, fs.file);
1674+
std::set<std::pair<std::string, std::size_t>> seen;
1675+
std::ifstream filesTxt(mSettings.buildDir + "/files.txt");
1676+
std::string line;
1677+
while (std::getline(filesTxt, line)) {
1678+
AnalyzerInformation::Info info;
1679+
if (!info.parse(line) || info.sourceFile.empty())
1680+
continue;
1681+
if (!seen.emplace(info.sourceFile, info.fsFileId).second)
1682+
continue;
1683+
std::string dumpFileName = AnalyzerInformation::getAnalyzerInfoFile(mSettings.buildDir, info.sourceFile, "", info.fsFileId);
1684+
if (info.fsFileId > 0)
1685+
dumpFileName += '.' + std::to_string(info.fsFileId);
1686+
dumpFileName += ".dump";
16811687
ctuInfoFiles.push_back(getCtuInfoFileName(dumpFileName));
16821688
}
16831689

0 commit comments

Comments
 (0)