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