From 8935acc21c7a03c87c4cab3ffcc2d66d1036d4c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 8 Dec 2024 15:19:18 +0100 Subject: [PATCH 1/3] Fix #13401 (cppcheck-addon-ctu-file-list filename should be unique for each process) --- lib/cppcheck.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index d82cda987cc..b53880e4cc0 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1452,7 +1452,7 @@ void CppCheck::executeAddons(const std::vector& files, const std::s if (files.size() >= 2 || endsWith(files[0], ".ctu-info")) { // TODO: can this conflict when using -j? - fileList = Path::getPathFromFilename(files[0]) + FILELIST; + 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 From 979d27170d5252bdc985583282182cfeea90dcde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 8 Dec 2024 18:21:04 +0100 Subject: [PATCH 2/3] executeAddons; Only create filelist if more than 1 file is processed. Processing a single ctu-info file does not require a filelist --- lib/cppcheck.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index b53880e4cc0..b360083d00f 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1446,11 +1446,12 @@ 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")) { + if (files.size() >= 2) { // TODO: can this conflict when using -j? fileList = Path::getPathFromFilename(files[0]) + FILELIST + ("-" + std::to_string(mSettings.pid)) + ".txt"; std::ofstream fout(fileList); @@ -1466,7 +1467,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 +1533,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; From b451c08ebb8c17f2a5b5f5948521be618511a5de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sun, 8 Dec 2024 18:24:49 +0100 Subject: [PATCH 3/3] Update lib/cppcheck.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oliver Stöneberg --- lib/cppcheck.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index b360083d00f..63edaf3cd6e 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1452,7 +1452,6 @@ void CppCheck::executeAddons(const std::vector& files, const std::s std::string fileList; if (files.size() >= 2) { - // TODO: can this conflict when using -j? fileList = Path::getPathFromFilename(files[0]) + FILELIST + ("-" + std::to_string(mSettings.pid)) + ".txt"; std::ofstream fout(fileList); filesDeleter.addFile(fileList);