Skip to content

Commit 2a8b2d6

Browse files
committed
make addons use cache
1 parent 7dac513 commit 2a8b2d6

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
@@ -1677,7 +1677,7 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
16771677
}
16781678
}
16791679

1680-
void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const std::string& ctuInfo)
1680+
void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails>& /*files*/, const std::list<FileSettings>& /*fileSettings*/, const std::string& ctuInfo)
16811681
{
16821682
if (mSettings.addons.empty())
16831683
return;
@@ -1694,13 +1694,19 @@ void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails> &files
16941694
}
16951695

16961696
std::vector<std::string> ctuInfoFiles;
1697-
for (const auto &f: files) {
1698-
const std::string &dumpFileName = getDumpFileName(mSettings, f);
1699-
ctuInfoFiles.push_back(getCtuInfoFileName(dumpFileName));
1700-
}
1701-
1702-
for (const auto &fs: fileSettings) {
1703-
const std::string &dumpFileName = getDumpFileName(mSettings, fs.file);
1697+
std::set<std::pair<std::string, std::size_t>> seen;
1698+
std::ifstream filesTxt(mSettings.buildDir + "/files.txt");
1699+
std::string line;
1700+
while (std::getline(filesTxt, line)) {
1701+
AnalyzerInformation::Info info;
1702+
if (!info.parse(line) || info.sourceFile.empty())
1703+
continue;
1704+
if (!seen.emplace(info.sourceFile, info.fsFileId).second)
1705+
continue;
1706+
std::string dumpFileName = AnalyzerInformation::getAnalyzerInfoFile(mSettings.buildDir, info.sourceFile, "", info.fsFileId);
1707+
if (info.fsFileId > 0)
1708+
dumpFileName += '.' + std::to_string(info.fsFileId);
1709+
dumpFileName += ".dump";
17041710
ctuInfoFiles.push_back(getCtuInfoFileName(dumpFileName));
17051711
}
17061712

0 commit comments

Comments
 (0)