@@ -1681,7 +1681,7 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
16811681 }
16821682}
16831683
1684- void CppCheck::executeAddonsWholeProgram (const std::list<FileWithDetails> & files, const std::list<FileSettings>& fileSettings, const std::string& ctuInfo)
1684+ void CppCheck::executeAddonsWholeProgram (const std::list<FileWithDetails>& /* files*/ , const std::list<FileSettings>& /* fileSettings*/ , const std::string& ctuInfo)
16851685{
16861686 if (mSettings .addons .empty ())
16871687 return ;
@@ -1698,13 +1698,19 @@ void CppCheck::executeAddonsWholeProgram(const std::list<FileWithDetails> &files
16981698 }
16991699
17001700 std::vector<std::string> ctuInfoFiles;
1701- for (const auto &f: files) {
1702- const std::string &dumpFileName = getDumpFileName (mSettings , f);
1703- ctuInfoFiles.push_back (getCtuInfoFileName (dumpFileName));
1704- }
1705-
1706- for (const auto &fs: fileSettings) {
1707- const std::string &dumpFileName = getDumpFileName (mSettings , fs.file );
1701+ std::set<std::pair<std::string, std::size_t >> seen;
1702+ std::ifstream filesTxt (mSettings .buildDir + " /files.txt" );
1703+ std::string line;
1704+ while (std::getline (filesTxt, line)) {
1705+ AnalyzerInformation::Info info;
1706+ if (!info.parse (line) || info.sourceFile .empty ())
1707+ continue ;
1708+ if (!seen.emplace (info.sourceFile , info.fsFileId ).second )
1709+ continue ;
1710+ std::string dumpFileName = AnalyzerInformation::getAnalyzerInfoFile (mSettings .buildDir , info.sourceFile , " " , info.fsFileId );
1711+ if (info.fsFileId > 0 )
1712+ dumpFileName += ' .' + std::to_string (info.fsFileId );
1713+ dumpFileName += " .dump" ;
17081714 ctuInfoFiles.push_back (getCtuInfoFileName (dumpFileName));
17091715 }
17101716
0 commit comments