From 7dbca470f792d93e0dcb6da25970a65618fa4cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sat, 12 Jun 2021 18:19:00 +0200 Subject: [PATCH] Suppressions; Fixed problem with cppcheck build dir is used --- lib/cppcheck.cpp | 3 ++- test/cli/proj-inline-suppress/4.c | 5 +++++ test/cli/test-inline-suppress.py | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test/cli/proj-inline-suppress/4.c diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index c87098b6d..fd7e26856 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -1401,6 +1401,8 @@ void CppCheck::reportErr(const ErrorMessage &msg) if (std::find(mErrorList.begin(), mErrorList.end(), errmsg) != mErrorList.end()) return; + mAnalyzerInformation.reportErr(msg, mSettings.verbose); + const Suppressions::ErrorMessage errorMessage = msg.toSuppressionsErrorMessage(); if (mUseGlobalSuppressions) { @@ -1422,7 +1424,6 @@ void CppCheck::reportErr(const ErrorMessage &msg) mErrorList.push_back(errmsg); mErrorLogger.reportErr(msg); - mAnalyzerInformation.reportErr(msg, mSettings.verbose); if (!mSettings.plistOutput.empty() && plistFile.is_open()) { plistFile << ErrorLogger::plistData(msg); } diff --git a/test/cli/proj-inline-suppress/4.c b/test/cli/proj-inline-suppress/4.c new file mode 100644 index 000000000..5d65e5433 --- /dev/null +++ b/test/cli/proj-inline-suppress/4.c @@ -0,0 +1,5 @@ +int main() { + // cppcheck-suppress unreadVariable + int i = 0; +} + diff --git a/test/cli/test-inline-suppress.py b/test/cli/test-inline-suppress.py index 87a90f77e..1dfef87cc 100644 --- a/test/cli/test-inline-suppress.py +++ b/test/cli/test-inline-suppress.py @@ -3,6 +3,7 @@ import json import os +import tempfile from testutils import cppcheck def create_unused_function_compile_commands(): @@ -56,3 +57,18 @@ def test_compile_commands_unused_function_suppression(): ret, stdout, stderr = cppcheck(['--enable=all', '--inline-suppr', '--error-exitcode=1', '--project=./proj-inline-suppress-unusedFunction/compile_commands.json']) assert ret == 0, stdout assert 'unusedFunction' not in stderr + + +def test_build_dir(): + with tempfile.TemporaryDirectory() as tempdir: + args = f'--cppcheck-build-dir={tempdir} --enable=all --inline-suppr proj-inline-suppress/4.c'.split() + + ret, stdout, stderr = cppcheck(args) + assert ret == 0, stdout + assert len(stderr) == 0 + + ret, stdout, stderr = cppcheck(args) + assert ret == 0, stdout + assert len(stderr) == 0 + +