@@ -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