diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index d82cda987cc..63edaf3cd6e 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1446,13 +1446,13 @@ void CppCheck::executeAddons(const std::vector& files, const std::s if (mSettings.addons.empty() || files.empty()) return; - FilesDeleter filesDeleter; + const bool isCtuInfo = endsWith(files[0], ".ctu-info"); + FilesDeleter filesDeleter; std::string fileList; - if (files.size() >= 2 || endsWith(files[0], ".ctu-info")) { - // TODO: can this conflict when using -j? - fileList = Path::getPathFromFilename(files[0]) + FILELIST; + if (files.size() >= 2) { + fileList = Path::getPathFromFilename(files[0]) + FILELIST + ("-" + std::to_string(mSettings.pid)) + ".txt"; std::ofstream fout(fileList); filesDeleter.addFile(fileList); // TODO: check if file could be created @@ -1466,7 +1466,7 @@ void CppCheck::executeAddons(const std::vector& files, const std::s std::string ctuInfo; for (const AddonInfo &addonInfo : mSettings.addonInfos) { - if (addonInfo.name != "misra" && !addonInfo.ctu && endsWith(files.back(), ".ctu-info")) + if (isCtuInfo && addonInfo.name != "misra" && !addonInfo.ctu) continue; const std::vector results = @@ -1532,7 +1532,7 @@ void CppCheck::executeAddons(const std::vector& files, const std::s } } - if (!mSettings.buildDir.empty() && fileList.empty()) { + if (!mSettings.buildDir.empty() && !isCtuInfo) { const std::string& ctuInfoFile = getCtuInfoFileName(files[0]); std::ofstream fout(ctuInfoFile); fout << ctuInfo;