From 37bc0483a4ff1820985da28ea15241e916641631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Sat, 23 May 2020 07:16:49 +0200 Subject: [PATCH] made check.h less heavy (#2633) --- Makefile | 232 +++++----- cli/cppcheckexecutor.cpp | 45 +- cli/cppcheckexecutor.h | 4 +- cli/threadexecutor.cpp | 30 +- cli/threadexecutor.h | 6 +- democlient/democlient.cpp | 2 +- gui/applicationdialog.h | 2 +- gui/checkthread.cpp | 6 +- gui/erroritem.cpp | 6 +- gui/erroritem.h | 4 +- gui/newsuppressiondialog.cpp | 2 +- gui/resultstree.h | 2 +- gui/showtypes.cpp | 1 - gui/showtypes.h | 3 +- gui/test/benchmark/simple/benchmarksimple.cpp | 1 - gui/test/benchmark/simple/benchmarksimple.h | 2 +- gui/test/xmlreportv2/testxmlreportv2.cpp | 1 - gui/threadresult.cpp | 2 +- gui/threadresult.h | 2 +- lib/analyzerinfo.cpp | 7 +- lib/analyzerinfo.h | 7 +- lib/astutils.h | 2 +- lib/check.cpp | 24 +- lib/check.h | 27 +- lib/check64bit.cpp | 1 - lib/checkassert.cpp | 1 - lib/checkautovariables.cpp | 1 - lib/checkautovariables.h | 4 +- lib/checkbool.cpp | 1 - lib/checkboost.cpp | 1 - lib/checkbufferoverrun.cpp | 15 +- lib/checkclass.cpp | 2 +- lib/checkcondition.cpp | 1 - lib/checkcondition.h | 5 +- lib/checkexceptionsafety.h | 3 +- lib/checkfunctions.h | 4 +- lib/checkinternal.cpp | 1 - lib/checkio.h | 4 +- lib/checkleakautovar.cpp | 2 +- lib/checkleakautovar.h | 1 + lib/checkmemoryleak.cpp | 3 +- lib/checkmemoryleak.h | 3 +- lib/checknullpointer.cpp | 14 +- lib/checkother.cpp | 2 +- lib/checkother.h | 3 +- lib/checkpostfixoperator.cpp | 1 - lib/checksizeof.cpp | 1 - lib/checkstl.cpp | 1 - lib/checkstl.h | 3 +- lib/checkstring.cpp | 1 - lib/checktype.cpp | 1 - lib/checkuninitvar.cpp | 16 +- lib/checkuninitvar.h | 3 +- lib/checkunusedfunctions.cpp | 6 +- lib/checkunusedvar.cpp | 1 - lib/checkvaarg.cpp | 1 - lib/cppcheck.cpp | 148 +++--- lib/cppcheck.h | 5 +- lib/cppcheck.vcxproj | 1 + lib/cppcheck.vcxproj.filters | 3 + lib/ctu.cpp | 16 +- lib/ctu.h | 9 +- lib/errorlogger.cpp | 117 ++--- lib/errorlogger.h | 429 +++++++----------- lib/errortypes.cpp | 64 +++ lib/errortypes.h | 115 +++++ lib/exprengine.cpp | 30 +- lib/lib.pri | 2 + lib/library.h | 2 +- lib/mathlib.cpp | 2 +- lib/pathanalysis.h | 4 +- lib/preprocessor.cpp | 38 +- lib/programmemory.h | 2 +- lib/settings.h | 1 - lib/symboldatabase.cpp | 18 +- lib/templatesimplifier.cpp | 18 +- lib/token.cpp | 1 - lib/tokenize.cpp | 7 +- lib/tokenize.h | 3 +- lib/tokenlist.cpp | 2 +- lib/valueflow.cpp | 6 +- oss-fuzz/main.cpp | 2 +- test/testcppcheck.cpp | 2 +- test/testerrorlogger.cpp | 50 +- test/testgarbage.cpp | 1 - test/testlibrary.cpp | 1 - test/testsamples.cpp | 6 +- test/testsuite.cpp | 2 +- test/testsuite.h | 2 +- test/testutils.h | 2 +- tools/CMakeLists.txt | 4 + 91 files changed, 866 insertions(+), 776 deletions(-) create mode 100644 lib/errortypes.cpp create mode 100644 lib/errortypes.h diff --git a/Makefile b/Makefile index 3cc9eb9a2..5f6eb0010 100644 --- a/Makefile +++ b/Makefile @@ -188,6 +188,7 @@ LIBOBJ = $(libcppdir)/analyzerinfo.o \ $(libcppdir)/cppcheck.o \ $(libcppdir)/ctu.o \ $(libcppdir)/errorlogger.o \ + $(libcppdir)/errortypes.o \ $(libcppdir)/exprengine.o \ $(libcppdir)/forwardanalyzer.o \ $(libcppdir)/importproject.o \ @@ -400,121 +401,124 @@ validateRules: ###### Build -$(libcppdir)/analyzerinfo.o: lib/analyzerinfo.cpp externals/tinyxml/tinyxml2.h lib/analyzerinfo.h lib/config.h lib/errorlogger.h lib/importproject.h lib/path.h lib/platform.h lib/suppressions.h lib/utils.h +$(libcppdir)/analyzerinfo.o: lib/analyzerinfo.cpp externals/tinyxml/tinyxml2.h lib/analyzerinfo.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/path.h lib/platform.h lib/suppressions.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/analyzerinfo.o $(libcppdir)/analyzerinfo.cpp -$(libcppdir)/astutils.o: lib/astutils.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/utils.h lib/valueflow.h +$(libcppdir)/astutils.o: lib/astutils.cpp lib/astutils.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/astutils.o $(libcppdir)/astutils.cpp -$(libcppdir)/check.o: lib/check.cpp lib/check.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/check.o: lib/check.cpp lib/check.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/check.o $(libcppdir)/check.cpp -$(libcppdir)/check64bit.o: lib/check64bit.cpp lib/check.h lib/check64bit.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/check64bit.o: lib/check64bit.cpp lib/check.h lib/check64bit.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/check64bit.o $(libcppdir)/check64bit.cpp -$(libcppdir)/checkassert.o: lib/checkassert.cpp lib/check.h lib/checkassert.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkassert.o: lib/checkassert.cpp lib/check.h lib/checkassert.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkassert.o $(libcppdir)/checkassert.cpp -$(libcppdir)/checkautovariables.o: lib/checkautovariables.cpp lib/astutils.h lib/check.h lib/checkautovariables.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkautovariables.o: lib/checkautovariables.cpp lib/astutils.h lib/check.h lib/checkautovariables.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkautovariables.o $(libcppdir)/checkautovariables.cpp -$(libcppdir)/checkbool.o: lib/checkbool.cpp lib/astutils.h lib/check.h lib/checkbool.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkbool.o: lib/checkbool.cpp lib/astutils.h lib/check.h lib/checkbool.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkbool.o $(libcppdir)/checkbool.cpp -$(libcppdir)/checkboost.o: lib/checkboost.cpp lib/check.h lib/checkboost.h lib/config.h lib/errorlogger.h lib/library.h lib/mathlib.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkboost.o: lib/checkboost.cpp lib/check.h lib/checkboost.h lib/config.h lib/errortypes.h lib/library.h lib/mathlib.h lib/standards.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkboost.o $(libcppdir)/checkboost.cpp -$(libcppdir)/checkbufferoverrun.o: lib/checkbufferoverrun.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/check.h lib/checkbufferoverrun.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkbufferoverrun.o: lib/checkbufferoverrun.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/check.h lib/checkbufferoverrun.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkbufferoverrun.o $(libcppdir)/checkbufferoverrun.cpp -$(libcppdir)/checkclass.o: lib/checkclass.cpp lib/astutils.h lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkclass.o: lib/checkclass.cpp lib/astutils.h lib/check.h lib/checkclass.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkclass.o $(libcppdir)/checkclass.cpp -$(libcppdir)/checkcondition.o: lib/checkcondition.cpp lib/astutils.h lib/check.h lib/checkcondition.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkcondition.o: lib/checkcondition.cpp lib/astutils.h lib/check.h lib/checkcondition.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkcondition.o $(libcppdir)/checkcondition.cpp -$(libcppdir)/checkexceptionsafety.o: lib/checkexceptionsafety.cpp lib/check.h lib/checkexceptionsafety.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkexceptionsafety.o: lib/checkexceptionsafety.cpp lib/check.h lib/checkexceptionsafety.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkexceptionsafety.o $(libcppdir)/checkexceptionsafety.cpp -$(libcppdir)/checkfunctions.o: lib/checkfunctions.cpp lib/astutils.h lib/check.h lib/checkfunctions.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkfunctions.o: lib/checkfunctions.cpp lib/astutils.h lib/check.h lib/checkfunctions.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkfunctions.o $(libcppdir)/checkfunctions.cpp -$(libcppdir)/checkinternal.o: lib/checkinternal.cpp lib/astutils.h lib/check.h lib/checkinternal.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkinternal.o: lib/checkinternal.cpp lib/astutils.h lib/check.h lib/checkinternal.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkinternal.o $(libcppdir)/checkinternal.cpp -$(libcppdir)/checkio.o: lib/checkio.cpp lib/check.h lib/checkio.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkio.o: lib/checkio.cpp lib/check.h lib/checkio.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkio.o $(libcppdir)/checkio.cpp -$(libcppdir)/checkleakautovar.o: lib/checkleakautovar.cpp lib/astutils.h lib/check.h lib/checkleakautovar.h lib/checkmemoryleak.h lib/checknullpointer.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkleakautovar.o: lib/checkleakautovar.cpp lib/astutils.h lib/check.h lib/checkleakautovar.h lib/checkmemoryleak.h lib/checknullpointer.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkleakautovar.o $(libcppdir)/checkleakautovar.cpp -$(libcppdir)/checkmemoryleak.o: lib/checkmemoryleak.cpp lib/astutils.h lib/check.h lib/checkmemoryleak.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkmemoryleak.o: lib/checkmemoryleak.cpp lib/astutils.h lib/check.h lib/checkmemoryleak.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkmemoryleak.o $(libcppdir)/checkmemoryleak.cpp -$(libcppdir)/checknullpointer.o: lib/checknullpointer.cpp lib/astutils.h lib/check.h lib/checknullpointer.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checknullpointer.o: lib/checknullpointer.cpp lib/astutils.h lib/check.h lib/checknullpointer.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checknullpointer.o $(libcppdir)/checknullpointer.cpp -$(libcppdir)/checkother.o: lib/checkother.cpp lib/astutils.h lib/check.h lib/checkother.h lib/checkuninitvar.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkother.o: lib/checkother.cpp lib/astutils.h lib/check.h lib/checkother.h lib/checkuninitvar.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkother.o $(libcppdir)/checkother.cpp -$(libcppdir)/checkpostfixoperator.o: lib/checkpostfixoperator.cpp lib/check.h lib/checkpostfixoperator.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkpostfixoperator.o: lib/checkpostfixoperator.cpp lib/check.h lib/checkpostfixoperator.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkpostfixoperator.o $(libcppdir)/checkpostfixoperator.cpp -$(libcppdir)/checksizeof.o: lib/checksizeof.cpp lib/check.h lib/checksizeof.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checksizeof.o: lib/checksizeof.cpp lib/check.h lib/checksizeof.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checksizeof.o $(libcppdir)/checksizeof.cpp -$(libcppdir)/checkstl.o: lib/checkstl.cpp lib/astutils.h lib/check.h lib/checkstl.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathanalysis.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkstl.o: lib/checkstl.cpp lib/astutils.h lib/check.h lib/checkstl.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/pathanalysis.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkstl.o $(libcppdir)/checkstl.cpp -$(libcppdir)/checkstring.o: lib/checkstring.cpp lib/astutils.h lib/check.h lib/checkstring.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkstring.o: lib/checkstring.cpp lib/astutils.h lib/check.h lib/checkstring.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkstring.o $(libcppdir)/checkstring.cpp -$(libcppdir)/checktype.o: lib/checktype.cpp lib/check.h lib/checktype.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checktype.o: lib/checktype.cpp lib/check.h lib/checktype.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checktype.o $(libcppdir)/checktype.cpp -$(libcppdir)/checkuninitvar.o: lib/checkuninitvar.cpp lib/astutils.h lib/check.h lib/checknullpointer.h lib/checkuninitvar.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkuninitvar.o: lib/checkuninitvar.cpp lib/astutils.h lib/check.h lib/checknullpointer.h lib/checkuninitvar.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkuninitvar.o $(libcppdir)/checkuninitvar.cpp -$(libcppdir)/checkunusedfunctions.o: lib/checkunusedfunctions.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/check.h lib/checkunusedfunctions.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkunusedfunctions.o: lib/checkunusedfunctions.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/check.h lib/checkunusedfunctions.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkunusedfunctions.o $(libcppdir)/checkunusedfunctions.cpp -$(libcppdir)/checkunusedvar.o: lib/checkunusedvar.cpp lib/astutils.h lib/check.h lib/checkunusedvar.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkunusedvar.o: lib/checkunusedvar.cpp lib/astutils.h lib/check.h lib/checkunusedvar.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkunusedvar.o $(libcppdir)/checkunusedvar.cpp -$(libcppdir)/checkvaarg.o: lib/checkvaarg.cpp lib/astutils.h lib/check.h lib/checkvaarg.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/checkvaarg.o: lib/checkvaarg.cpp lib/astutils.h lib/check.h lib/checkvaarg.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/checkvaarg.o $(libcppdir)/checkvaarg.cpp -$(libcppdir)/clangimport.o: lib/clangimport.cpp lib/clangimport.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/clangimport.o: lib/clangimport.cpp lib/clangimport.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/clangimport.o $(libcppdir)/clangimport.cpp -$(libcppdir)/cppcheck.o: lib/cppcheck.cpp externals/picojson.h externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/analyzerinfo.h lib/check.h lib/checkunusedfunctions.h lib/clangimport.h lib/config.h lib/cppcheck.h lib/ctu.h lib/errorlogger.h lib/exprengine.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/version.h +$(libcppdir)/cppcheck.o: lib/cppcheck.cpp externals/picojson.h externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/analyzerinfo.h lib/check.h lib/checkunusedfunctions.h lib/clangimport.h lib/config.h lib/cppcheck.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/exprengine.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/version.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/cppcheck.o $(libcppdir)/cppcheck.cpp -$(libcppdir)/ctu.o: lib/ctu.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/check.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/ctu.o: lib/ctu.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/check.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/ctu.o $(libcppdir)/ctu.cpp -$(libcppdir)/errorlogger.o: lib/errorlogger.cpp externals/tinyxml/tinyxml2.h lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/errorlogger.o: lib/errorlogger.cpp externals/tinyxml/tinyxml2.h lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/errorlogger.o $(libcppdir)/errorlogger.cpp -$(libcppdir)/exprengine.o: lib/exprengine.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/exprengine.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/errortypes.o: lib/errortypes.cpp lib/config.h lib/errortypes.h + $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/errortypes.o $(libcppdir)/errortypes.cpp + +$(libcppdir)/exprengine.o: lib/exprengine.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/exprengine.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/exprengine.o $(libcppdir)/exprengine.cpp -$(libcppdir)/forwardanalyzer.o: lib/forwardanalyzer.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/forwardanalyzer.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/utils.h lib/valueflow.h lib/valueptr.h +$(libcppdir)/forwardanalyzer.o: lib/forwardanalyzer.cpp lib/astutils.h lib/config.h lib/errortypes.h lib/forwardanalyzer.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/utils.h lib/valueflow.h lib/valueptr.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/forwardanalyzer.o $(libcppdir)/forwardanalyzer.cpp -$(libcppdir)/importproject.o: lib/importproject.cpp externals/picojson.h externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/importproject.o: lib/importproject.cpp externals/picojson.h externals/tinyxml/tinyxml2.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/importproject.o $(libcppdir)/importproject.cpp -$(libcppdir)/library.o: lib/library.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/config.h lib/errorlogger.h lib/library.h lib/mathlib.h lib/path.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/library.o: lib/library.cpp externals/tinyxml/tinyxml2.h lib/astutils.h lib/config.h lib/errortypes.h lib/library.h lib/mathlib.h lib/path.h lib/standards.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/library.o $(libcppdir)/library.cpp -$(libcppdir)/mathlib.o: lib/mathlib.cpp lib/config.h lib/errorlogger.h lib/mathlib.h lib/suppressions.h lib/utils.h +$(libcppdir)/mathlib.o: lib/mathlib.cpp lib/config.h lib/errortypes.h lib/mathlib.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/mathlib.o $(libcppdir)/mathlib.cpp $(libcppdir)/path.o: lib/path.cpp externals/simplecpp/simplecpp.h lib/config.h lib/path.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/path.o $(libcppdir)/path.cpp -$(libcppdir)/pathanalysis.o: lib/pathanalysis.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/library.h lib/mathlib.h lib/pathanalysis.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/valueflow.h +$(libcppdir)/pathanalysis.o: lib/pathanalysis.cpp lib/astutils.h lib/config.h lib/errortypes.h lib/library.h lib/mathlib.h lib/pathanalysis.h lib/standards.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/pathanalysis.o $(libcppdir)/pathanalysis.cpp $(libcppdir)/pathmatch.o: lib/pathmatch.cpp lib/config.h lib/path.h lib/pathmatch.h lib/utils.h @@ -523,244 +527,244 @@ $(libcppdir)/pathmatch.o: lib/pathmatch.cpp lib/config.h lib/path.h lib/pathmatc $(libcppdir)/platform.o: lib/platform.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/path.h lib/platform.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/platform.o $(libcppdir)/platform.cpp -$(libcppdir)/preprocessor.o: lib/preprocessor.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h +$(libcppdir)/preprocessor.o: lib/preprocessor.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/preprocessor.o $(libcppdir)/preprocessor.cpp -$(libcppdir)/programmemory.o: lib/programmemory.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/library.h lib/mathlib.h lib/programmemory.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/valueflow.h +$(libcppdir)/programmemory.o: lib/programmemory.cpp lib/astutils.h lib/config.h lib/errortypes.h lib/library.h lib/mathlib.h lib/programmemory.h lib/standards.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/programmemory.o $(libcppdir)/programmemory.cpp -$(libcppdir)/settings.o: lib/settings.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h lib/valueflow.h +$(libcppdir)/settings.o: lib/settings.cpp lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/settings.o $(libcppdir)/settings.cpp -$(libcppdir)/suppressions.o: lib/suppressions.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/mathlib.h lib/path.h lib/suppressions.h lib/utils.h +$(libcppdir)/suppressions.o: lib/suppressions.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/mathlib.h lib/path.h lib/suppressions.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/suppressions.o $(libcppdir)/suppressions.cpp -$(libcppdir)/symboldatabase.o: lib/symboldatabase.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/symboldatabase.o: lib/symboldatabase.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/symboldatabase.o $(libcppdir)/symboldatabase.cpp -$(libcppdir)/templatesimplifier.o: lib/templatesimplifier.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/templatesimplifier.o: lib/templatesimplifier.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/templatesimplifier.o $(libcppdir)/templatesimplifier.cpp $(libcppdir)/timer.o: lib/timer.cpp lib/config.h lib/timer.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/timer.o $(libcppdir)/timer.cpp -$(libcppdir)/token.o: lib/token.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/token.o: lib/token.cpp lib/astutils.h lib/config.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/token.o $(libcppdir)/token.cpp -$(libcppdir)/tokenize.o: lib/tokenize.cpp lib/check.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/tokenize.o: lib/tokenize.cpp lib/check.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/tokenize.o $(libcppdir)/tokenize.cpp -$(libcppdir)/tokenlist.o: lib/tokenlist.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h +$(libcppdir)/tokenlist.o: lib/tokenlist.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/tokenlist.o $(libcppdir)/tokenlist.cpp $(libcppdir)/utils.o: lib/utils.cpp lib/config.h lib/utils.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/utils.o $(libcppdir)/utils.cpp -$(libcppdir)/valueflow.o: lib/valueflow.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/forwardanalyzer.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/programmemory.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h +$(libcppdir)/valueflow.o: lib/valueflow.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/forwardanalyzer.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/programmemory.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h lib/valueptr.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o $(libcppdir)/valueflow.o $(libcppdir)/valueflow.cpp -cli/cmdlineparser.o: cli/cmdlineparser.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h cli/filelister.h cli/threadexecutor.h externals/tinyxml/tinyxml2.h lib/check.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +cli/cmdlineparser.o: cli/cmdlineparser.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h cli/filelister.h cli/threadexecutor.h externals/tinyxml/tinyxml2.h lib/check.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o cli/cmdlineparser.o cli/cmdlineparser.cpp -cli/cppcheckexecutor.o: cli/cppcheckexecutor.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h cli/filelister.h cli/threadexecutor.h externals/simplecpp/simplecpp.h lib/analyzerinfo.h lib/check.h lib/checkunusedfunctions.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +cli/cppcheckexecutor.o: cli/cppcheckexecutor.cpp cli/cmdlineparser.h cli/cppcheckexecutor.h cli/filelister.h cli/threadexecutor.h externals/simplecpp/simplecpp.h lib/analyzerinfo.h lib/check.h lib/checkunusedfunctions.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o cli/cppcheckexecutor.o cli/cppcheckexecutor.cpp cli/filelister.o: cli/filelister.cpp cli/filelister.h lib/config.h lib/path.h lib/pathmatch.h lib/utils.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o cli/filelister.o cli/filelister.cpp -cli/main.o: cli/main.cpp cli/cppcheckexecutor.h lib/config.h lib/errorlogger.h lib/suppressions.h +cli/main.o: cli/main.cpp cli/cppcheckexecutor.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o cli/main.o cli/main.cpp -cli/threadexecutor.o: cli/threadexecutor.cpp cli/cppcheckexecutor.h cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h +cli/threadexecutor.o: cli/threadexecutor.cpp cli/cppcheckexecutor.h cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h $(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o cli/threadexecutor.o cli/threadexecutor.cpp test/options.o: test/options.cpp test/options.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/options.o test/options.cpp -test/test64bit.o: test/test64bit.cpp lib/check.h lib/check64bit.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/test64bit.o: test/test64bit.cpp lib/check.h lib/check64bit.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/test64bit.o test/test64bit.cpp -test/testassert.o: test/testassert.cpp lib/check.h lib/checkassert.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testassert.o: test/testassert.cpp lib/check.h lib/checkassert.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testassert.o test/testassert.cpp -test/testastutils.o: test/testastutils.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testastutils.o: test/testastutils.cpp lib/astutils.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testastutils.o test/testastutils.cpp -test/testautovariables.o: test/testautovariables.cpp lib/check.h lib/checkautovariables.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testautovariables.o: test/testautovariables.cpp lib/check.h lib/checkautovariables.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testautovariables.o test/testautovariables.cpp -test/testbool.o: test/testbool.cpp lib/check.h lib/checkbool.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testbool.o: test/testbool.cpp lib/check.h lib/checkbool.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testbool.o test/testbool.cpp -test/testboost.o: test/testboost.cpp lib/check.h lib/checkboost.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testboost.o: test/testboost.cpp lib/check.h lib/checkboost.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testboost.o test/testboost.cpp -test/testbufferoverrun.o: test/testbufferoverrun.cpp externals/tinyxml/tinyxml2.h lib/check.h lib/checkbufferoverrun.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testbufferoverrun.o: test/testbufferoverrun.cpp externals/tinyxml/tinyxml2.h lib/check.h lib/checkbufferoverrun.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testbufferoverrun.o test/testbufferoverrun.cpp -test/testcharvar.o: test/testcharvar.cpp lib/check.h lib/checkother.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testcharvar.o: test/testcharvar.cpp lib/check.h lib/checkother.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testcharvar.o test/testcharvar.cpp -test/testclangimport.o: test/testclangimport.cpp lib/clangimport.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testclangimport.o: test/testclangimport.cpp lib/clangimport.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testclangimport.o test/testclangimport.cpp -test/testclass.o: test/testclass.cpp externals/tinyxml/tinyxml2.h lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testclass.o: test/testclass.cpp externals/tinyxml/tinyxml2.h lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testclass.o test/testclass.cpp -test/testcmdlineparser.o: test/testcmdlineparser.cpp cli/cmdlineparser.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/redirect.h test/testsuite.h +test/testcmdlineparser.o: test/testcmdlineparser.cpp cli/cmdlineparser.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/redirect.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testcmdlineparser.o test/testcmdlineparser.cpp -test/testcondition.o: test/testcondition.cpp externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/check.h lib/checkcondition.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testcondition.o: test/testcondition.cpp externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/check.h lib/checkcondition.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testcondition.o test/testcondition.cpp -test/testconstructors.o: test/testconstructors.cpp lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testconstructors.o: test/testconstructors.cpp lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testconstructors.o test/testconstructors.cpp -test/testcppcheck.o: test/testcppcheck.cpp lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testcppcheck.o: test/testcppcheck.cpp lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testcppcheck.o test/testcppcheck.cpp -test/testerrorlogger.o: test/testerrorlogger.cpp lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testerrorlogger.o: test/testerrorlogger.cpp lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testerrorlogger.o test/testerrorlogger.cpp -test/testexceptionsafety.o: test/testexceptionsafety.cpp lib/check.h lib/checkexceptionsafety.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testexceptionsafety.o: test/testexceptionsafety.cpp lib/check.h lib/checkexceptionsafety.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testexceptionsafety.o test/testexceptionsafety.cpp -test/testexprengine.o: test/testexprengine.cpp lib/config.h lib/errorlogger.h lib/exprengine.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testexprengine.o: test/testexprengine.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/exprengine.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testexprengine.o test/testexprengine.cpp -test/testfilelister.o: test/testfilelister.cpp cli/filelister.h lib/config.h lib/errorlogger.h lib/pathmatch.h lib/suppressions.h test/testsuite.h +test/testfilelister.o: test/testfilelister.cpp cli/filelister.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/pathmatch.h lib/suppressions.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testfilelister.o test/testfilelister.cpp -test/testfunctions.o: test/testfunctions.cpp externals/tinyxml/tinyxml2.h lib/check.h lib/checkfunctions.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testfunctions.o: test/testfunctions.cpp externals/tinyxml/tinyxml2.h lib/check.h lib/checkfunctions.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testfunctions.o test/testfunctions.cpp -test/testgarbage.o: test/testgarbage.cpp lib/check.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testgarbage.o: test/testgarbage.cpp lib/check.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testgarbage.o test/testgarbage.cpp -test/testimportproject.o: test/testimportproject.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h +test/testimportproject.o: test/testimportproject.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testimportproject.o test/testimportproject.cpp -test/testincompletestatement.o: test/testincompletestatement.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkother.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testincompletestatement.o: test/testincompletestatement.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkother.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testincompletestatement.o test/testincompletestatement.cpp -test/testinternal.o: test/testinternal.cpp lib/check.h lib/checkinternal.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testinternal.o: test/testinternal.cpp lib/check.h lib/checkinternal.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testinternal.o test/testinternal.cpp -test/testio.o: test/testio.cpp lib/check.h lib/checkio.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testio.o: test/testio.cpp lib/check.h lib/checkio.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testio.o test/testio.cpp -test/testleakautovar.o: test/testleakautovar.cpp externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/check.h lib/checkleakautovar.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testleakautovar.o: test/testleakautovar.cpp externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/check.h lib/checkleakautovar.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testleakautovar.o test/testleakautovar.cpp -test/testlibrary.o: test/testlibrary.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testlibrary.o: test/testlibrary.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testlibrary.o test/testlibrary.cpp -test/testmathlib.o: test/testmathlib.cpp lib/config.h lib/errorlogger.h lib/mathlib.h lib/suppressions.h test/testsuite.h +test/testmathlib.o: test/testmathlib.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/mathlib.h lib/suppressions.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testmathlib.o test/testmathlib.cpp -test/testmemleak.o: test/testmemleak.cpp lib/check.h lib/checkmemoryleak.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testmemleak.o: test/testmemleak.cpp lib/check.h lib/checkmemoryleak.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testmemleak.o test/testmemleak.cpp -test/testnullpointer.o: test/testnullpointer.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checknullpointer.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testnullpointer.o: test/testnullpointer.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checknullpointer.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testnullpointer.o test/testnullpointer.cpp -test/testoptions.o: test/testoptions.cpp lib/config.h lib/errorlogger.h lib/suppressions.h test/options.h test/testsuite.h +test/testoptions.o: test/testoptions.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h test/options.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testoptions.o test/testoptions.cpp -test/testother.o: test/testother.cpp externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/check.h lib/checkother.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testother.o: test/testother.cpp externals/simplecpp/simplecpp.h externals/tinyxml/tinyxml2.h lib/check.h lib/checkother.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testother.o test/testother.cpp -test/testpath.o: test/testpath.cpp lib/config.h lib/errorlogger.h lib/path.h lib/suppressions.h test/testsuite.h +test/testpath.o: test/testpath.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/path.h lib/suppressions.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testpath.o test/testpath.cpp -test/testpathmatch.o: test/testpathmatch.cpp lib/config.h lib/errorlogger.h lib/pathmatch.h lib/suppressions.h test/testsuite.h +test/testpathmatch.o: test/testpathmatch.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/pathmatch.h lib/suppressions.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testpathmatch.o test/testpathmatch.cpp -test/testplatform.o: test/testplatform.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/platform.h lib/suppressions.h lib/utils.h test/testsuite.h +test/testplatform.o: test/testplatform.cpp externals/tinyxml/tinyxml2.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/platform.h lib/suppressions.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testplatform.o test/testplatform.cpp -test/testpostfixoperator.o: test/testpostfixoperator.cpp lib/check.h lib/checkpostfixoperator.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testpostfixoperator.o: test/testpostfixoperator.cpp lib/check.h lib/checkpostfixoperator.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testpostfixoperator.o test/testpostfixoperator.cpp -test/testpreprocessor.o: test/testpreprocessor.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h +test/testpreprocessor.o: test/testpreprocessor.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testpreprocessor.o test/testpreprocessor.cpp -test/testrunner.o: test/testrunner.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/preprocessor.h lib/suppressions.h test/options.h test/testsuite.h +test/testrunner.o: test/testrunner.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/preprocessor.h lib/suppressions.h test/options.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testrunner.o test/testrunner.cpp -test/testsamples.o: test/testsamples.cpp cli/cppcheckexecutor.h cli/filelister.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/redirect.h test/testsuite.h +test/testsamples.o: test/testsamples.cpp cli/cppcheckexecutor.h cli/filelister.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/redirect.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsamples.o test/testsamples.cpp -test/testsimplifytemplate.o: test/testsimplifytemplate.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testsimplifytemplate.o: test/testsimplifytemplate.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsimplifytemplate.o test/testsimplifytemplate.cpp -test/testsimplifytokens.o: test/testsimplifytokens.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testsimplifytokens.o: test/testsimplifytokens.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsimplifytokens.o test/testsimplifytokens.cpp -test/testsimplifytypedef.o: test/testsimplifytypedef.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testsimplifytypedef.o: test/testsimplifytypedef.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsimplifytypedef.o test/testsimplifytypedef.cpp -test/testsimplifyusing.o: test/testsimplifyusing.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testsimplifyusing.o: test/testsimplifyusing.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsimplifyusing.o test/testsimplifyusing.cpp -test/testsizeof.o: test/testsizeof.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checksizeof.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testsizeof.o: test/testsizeof.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checksizeof.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsizeof.o test/testsizeof.cpp -test/teststl.o: test/teststl.cpp lib/check.h lib/checkstl.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/teststl.o: test/teststl.cpp lib/check.h lib/checkstl.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/teststl.o test/teststl.cpp -test/teststring.o: test/teststring.cpp lib/check.h lib/checkstring.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/teststring.o: test/teststring.cpp lib/check.h lib/checkstring.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/teststring.o test/teststring.cpp -test/testsuite.o: test/testsuite.cpp lib/config.h lib/errorlogger.h lib/suppressions.h test/options.h test/redirect.h test/testsuite.h +test/testsuite.o: test/testsuite.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h test/options.h test/redirect.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsuite.o test/testsuite.cpp -test/testsuppressions.o: test/testsuppressions.cpp cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testsuppressions.o: test/testsuppressions.cpp cli/threadexecutor.h lib/analyzerinfo.h lib/check.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsuppressions.o test/testsuppressions.cpp -test/testsymboldatabase.o: test/testsymboldatabase.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h test/testutils.h +test/testsymboldatabase.o: test/testsymboldatabase.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h test/testutils.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testsymboldatabase.o test/testsymboldatabase.cpp -test/testthreadexecutor.o: test/testthreadexecutor.cpp cli/threadexecutor.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h +test/testthreadexecutor.o: test/testthreadexecutor.cpp cli/threadexecutor.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testthreadexecutor.o test/testthreadexecutor.cpp -test/testtimer.o: test/testtimer.cpp lib/config.h lib/errorlogger.h lib/suppressions.h lib/timer.h test/testsuite.h +test/testtimer.o: test/testtimer.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h lib/timer.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testtimer.o test/testtimer.cpp -test/testtoken.o: test/testtoken.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h test/testutils.h +test/testtoken.o: test/testtoken.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h test/testutils.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testtoken.o test/testtoken.cpp -test/testtokenize.o: test/testtokenize.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testtokenize.o: test/testtokenize.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testtokenize.o test/testtokenize.cpp -test/testtokenlist.o: test/testtokenlist.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testtokenlist.o: test/testtokenlist.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testtokenlist.o test/testtokenlist.cpp -test/testtype.o: test/testtype.cpp lib/check.h lib/checktype.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testtype.o: test/testtype.cpp lib/check.h lib/checktype.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testtype.o test/testtype.cpp -test/testuninitvar.o: test/testuninitvar.cpp lib/check.h lib/checkuninitvar.h lib/config.h lib/ctu.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testuninitvar.o: test/testuninitvar.cpp lib/check.h lib/checkuninitvar.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testuninitvar.o test/testuninitvar.cpp -test/testunusedfunctions.o: test/testunusedfunctions.cpp lib/check.h lib/checkunusedfunctions.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testunusedfunctions.o: test/testunusedfunctions.cpp lib/check.h lib/checkunusedfunctions.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testunusedfunctions.o test/testunusedfunctions.cpp -test/testunusedprivfunc.o: test/testunusedprivfunc.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testunusedprivfunc.o: test/testunusedprivfunc.cpp externals/simplecpp/simplecpp.h lib/check.h lib/checkclass.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testunusedprivfunc.o test/testunusedprivfunc.cpp -test/testunusedvar.o: test/testunusedvar.cpp lib/check.h lib/checkunusedvar.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testunusedvar.o: test/testunusedvar.cpp lib/check.h lib/checkunusedvar.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testunusedvar.o test/testunusedvar.cpp -test/testutils.o: test/testutils.cpp lib/config.h lib/errorlogger.h lib/suppressions.h lib/utils.h test/testsuite.h +test/testutils.o: test/testutils.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/suppressions.h lib/utils.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testutils.o test/testutils.cpp -test/testvaarg.o: test/testvaarg.cpp lib/check.h lib/checkvaarg.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testvaarg.o: test/testvaarg.cpp lib/check.h lib/checkvaarg.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testvaarg.o test/testvaarg.cpp -test/testvalueflow.o: test/testvalueflow.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testvalueflow.o: test/testvalueflow.cpp externals/simplecpp/simplecpp.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testvalueflow.o test/testvalueflow.cpp -test/testvarid.o: test/testvarid.cpp lib/config.h lib/errorlogger.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h +test/testvarid.o: test/testvarid.cpp lib/config.h lib/errorlogger.h lib/errortypes.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/timer.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/valueflow.h test/testsuite.h $(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CPPFILESDIR) $(CXXFLAGS) $(UNDEF_STRICT_ANSI) -c -o test/testvarid.o test/testvarid.cpp externals/simplecpp/simplecpp.o: externals/simplecpp/simplecpp.cpp externals/simplecpp/simplecpp.h diff --git a/cli/cppcheckexecutor.cpp b/cli/cppcheckexecutor.cpp index c4784a1c2..ee8bc857b 100644 --- a/cli/cppcheckexecutor.cpp +++ b/cli/cppcheckexecutor.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -106,9 +107,9 @@ bool CppCheckExecutor::parseFromArgs(CppCheck *cppcheck, int argc, const char* c if (parser.getShowErrorMessages()) { mShowAllErrors = true; - std::cout << ErrorLogger::ErrorMessage::getXMLHeader(); + std::cout << ErrorMessage::getXMLHeader(); cppcheck->getErrorMessages(); - std::cout << ErrorLogger::ErrorMessage::getXMLFooter() << std::endl; + std::cout << ErrorMessage::getXMLFooter() << std::endl; } if (parser.exitAfterPrinting()) { @@ -851,8 +852,8 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck, int /*argc*/, const cha for (const std::string &lib : settings.libraries) { if (!tryLoadLibrary(settings.library, argv[0], lib.c_str())) { const std::string msg("Failed to load the library " + lib); - const std::list callstack; - ErrorLogger::ErrorMessage errmsg(callstack, emptyString, Severity::information, msg, "failedToLoadCfg", false); + const std::list callstack; + ErrorMessage errmsg(callstack, emptyString, Severity::information, msg, "failedToLoadCfg", false); reportErr(errmsg); return EXIT_FAILURE; } @@ -866,7 +867,7 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck, int /*argc*/, const cha windows = tryLoadLibrary(settings.library, argv[0], "windows.cfg"); if (!std || !posix || !windows) { - const std::list callstack; + const std::list callstack; const std::string msg("Failed to load " + std::string(!std ? "std.cfg" : !posix ? "posix.cfg" : "windows.cfg") + ". Your Cppcheck installation is broken, please re-install."); #ifdef FILESDIR const std::string details("The Cppcheck binary was compiled with FILESDIR set to \"" @@ -878,7 +879,7 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck, int /*argc*/, const cha "std.cfg should be available in " + cfgfolder + " or the FILESDIR " "should be configured."); #endif - ErrorLogger::ErrorMessage errmsg(callstack, emptyString, Severity::information, msg+" "+details, "failedToLoadCfg", false); + ErrorMessage errmsg(callstack, emptyString, Severity::information, msg+" "+details, "failedToLoadCfg", false); reportErr(errmsg); return EXIT_FAILURE; } @@ -891,7 +892,7 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck, int /*argc*/, const cha } if (settings.xml) { - reportErr(ErrorLogger::ErrorMessage::getXMLHeader()); + reportErr(ErrorMessage::getXMLHeader()); } if (!settings.buildDir.empty()) { @@ -980,24 +981,24 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck, int /*argc*/, const cha cppcheck.tooManyConfigsError("",0U); if (settings.isEnabled(Settings::MISSING_INCLUDE) && (Preprocessor::missingIncludeFlag || Preprocessor::missingSystemIncludeFlag)) { - const std::list callStack; - ErrorLogger::ErrorMessage msg(callStack, - emptyString, - Severity::information, - "Cppcheck cannot find all the include files (use --check-config for details)\n" - "Cppcheck cannot find all the include files. Cppcheck can check the code without the " - "include files found. But the results will probably be more accurate if all the include " - "files are found. Please check your project's include directories and add all of them " - "as include directories for Cppcheck. To see what files Cppcheck cannot find use " - "--check-config.", - Preprocessor::missingIncludeFlag ? "missingInclude" : "missingIncludeSystem", - false); + const std::list callStack; + ErrorMessage msg(callStack, + emptyString, + Severity::information, + "Cppcheck cannot find all the include files (use --check-config for details)\n" + "Cppcheck cannot find all the include files. Cppcheck can check the code without the " + "include files found. But the results will probably be more accurate if all the include " + "files are found. Please check your project's include directories and add all of them " + "as include directories for Cppcheck. To see what files Cppcheck cannot find use " + "--check-config.", + Preprocessor::missingIncludeFlag ? "missingInclude" : "missingIncludeSystem", + false); reportInfo(msg); } } if (settings.xml) { - reportErr(ErrorLogger::ErrorMessage::getXMLFooter()); + reportErr(ErrorMessage::getXMLFooter()); } mSettings = nullptr; @@ -1072,7 +1073,7 @@ void CppCheckExecutor::reportProgress(const std::string &filename, const char st } } -void CppCheckExecutor::reportInfo(const ErrorLogger::ErrorMessage &msg) +void CppCheckExecutor::reportInfo(const ErrorMessage &msg) { reportErr(msg); } @@ -1089,7 +1090,7 @@ void CppCheckExecutor::reportStatus(std::size_t fileindex, std::size_t filecount } } -void CppCheckExecutor::reportErr(const ErrorLogger::ErrorMessage &msg) +void CppCheckExecutor::reportErr(const ErrorMessage &msg) { if (mShowAllErrors) { reportOut(msg.toXML()); diff --git a/cli/cppcheckexecutor.h b/cli/cppcheckexecutor.h index 050a35da6..ca3a09aac 100644 --- a/cli/cppcheckexecutor.h +++ b/cli/cppcheckexecutor.h @@ -72,14 +72,14 @@ public: void reportOut(const std::string &outmsg) OVERRIDE; /** xml output of errors */ - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE; + void reportErr(const ErrorMessage &msg) OVERRIDE; void reportProgress(const std::string &filename, const char stage[], const std::size_t value) OVERRIDE; /** * Output information messages. */ - void reportInfo(const ErrorLogger::ErrorMessage &msg) OVERRIDE; + void reportInfo(const ErrorMessage &msg) OVERRIDE; void bughuntingReport(const std::string &str) OVERRIDE; diff --git a/cli/threadexecutor.cpp b/cli/threadexecutor.cpp index 9da48b0bc..d447b2c55 100644 --- a/cli/threadexecutor.cpp +++ b/cli/threadexecutor.cpp @@ -117,7 +117,7 @@ int ThreadExecutor::handleRead(int rpipe, unsigned int &result) if (type == REPORT_OUT) { mErrorLogger.reportOut(buf); } else if (type == REPORT_ERROR || type == REPORT_INFO) { - ErrorLogger::ErrorMessage msg; + ErrorMessage msg; msg.deserialize(buf); if (!mSettings.nomsg.isSuppressed(msg.toSuppressionsErrorMessage())) { @@ -299,14 +299,14 @@ unsigned int ThreadExecutor::check() std::ostringstream oss; oss << "Internal error: Child process crashed with signal " << WTERMSIG(stat); - std::list locations; + std::list locations; locations.emplace_back(childname, 0, 0); - const ErrorLogger::ErrorMessage errmsg(locations, - emptyString, - Severity::error, - oss.str(), - "cppcheckError", - false); + const ErrorMessage errmsg(locations, + emptyString, + Severity::error, + oss.str(), + "cppcheckError", + false); if (!mSettings.nomsg.isSuppressed(errmsg.toSuppressionsErrorMessage())) mErrorLogger.reportErr(errmsg); @@ -344,12 +344,12 @@ void ThreadExecutor::reportOut(const std::string &outmsg) writeToPipe(REPORT_OUT, outmsg); } -void ThreadExecutor::reportErr(const ErrorLogger::ErrorMessage &msg) +void ThreadExecutor::reportErr(const ErrorMessage &msg) { writeToPipe(REPORT_ERROR, msg.serialize()); } -void ThreadExecutor::reportInfo(const ErrorLogger::ErrorMessage &msg) +void ThreadExecutor::reportInfo(const ErrorMessage &msg) { writeToPipe(REPORT_INFO, msg.serialize()); } @@ -496,12 +496,12 @@ void ThreadExecutor::reportOut(const std::string &outmsg) LeaveCriticalSection(&mReportSync); } -void ThreadExecutor::reportErr(const ErrorLogger::ErrorMessage &msg) +void ThreadExecutor::reportErr(const ErrorMessage &msg) { report(msg, MessageType::REPORT_ERROR); } -void ThreadExecutor::reportInfo(const ErrorLogger::ErrorMessage &msg) +void ThreadExecutor::reportInfo(const ErrorMessage &msg) { } @@ -511,7 +511,7 @@ void ThreadExecutor::bughuntingReport(const std::string &/*str*/) // TODO } -void ThreadExecutor::report(const ErrorLogger::ErrorMessage &msg, MessageType msgType) +void ThreadExecutor::report(const ErrorMessage &msg, MessageType msgType) { if (mSettings.nomsg.isSuppressed(msg.toSuppressionsErrorMessage())) return; @@ -559,12 +559,12 @@ void ThreadExecutor::reportOut(const std::string &/*outmsg*/) { } -void ThreadExecutor::reportErr(const ErrorLogger::ErrorMessage &/*msg*/) +void ThreadExecutor::reportErr(const ErrorMessage &/*msg*/) { } -void ThreadExecutor::reportInfo(const ErrorLogger::ErrorMessage &/*msg*/) +void ThreadExecutor::reportInfo(const ErrorMessage &/*msg*/) { } diff --git a/cli/threadexecutor.h b/cli/threadexecutor.h index 23ea1b3c5..888450873 100644 --- a/cli/threadexecutor.h +++ b/cli/threadexecutor.h @@ -54,8 +54,8 @@ public: unsigned int check(); void reportOut(const std::string &outmsg) OVERRIDE; - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE; - void reportInfo(const ErrorLogger::ErrorMessage &msg) OVERRIDE; + void reportErr(const ErrorMessage &msg) OVERRIDE; + void reportInfo(const ErrorMessage &msg) OVERRIDE; void bughuntingReport(const std::string &str) OVERRIDE; /** @@ -129,7 +129,7 @@ private: CRITICAL_SECTION mReportSync; - void report(const ErrorLogger::ErrorMessage &msg, MessageType msgType); + void report(const ErrorMessage &msg, MessageType msgType); static unsigned __stdcall threadProc(void*); diff --git a/democlient/democlient.cpp b/democlient/democlient.cpp index 6308e4073..dcd4af73d 100644 --- a/democlient/democlient.cpp +++ b/democlient/democlient.cpp @@ -45,7 +45,7 @@ public: } void reportOut(const std::string &outmsg) override { } - void reportErr(const ErrorLogger::ErrorMessage &msg) override { + void reportErr(const ErrorMessage &msg) override { const std::string s = msg.toString(true); std::cout << s << std::endl; diff --git a/gui/applicationdialog.h b/gui/applicationdialog.h index ad45ac2a9..b427c6ea5 100644 --- a/gui/applicationdialog.h +++ b/gui/applicationdialog.h @@ -21,10 +21,10 @@ #include #include -#include "application.h" #include "ui_application.h" class QWidget; +class Application; /// @addtogroup GUI /// @{ diff --git a/gui/checkthread.cpp b/gui/checkthread.cpp index e58545b4a..adea526db 100644 --- a/gui/checkthread.cpp +++ b/gui/checkthread.cpp @@ -395,14 +395,14 @@ void CheckThread::parseClangErrors(const QString &tool, const QString &file0, QS if (isSuppressed(errorMessage)) continue; - std::list callstack; + std::list callstack; foreach (const QErrorPathItem &path, e.errorPath) { - callstack.push_back(ErrorLogger::ErrorMessage::FileLocation(path.file.toStdString(), path.info.toStdString(), path.line, path.column)); + callstack.push_back(ErrorMessage::FileLocation(path.file.toStdString(), path.info.toStdString(), path.line, path.column)); } const std::string f0 = file0.toStdString(); const std::string msg = e.message.toStdString(); const std::string id = e.errorId.toStdString(); - ErrorLogger::ErrorMessage errmsg(callstack, f0, e.severity, msg, id, false); + ErrorMessage errmsg(callstack, f0, e.severity, msg, id, false); mResult.reportErr(errmsg); } } diff --git a/gui/erroritem.cpp b/gui/erroritem.cpp index 56c9af12a..acf420204 100644 --- a/gui/erroritem.cpp +++ b/gui/erroritem.cpp @@ -19,7 +19,7 @@ #include "erroritem.h" #include "common.h" -QErrorPathItem::QErrorPathItem(const ErrorLogger::ErrorMessage::FileLocation &loc) +QErrorPathItem::QErrorPathItem(const ErrorMessage::FileLocation &loc) : file(QString::fromStdString(loc.getfile(false))) , line(loc.line) , column(loc.column) @@ -40,7 +40,7 @@ ErrorItem::ErrorItem() { } -ErrorItem::ErrorItem(const ErrorLogger::ErrorMessage &errmsg) +ErrorItem::ErrorItem(const ErrorMessage &errmsg) : file0(QString::fromStdString(errmsg.file0)) , function(QString::fromStdString(errmsg.function)) , errorId(QString::fromStdString(errmsg.id)) @@ -52,7 +52,7 @@ ErrorItem::ErrorItem(const ErrorLogger::ErrorMessage &errmsg) , cwe(errmsg.cwe.id) , symbolNames(QString::fromStdString(errmsg.symbolNames())) { - for (std::list::const_iterator loc = errmsg.callStack.begin(); + for (std::list::const_iterator loc = errmsg.callStack.begin(); loc != errmsg.callStack.end(); ++loc) { errorPath << QErrorPathItem(*loc); diff --git a/gui/erroritem.h b/gui/erroritem.h index 3dc7c0866..96ed90e7d 100644 --- a/gui/erroritem.h +++ b/gui/erroritem.h @@ -50,7 +50,7 @@ public: class QErrorPathItem { public: QErrorPathItem() : line(0), column(-1) {} - explicit QErrorPathItem(const ErrorLogger::ErrorMessage::FileLocation &loc); + explicit QErrorPathItem(const ErrorMessage::FileLocation &loc); QString file; int line; int column; @@ -70,7 +70,7 @@ bool operator==(const QErrorPathItem &i1, const QErrorPathItem &i2); class ErrorItem { public: ErrorItem(); - explicit ErrorItem(const ErrorLogger::ErrorMessage &errmsg); + explicit ErrorItem(const ErrorMessage &errmsg); /** * @brief Convert error item to string. diff --git a/gui/newsuppressiondialog.cpp b/gui/newsuppressiondialog.cpp index 6f7039aa0..522599655 100644 --- a/gui/newsuppressiondialog.cpp +++ b/gui/newsuppressiondialog.cpp @@ -13,7 +13,7 @@ NewSuppressionDialog::NewSuppressionDialog(QWidget *parent) : class QErrorLogger : public ErrorLogger { public: void reportOut(const std::string &/*outmsg*/) override {} - void reportErr(const ErrorLogger::ErrorMessage &msg) override { + void reportErr(const ErrorMessage &msg) override { errorIds << QString::fromStdString(msg.id); } void bughuntingReport(const std::string &/*str*/) override {} diff --git a/gui/resultstree.h b/gui/resultstree.h index cb4cfa1b2..71c237bb5 100644 --- a/gui/resultstree.h +++ b/gui/resultstree.h @@ -25,7 +25,7 @@ #include #include #include -#include "errorlogger.h" // Severity +#include "errortypes.h" #include "showtypes.h" class ApplicationList; diff --git a/gui/showtypes.cpp b/gui/showtypes.cpp index 16515a809..e0bad4b0c 100644 --- a/gui/showtypes.cpp +++ b/gui/showtypes.cpp @@ -19,7 +19,6 @@ #include #include "common.h" #include "showtypes.h" -#include "errorlogger.h" ShowTypes::ShowTypes() { diff --git a/gui/showtypes.h b/gui/showtypes.h index d0c4318ef..930d70f1d 100644 --- a/gui/showtypes.h +++ b/gui/showtypes.h @@ -19,8 +19,9 @@ #ifndef SHOWTYPES_H #define SHOWTYPES_H +#include "errortypes.h" + #include -#include "errorlogger.h" /// @addtogroup GUI /// @{ diff --git a/gui/test/benchmark/simple/benchmarksimple.cpp b/gui/test/benchmark/simple/benchmarksimple.cpp index f84fe168d..de15b2555 100644 --- a/gui/test/benchmark/simple/benchmarksimple.cpp +++ b/gui/test/benchmark/simple/benchmarksimple.cpp @@ -25,7 +25,6 @@ #include "tokenize.h" #include "token.h" #include "settings.h" -#include "errorlogger.h" void BenchmarkSimple::tokenize() { diff --git a/gui/test/benchmark/simple/benchmarksimple.h b/gui/test/benchmark/simple/benchmarksimple.h index f5f89c178..afd29ea8e 100644 --- a/gui/test/benchmark/simple/benchmarksimple.h +++ b/gui/test/benchmark/simple/benchmarksimple.h @@ -33,6 +33,6 @@ private: // We don't care about the output in the benchmark tests. void reportOut(const std::string & outmsg) override { } - void reportErr(const ErrorLogger::ErrorMessage &msg) override { + void reportErr(const ErrorMessage &msg) override { } }; diff --git a/gui/test/xmlreportv2/testxmlreportv2.cpp b/gui/test/xmlreportv2/testxmlreportv2.cpp index 4b55186fb..0ff6d21e8 100644 --- a/gui/test/xmlreportv2/testxmlreportv2.cpp +++ b/gui/test/xmlreportv2/testxmlreportv2.cpp @@ -20,7 +20,6 @@ #include "testxmlreportv2.h" #include "xmlreportv2.h" #include "erroritem.h" -#include "errorlogger.h" void TestXmlReportV2::readXml() { diff --git a/gui/threadresult.cpp b/gui/threadresult.cpp index 87b7a217e..7705f0e48 100644 --- a/gui/threadresult.cpp +++ b/gui/threadresult.cpp @@ -57,7 +57,7 @@ void ThreadResult::fileChecked(const QString &file) } } -void ThreadResult::reportErr(const ErrorLogger::ErrorMessage &msg) +void ThreadResult::reportErr(const ErrorMessage &msg) { QMutexLocker locker(&mutex); const ErrorItem item(msg); diff --git a/gui/threadresult.h b/gui/threadresult.h index afdfc9683..6094f115e 100644 --- a/gui/threadresult.h +++ b/gui/threadresult.h @@ -73,7 +73,7 @@ public: * ErrorLogger methods */ void reportOut(const std::string &outmsg) override; - void reportErr(const ErrorLogger::ErrorMessage &msg) override; + void reportErr(const ErrorMessage &msg) override; void bughuntingReport(const std::string &str) override; public slots: diff --git a/lib/analyzerinfo.cpp b/lib/analyzerinfo.cpp index 35f60f943..460d9cf16 100644 --- a/lib/analyzerinfo.cpp +++ b/lib/analyzerinfo.cpp @@ -18,6 +18,7 @@ #include "analyzerinfo.h" +#include "errorlogger.h" #include "path.h" #include "utils.h" @@ -75,7 +76,7 @@ void AnalyzerInformation::close() } } -static bool skipAnalysis(const std::string &analyzerInfoFile, unsigned long long checksum, std::list *errors) +static bool skipAnalysis(const std::string &analyzerInfoFile, unsigned long long checksum, std::list *errors) { tinyxml2::XMLDocument doc; const tinyxml2::XMLError error = doc.LoadFile(analyzerInfoFile.c_str()); @@ -128,7 +129,7 @@ std::string AnalyzerInformation::getAnalyzerInfoFile(const std::string &buildDir return filename; } -bool AnalyzerInformation::analyzeFile(const std::string &buildDir, const std::string &sourcefile, const std::string &cfg, unsigned long long checksum, std::list *errors) +bool AnalyzerInformation::analyzeFile(const std::string &buildDir, const std::string &sourcefile, const std::string &cfg, unsigned long long checksum, std::list *errors) { if (buildDir.empty() || sourcefile.empty()) return true; @@ -150,7 +151,7 @@ bool AnalyzerInformation::analyzeFile(const std::string &buildDir, const std::st return true; } -void AnalyzerInformation::reportErr(const ErrorLogger::ErrorMessage &msg, bool /*verbose*/) +void AnalyzerInformation::reportErr(const ErrorMessage &msg, bool /*verbose*/) { if (mOutputStream.is_open()) mOutputStream << msg.toXML() << '\n'; diff --git a/lib/analyzerinfo.h b/lib/analyzerinfo.h index 338d22550..ccd906040 100644 --- a/lib/analyzerinfo.h +++ b/lib/analyzerinfo.h @@ -22,13 +22,14 @@ //--------------------------------------------------------------------------- #include "config.h" -#include "errorlogger.h" #include "importproject.h" #include #include #include +class ErrorMessage; + /// @addtogroup Core /// @{ @@ -53,8 +54,8 @@ public: /** Close current TU.analyzerinfo file */ void close(); - bool analyzeFile(const std::string &buildDir, const std::string &sourcefile, const std::string &cfg, unsigned long long checksum, std::list *errors); - void reportErr(const ErrorLogger::ErrorMessage &msg, bool verbose); + bool analyzeFile(const std::string &buildDir, const std::string &sourcefile, const std::string &cfg, unsigned long long checksum, std::list *errors); + void reportErr(const ErrorMessage &msg, bool verbose); void setFileInfo(const std::string &check, const std::string &fileInfo); static std::string getAnalyzerInfoFile(const std::string &buildDir, const std::string &sourcefile, const std::string &cfg); private: diff --git a/lib/astutils.h b/lib/astutils.h index 8ba50af46..a2af32a43 100644 --- a/lib/astutils.h +++ b/lib/astutils.h @@ -27,7 +27,7 @@ #include #include -#include "errorlogger.h" +#include "errortypes.h" #include "utils.h" class Library; diff --git a/lib/check.cpp b/lib/check.cpp index bcd3d8ed1..0b78a4b9f 100644 --- a/lib/check.cpp +++ b/lib/check.cpp @@ -19,7 +19,10 @@ //--------------------------------------------------------------------------- #include "check.h" + +#include "errorlogger.h" #include "settings.h" +#include "tokenize.h" #include @@ -37,11 +40,30 @@ Check::Check(const std::string &aname) instances().push_back(this); } -void Check::reportError(const ErrorLogger::ErrorMessage &errmsg) +void Check::reportError(const ErrorMessage &errmsg) { std::cout << errmsg.toXML() << std::endl; } + +void Check::reportError(const std::list &callstack, Severity::SeverityType severity, const std::string &id, const std::string &msg, const CWE &cwe, bool inconclusive) +{ + const ErrorMessage errmsg(callstack, mTokenizer ? &mTokenizer->list : nullptr, severity, id, msg, cwe, inconclusive); + if (mErrorLogger) + mErrorLogger->reportErr(errmsg); + else + reportError(errmsg); +} + +void Check::reportError(const ErrorPath &errorPath, Severity::SeverityType severity, const char id[], const std::string &msg, const CWE &cwe, bool inconclusive) +{ + const ErrorMessage errmsg(errorPath, mTokenizer ? &mTokenizer->list : nullptr, severity, id, msg, cwe, inconclusive); + if (mErrorLogger) + mErrorLogger->reportErr(errmsg); + else + reportError(errmsg); +} + bool Check::wrongData(const Token *tok, bool condition, const char *str) { #if defined(DACA2) || defined(UNSTABLE) diff --git a/lib/check.h b/lib/check.h index 5372f3889..8e1d1c979 100644 --- a/lib/check.h +++ b/lib/check.h @@ -22,8 +22,7 @@ //--------------------------------------------------------------------------- #include "config.h" -#include "errorlogger.h" // for Severity::SeverityType -#include "tokenize.h" +#include "errortypes.h" #include #include @@ -43,6 +42,8 @@ namespace ValueFlow { class Settings; class Token; class ErrorLogger; +class ErrorMessage; +class Tokenizer; /** Use WRONG_DATA in checkers to mark conditions that check that data is correct */ #define WRONG_DATA(COND, TOK) (wrongData((TOK), (COND), #COND)) @@ -91,7 +92,7 @@ public: * This is for for printout out the error list with --errorlist * @param errmsg Error message to write */ - static void reportError(const ErrorLogger::ErrorMessage &errmsg); + static void reportError(const ErrorMessage &errmsg); /** Base class used for whole-program analysis */ class CPPCHECKLIB FileInfo { @@ -115,11 +116,11 @@ public: } // Return true if an error is reported. - virtual bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list &fileInfo, const Settings& /*settings*/, ErrorLogger &errorLogger) { + virtual bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list &fileInfo, const Settings& /*settings*/, ErrorLogger &/*errorLogger*/) { (void)ctu; (void)fileInfo; //(void)settings; - (void)errorLogger; + //(void)errorLogger; return false; } @@ -147,21 +148,9 @@ protected: } /** report an error */ - void reportError(const std::list &callstack, Severity::SeverityType severity, const std::string &id, const std::string &msg, const CWE &cwe, bool inconclusive) { - const ErrorLogger::ErrorMessage errmsg(callstack, mTokenizer ? &mTokenizer->list : nullptr, severity, id, msg, cwe, inconclusive); - if (mErrorLogger) - mErrorLogger->reportErr(errmsg); - else - reportError(errmsg); - } + void reportError(const std::list &callstack, Severity::SeverityType severity, const std::string &id, const std::string &msg, const CWE &cwe, bool inconclusive); - void reportError(const ErrorPath &errorPath, Severity::SeverityType severity, const char id[], const std::string &msg, const CWE &cwe, bool inconclusive) { - const ErrorLogger::ErrorMessage errmsg(errorPath, mTokenizer ? &mTokenizer->list : nullptr, severity, id, msg, cwe, inconclusive); - if (mErrorLogger) - mErrorLogger->reportErr(errmsg); - else - reportError(errmsg); - } + void reportError(const ErrorPath &errorPath, Severity::SeverityType severity, const char id[], const std::string &msg, const CWE &cwe, bool inconclusive); ErrorPath getErrorPath(const Token* errtok, const ValueFlow::Value* value, const std::string& bug) const; diff --git a/lib/check64bit.cpp b/lib/check64bit.cpp index 146fc8399..22b0e4043 100644 --- a/lib/check64bit.cpp +++ b/lib/check64bit.cpp @@ -22,7 +22,6 @@ #include "check64bit.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkassert.cpp b/lib/checkassert.cpp index 4766fb010..249337dd9 100644 --- a/lib/checkassert.cpp +++ b/lib/checkassert.cpp @@ -22,7 +22,6 @@ #include "checkassert.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkautovariables.cpp b/lib/checkautovariables.cpp index f3b5dbe91..88521f0e1 100644 --- a/lib/checkautovariables.cpp +++ b/lib/checkautovariables.cpp @@ -23,7 +23,6 @@ #include "checkautovariables.h" #include "astutils.h" -#include "errorlogger.h" #include "library.h" #include "settings.h" #include "symboldatabase.h" diff --git a/lib/checkautovariables.h b/lib/checkautovariables.h index 8796e485f..7087aacef 100644 --- a/lib/checkautovariables.h +++ b/lib/checkautovariables.h @@ -24,13 +24,15 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" #include class Settings; class Token; class Tokenizer; +class ErrorLogger; +class Variable; /// @addtogroup Checks /** @brief Various small checks for automatic variables */ diff --git a/lib/checkbool.cpp b/lib/checkbool.cpp index 2d92c5208..4e418a470 100644 --- a/lib/checkbool.cpp +++ b/lib/checkbool.cpp @@ -21,7 +21,6 @@ #include "checkbool.h" #include "astutils.h" -#include "errorlogger.h" #include "mathlib.h" #include "settings.h" #include "symboldatabase.h" diff --git a/lib/checkboost.cpp b/lib/checkboost.cpp index b0fbd339d..d53f452a5 100644 --- a/lib/checkboost.cpp +++ b/lib/checkboost.cpp @@ -18,7 +18,6 @@ #include "checkboost.h" -#include "errorlogger.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkbufferoverrun.cpp b/lib/checkbufferoverrun.cpp index 5150ae763..21f69612e 100644 --- a/lib/checkbufferoverrun.cpp +++ b/lib/checkbufferoverrun.cpp @@ -23,6 +23,7 @@ #include "checkbufferoverrun.h" #include "astutils.h" +#include "errorlogger.h" #include "library.h" #include "mathlib.h" #include "settings.h" @@ -847,7 +848,7 @@ bool CheckBufferOverrun::analyseWholeProgram1(const CTU::FileInfo *ctu, const st { const CTU::FileInfo::FunctionCall *functionCall = nullptr; - const std::list &locationList = + const std::list &locationList = ctu->getErrorPath(CTU::FileInfo::InvalidValueType::bufferOverflow, unsafeUsage, callsMap, @@ -874,12 +875,12 @@ bool CheckBufferOverrun::analyseWholeProgram1(const CTU::FileInfo *ctu, const st cwe = CWE_POINTER_ARITHMETIC_OVERFLOW; } - const ErrorLogger::ErrorMessage errorMessage(locationList, - emptyString, - Severity::error, - errmsg, - errorId, - cwe, false); + const ErrorMessage errorMessage(locationList, + emptyString, + Severity::error, + errmsg, + errorId, + cwe, false); errorLogger.reportErr(errorMessage); return true; diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index b2a5be4f4..ef3e8fe91 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -20,11 +20,11 @@ #include "checkclass.h" #include "astutils.h" -#include "errorlogger.h" #include "library.h" #include "settings.h" #include "standards.h" #include "symboldatabase.h" +#include "errortypes.h" #include "token.h" #include "tokenize.h" #include "utils.h" diff --git a/lib/checkcondition.cpp b/lib/checkcondition.cpp index 51c8f4834..ec9b33c39 100644 --- a/lib/checkcondition.cpp +++ b/lib/checkcondition.cpp @@ -23,7 +23,6 @@ #include "checkcondition.h" #include "astutils.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkcondition.h b/lib/checkcondition.h index 0aecbe270..c3ec666bd 100644 --- a/lib/checkcondition.h +++ b/lib/checkcondition.h @@ -24,14 +24,17 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" #include "mathlib.h" +#include "errortypes.h" +#include "utils.h" +#include #include class Settings; class Token; class Tokenizer; +class ErrorLogger; /// @addtogroup Checks /// @{ diff --git a/lib/checkexceptionsafety.h b/lib/checkexceptionsafety.h index bf5bda419..c6db4b682 100644 --- a/lib/checkexceptionsafety.h +++ b/lib/checkexceptionsafety.h @@ -23,7 +23,7 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" #include "token.h" #include "tokenize.h" @@ -31,6 +31,7 @@ #include class Settings; +class ErrorLogger; // CWE ID used: static const struct CWE CWE398(398U); // Indicator of Poor Code Quality diff --git a/lib/checkfunctions.h b/lib/checkfunctions.h index 80f709e02..242570126 100644 --- a/lib/checkfunctions.h +++ b/lib/checkfunctions.h @@ -24,9 +24,9 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" #include "library.h" #include "settings.h" +#include "errortypes.h" #include #include @@ -34,6 +34,8 @@ class Token; class Tokenizer; +class ErrorLogger; + namespace ValueFlow { class Value; } // namespace ValueFlow diff --git a/lib/checkinternal.cpp b/lib/checkinternal.cpp index d633eb7bf..14eb16cd9 100644 --- a/lib/checkinternal.cpp +++ b/lib/checkinternal.cpp @@ -21,7 +21,6 @@ #include "checkinternal.h" #include "astutils.h" -#include "errorlogger.h" #include "symboldatabase.h" #include "token.h" #include "tokenize.h" diff --git a/lib/checkio.h b/lib/checkio.h index fe63d18c5..7019e31f6 100644 --- a/lib/checkio.h +++ b/lib/checkio.h @@ -23,7 +23,8 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" +#include "utils.h" #include #include @@ -33,6 +34,7 @@ class Settings; class Token; class Tokenizer; class Variable; +class ErrorLogger; /// @addtogroup Checks /// @{ diff --git a/lib/checkleakautovar.cpp b/lib/checkleakautovar.cpp index 13091884a..7400f39b4 100644 --- a/lib/checkleakautovar.cpp +++ b/lib/checkleakautovar.cpp @@ -25,9 +25,9 @@ #include "astutils.h" #include "checkmemoryleak.h" // <- CheckMemoryLeak::memoryLeak #include "checknullpointer.h" // <- CheckNullPointer::isPointerDeRef -#include "errorlogger.h" #include "mathlib.h" #include "settings.h" +#include "errortypes.h" #include "symboldatabase.h" #include "token.h" #include "tokenize.h" diff --git a/lib/checkleakautovar.h b/lib/checkleakautovar.h index 4808e4784..fc76342ae 100644 --- a/lib/checkleakautovar.h +++ b/lib/checkleakautovar.h @@ -25,6 +25,7 @@ #include "check.h" #include "config.h" #include "library.h" +#include "utils.h" #include #include diff --git a/lib/checkmemoryleak.cpp b/lib/checkmemoryleak.cpp index 81397219c..a4dc0ee4d 100644 --- a/lib/checkmemoryleak.cpp +++ b/lib/checkmemoryleak.cpp @@ -20,6 +20,7 @@ #include "checkmemoryleak.h" #include "astutils.h" +#include "errorlogger.h" #include "library.h" #include "settings.h" #include "symboldatabase.h" @@ -296,7 +297,7 @@ void CheckMemoryLeak::reportErr(const Token *tok, Severity::SeverityType severit void CheckMemoryLeak::reportErr(const std::list &callstack, Severity::SeverityType severity, const std::string &id, const std::string &msg, const CWE &cwe) const { - const ErrorLogger::ErrorMessage errmsg(callstack, mTokenizer_ ? &mTokenizer_->list : nullptr, severity, id, msg, cwe, false); + const ErrorMessage errmsg(callstack, mTokenizer_ ? &mTokenizer_->list : nullptr, severity, id, msg, cwe, false); if (mErrorLogger_) mErrorLogger_->reportErr(errmsg); else diff --git a/lib/checkmemoryleak.h b/lib/checkmemoryleak.h index 81990005c..65055ff72 100644 --- a/lib/checkmemoryleak.h +++ b/lib/checkmemoryleak.h @@ -34,7 +34,7 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" #include "tokenize.h" #include @@ -45,6 +45,7 @@ class Scope; class Settings; class Token; class Variable; +class ErrorLogger; /// @addtogroup Core /// @{ diff --git a/lib/checknullpointer.cpp b/lib/checknullpointer.cpp index 2a7c2b32d..324d7a6ce 100644 --- a/lib/checknullpointer.cpp +++ b/lib/checknullpointer.cpp @@ -590,7 +590,7 @@ bool CheckNullPointer::analyseWholeProgram(const CTU::FileInfo *ctu, const std:: if (warning == 1 && !settings.isEnabled(Settings::WARNING)) break; - const std::list &locationList = + const std::list &locationList = ctu->getErrorPath(CTU::FileInfo::InvalidValueType::null, unsafeUsage, callsMap, @@ -600,12 +600,12 @@ bool CheckNullPointer::analyseWholeProgram(const CTU::FileInfo *ctu, const std:: if (locationList.empty()) continue; - const ErrorLogger::ErrorMessage errmsg(locationList, - emptyString, - warning ? Severity::warning : Severity::error, - "Null pointer dereference: " + unsafeUsage.myArgumentName, - "ctunullpointer", - CWE_NULL_POINTER_DEREFERENCE, false); + const ErrorMessage errmsg(locationList, + emptyString, + warning ? Severity::warning : Severity::error, + "Null pointer dereference: " + unsafeUsage.myArgumentName, + "ctunullpointer", + CWE_NULL_POINTER_DEREFERENCE, false); errorLogger.reportErr(errmsg); foundErrors = true; diff --git a/lib/checkother.cpp b/lib/checkother.cpp index de61a0cae..c56affd2f 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -19,10 +19,10 @@ //--------------------------------------------------------------------------- #include "checkother.h" + #include "checkuninitvar.h" // CheckUninitVar::isVariableUsage #include "astutils.h" -#include "errorlogger.h" #include "library.h" #include "mathlib.h" #include "settings.h" diff --git a/lib/checkother.h b/lib/checkother.h index 5fc43af31..0d1e1a323 100644 --- a/lib/checkother.h +++ b/lib/checkother.h @@ -24,7 +24,7 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" #include "utils.h" #include @@ -39,6 +39,7 @@ class Settings; class Token; class Tokenizer; class Variable; +class ErrorLogger; /// @addtogroup Checks /// @{ diff --git a/lib/checkpostfixoperator.cpp b/lib/checkpostfixoperator.cpp index 60c1d009d..62e723701 100644 --- a/lib/checkpostfixoperator.cpp +++ b/lib/checkpostfixoperator.cpp @@ -23,7 +23,6 @@ #include "checkpostfixoperator.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checksizeof.cpp b/lib/checksizeof.cpp index af5db8268..4332ca9ae 100644 --- a/lib/checksizeof.cpp +++ b/lib/checksizeof.cpp @@ -20,7 +20,6 @@ //--------------------------------------------------------------------------- #include "checksizeof.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkstl.cpp b/lib/checkstl.cpp index 25d726af4..0a04cb7b5 100644 --- a/lib/checkstl.cpp +++ b/lib/checkstl.cpp @@ -18,7 +18,6 @@ #include "checkstl.h" -#include "errorlogger.h" #include "library.h" #include "mathlib.h" #include "settings.h" diff --git a/lib/checkstl.h b/lib/checkstl.h index 53248d840..d332d0b61 100644 --- a/lib/checkstl.h +++ b/lib/checkstl.h @@ -24,7 +24,7 @@ #include "check.h" #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" #include "tokenize.h" #include "utils.h" #include "valueflow.h" @@ -35,6 +35,7 @@ class Scope; class Settings; class Token; class Variable; +class ErrorLogger; /// @addtogroup Checks diff --git a/lib/checkstring.cpp b/lib/checkstring.cpp index bbc735c4d..bd70fb60f 100644 --- a/lib/checkstring.cpp +++ b/lib/checkstring.cpp @@ -21,7 +21,6 @@ #include "checkstring.h" #include "astutils.h" -#include "errorlogger.h" #include "mathlib.h" #include "settings.h" #include "symboldatabase.h" diff --git a/lib/checktype.cpp b/lib/checktype.cpp index 0d55bbd52..44b29ad85 100644 --- a/lib/checktype.cpp +++ b/lib/checktype.cpp @@ -20,7 +20,6 @@ //--------------------------------------------------------------------------- #include "checktype.h" -#include "errorlogger.h" #include "mathlib.h" #include "platform.h" #include "settings.h" diff --git a/lib/checkuninitvar.cpp b/lib/checkuninitvar.cpp index 7f0429ea4..c28a56793 100644 --- a/lib/checkuninitvar.cpp +++ b/lib/checkuninitvar.cpp @@ -1440,7 +1440,7 @@ bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo *ctu, const std::li for (const CTU::FileInfo::UnsafeUsage &unsafeUsage : fi->unsafeUsage) { const CTU::FileInfo::FunctionCall *functionCall = nullptr; - const std::list &locationList = + const std::list &locationList = ctu->getErrorPath(CTU::FileInfo::InvalidValueType::uninit, unsafeUsage, callsMap, @@ -1450,13 +1450,13 @@ bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo *ctu, const std::li if (locationList.empty()) continue; - const ErrorLogger::ErrorMessage errmsg(locationList, - emptyString, - Severity::error, - "Using argument " + unsafeUsage.myArgumentName + " that points at uninitialized variable " + functionCall->callArgumentExpression, - "ctuuninitvar", - CWE_USE_OF_UNINITIALIZED_VARIABLE, - false); + const ErrorMessage errmsg(locationList, + emptyString, + Severity::error, + "Using argument " + unsafeUsage.myArgumentName + " that points at uninitialized variable " + functionCall->callArgumentExpression, + "ctuuninitvar", + CWE_USE_OF_UNINITIALIZED_VARIABLE, + false); errorLogger.reportErr(errmsg); foundErrors = true; diff --git a/lib/checkuninitvar.h b/lib/checkuninitvar.h index 8b4ffb48a..1507523a6 100644 --- a/lib/checkuninitvar.h +++ b/lib/checkuninitvar.h @@ -25,9 +25,9 @@ #include "check.h" #include "config.h" #include "ctu.h" -#include "errorlogger.h" #include "mathlib.h" #include "settings.h" +#include "errortypes.h" #include "utils.h" #include @@ -37,6 +37,7 @@ class Scope; class Token; class Tokenizer; class Variable; +class ErrorLogger; struct VariableValue { diff --git a/lib/checkunusedfunctions.cpp b/lib/checkunusedfunctions.cpp index 5a7fe7d1d..d884834fd 100644 --- a/lib/checkunusedfunctions.cpp +++ b/lib/checkunusedfunctions.cpp @@ -328,15 +328,15 @@ void CheckUnusedFunctions::unusedFunctionError(ErrorLogger * const errorLogger, const std::string &filename, unsigned int lineNumber, const std::string &funcname) { - std::list locationList; + std::list locationList; if (!filename.empty()) { - ErrorLogger::ErrorMessage::FileLocation fileLoc; + ErrorMessage::FileLocation fileLoc; fileLoc.setfile(filename); fileLoc.line = lineNumber; locationList.push_back(fileLoc); } - const ErrorLogger::ErrorMessage errmsg(locationList, emptyString, Severity::style, "$symbol:" + funcname + "\nThe function '$symbol' is never used.", "unusedFunction", CWE561, false); + const ErrorMessage errmsg(locationList, emptyString, Severity::style, "$symbol:" + funcname + "\nThe function '$symbol' is never used.", "unusedFunction", CWE561, false); if (errorLogger) errorLogger->reportErr(errmsg); else diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index be95b223a..ba65f8ea0 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -21,7 +21,6 @@ #include "checkunusedvar.h" #include "astutils.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkvaarg.cpp b/lib/checkvaarg.cpp index d6e835630..9a0b8773e 100644 --- a/lib/checkvaarg.cpp +++ b/lib/checkvaarg.cpp @@ -19,7 +19,6 @@ #include "checkvaarg.h" #include "astutils.h" -#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 1fa6cf46d..3c9fa4607 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -273,7 +273,7 @@ const char * CppCheck::extraVersion() return ExtraVersion; } -static bool reportClangErrors(std::istream &is, std::function reportErr) +static bool reportClangErrors(std::istream &is, std::function reportErr) { std::string line; while (std::getline(is, line)) { @@ -298,18 +298,18 @@ static bool reportClangErrors(std::istream &is, std::function locationList; - ErrorLogger::ErrorMessage::FileLocation loc; + std::list locationList; + ErrorMessage::FileLocation loc; loc.setfile(Path::toNativeSeparators(filename)); loc.line = std::atoi(linenr.c_str()); loc.column = std::atoi(colnr.c_str()); locationList.push_back(loc); - ErrorLogger::ErrorMessage errmsg(locationList, - loc.getfile(), - Severity::error, - msg, - "syntaxError", - false); + ErrorMessage errmsg(locationList, + loc.getfile(), + Severity::error, + msg, + "syntaxError", + false); reportErr(errmsg); return true; @@ -377,14 +377,14 @@ unsigned int CppCheck::check(const std::string &path) // Ensure there are not syntax errors... if (!mSettings.buildDir.empty()) { std::ifstream fin(clangStderr); - auto reportError = [this](const ErrorLogger::ErrorMessage& errorMessage) { + auto reportError = [this](const ErrorMessage& errorMessage) { reportErr(errorMessage); }; if (reportClangErrors(fin, reportError)) return 0; } else { std::istringstream istr(output2); - auto reportError = [this](const ErrorLogger::ErrorMessage& errorMessage) { + auto reportError = [this](const ErrorMessage& errorMessage) { reportErr(errorMessage); }; if (reportClangErrors(istr, reportError)) @@ -500,15 +500,15 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string } if (err) { - const ErrorLogger::ErrorMessage::FileLocation loc1(output.location.file(), output.location.line, output.location.col); - std::list callstack(1, loc1); + const ErrorMessage::FileLocation loc1(output.location.file(), output.location.line, output.location.col); + std::list callstack(1, loc1); - ErrorLogger::ErrorMessage errmsg(callstack, - "", - Severity::error, - output.msg, - "syntaxError", - false); + ErrorMessage errmsg(callstack, + "", + Severity::error, + output.msg, + "syntaxError", + false); reportErr(errmsg); return mExitCode; } @@ -589,7 +589,7 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string // Calculate checksum so it can be compared with old checksum / future checksums const unsigned int checksum = preprocessor.calculateChecksum(tokens1, toolinfo.str()); - std::list errors; + std::list errors; if (!mAnalyzerInformation.analyzeFile(mSettings.buildDir, filename, cfgname, checksum, &errors)) { while (!errors.empty()) { reportErr(errors.front()); @@ -779,22 +779,22 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string continue; } catch (const InternalError &e) { - std::list locationList; + std::list locationList; if (e.token) { - ErrorLogger::ErrorMessage::FileLocation loc(e.token, &mTokenizer.list); + ErrorMessage::FileLocation loc(e.token, &mTokenizer.list); locationList.push_back(loc); } else { - ErrorLogger::ErrorMessage::FileLocation loc(mTokenizer.list.getSourceFilePath(), 0, 0); - ErrorLogger::ErrorMessage::FileLocation loc2(filename, 0, 0); + ErrorMessage::FileLocation loc(mTokenizer.list.getSourceFilePath(), 0, 0); + ErrorMessage::FileLocation loc2(filename, 0, 0); locationList.push_back(loc2); locationList.push_back(loc); } - ErrorLogger::ErrorMessage errmsg(locationList, - mTokenizer.list.getSourceFilePath(), - Severity::error, - e.errorMessage, - e.id, - false); + ErrorMessage errmsg(locationList, + mTokenizer.list.getSourceFilePath(), + Severity::error, + e.errorMessage, + e.id, + false); if (errmsg.severity == Severity::error || mSettings.isEnabled(errmsg.severity)) reportErr(errmsg); @@ -808,16 +808,16 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string for (const std::string &s : configurationError) msg += '\n' + s; - std::list locationList; - ErrorLogger::ErrorMessage::FileLocation loc; + std::list locationList; + ErrorMessage::FileLocation loc; loc.setfile(Path::toNativeSeparators(filename)); locationList.push_back(loc); - ErrorLogger::ErrorMessage errmsg(locationList, - loc.getfile(), - Severity::information, - msg, - "noValidConfiguration", - false); + ErrorMessage errmsg(locationList, + loc.getfile(), + Severity::information, + msg, + "noValidConfiguration", + false); reportErr(errmsg); } @@ -857,9 +857,9 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string const int64_t lineNumber = obj["linenr"].get(); const int64_t column = obj["column"].get(); - ErrorLogger::ErrorMessage errmsg; + ErrorMessage errmsg; - errmsg.callStack.emplace_back(ErrorLogger::ErrorMessage::FileLocation(fileName, lineNumber, column)); + errmsg.callStack.emplace_back(ErrorMessage::FileLocation(fileName, lineNumber, column)); errmsg.id = obj["addon"].get() + "-" + obj["errorId"].get(); const std::string text = obj["message"].get(); @@ -905,15 +905,15 @@ void CppCheck::internalError(const std::string &filename, const std::string &msg const std::string fullmsg("Bailing out from checking " + fixedpath + " since there was an internal error: " + msg); if (mSettings.isEnabled(Settings::INFORMATION)) { - const ErrorLogger::ErrorMessage::FileLocation loc1(filename, 0, 0); - std::list callstack(1, loc1); + const ErrorMessage::FileLocation loc1(filename, 0, 0); + std::list callstack(1, loc1); - ErrorLogger::ErrorMessage errmsg(callstack, - emptyString, - Severity::information, - fullmsg, - "internalError", - false); + ErrorMessage errmsg(callstack, + emptyString, + Severity::information, + fullmsg, + "internalError", + false); mErrorLogger.reportErr(errmsg); } else { @@ -1152,7 +1152,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token if (!re) { if (pcreCompileErrorStr) { const std::string msg = "pcre_compile failed: " + std::string(pcreCompileErrorStr); - const ErrorLogger::ErrorMessage errmsg(std::list(), + const ErrorMessage errmsg(std::list(), emptyString, Severity::error, msg, @@ -1173,7 +1173,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token // It is NULL if everything works, and points to an error string otherwise. if (pcreStudyErrorStr) { const std::string msg = "pcre_study failed: " + std::string(pcreStudyErrorStr); - const ErrorLogger::ErrorMessage errmsg(std::list(), + const ErrorMessage errmsg(std::list(), emptyString, Severity::error, msg, @@ -1196,7 +1196,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token if (pcreExecRet < 0) { const std::string errorMessage = pcreErrorCodeToString(pcreExecRet); if (!errorMessage.empty()) { - const ErrorLogger::ErrorMessage errmsg(std::list(), + const ErrorMessage errmsg(std::list(), emptyString, Severity::error, std::string("pcre_exec failed: ") + errorMessage, @@ -1214,7 +1214,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token pos = (int)pos2; // determine location.. - ErrorLogger::ErrorMessage::FileLocation loc; + ErrorMessage::FileLocation loc; loc.setfile(tokenizer.list.getSourceFilePath()); loc.line = 0; @@ -1228,7 +1228,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token } } - const std::list callStack(1, loc); + const std::list callStack(1, loc); // Create error message std::string summary; @@ -1236,7 +1236,7 @@ void CppCheck::executeRules(const std::string &tokenlist, const Tokenizer &token summary = "found '" + str.substr(pos1, pos2 - pos1) + "'"; else summary = rule.summary; - const ErrorLogger::ErrorMessage errmsg(callStack, tokenizer.list.getSourceFilePath(), rule.severity, summary, rule.id, false); + const ErrorMessage errmsg(callStack, tokenizer.list.getSourceFilePath(), rule.severity, summary, rule.id, false); // Report error reportErr(errmsg); @@ -1268,9 +1268,9 @@ void CppCheck::tooManyConfigsError(const std::string &file, const std::size_t nu if (mSettings.isEnabled(Settings::INFORMATION) && file.empty()) return; - std::list loclist; + std::list loclist; if (!file.empty()) { - ErrorLogger::ErrorMessage::FileLocation location; + ErrorMessage::FileLocation location; location.setfile(file); loclist.push_back(location); } @@ -1289,12 +1289,12 @@ void CppCheck::tooManyConfigsError(const std::string &file, const std::size_t nu msg << " For more details, use --enable=information."; - ErrorLogger::ErrorMessage errmsg(loclist, - emptyString, - Severity::information, - msg.str(), - "toomanyconfigs", CWE398, - false); + ErrorMessage errmsg(loclist, + emptyString, + Severity::information, + msg.str(), + "toomanyconfigs", CWE398, + false); reportErr(errmsg); } @@ -1306,26 +1306,26 @@ void CppCheck::purgedConfigurationMessage(const std::string &file, const std::st if (mSettings.isEnabled(Settings::INFORMATION) && file.empty()) return; - std::list loclist; + std::list loclist; if (!file.empty()) { - ErrorLogger::ErrorMessage::FileLocation location; + ErrorMessage::FileLocation location; location.setfile(file); loclist.push_back(location); } - ErrorLogger::ErrorMessage errmsg(loclist, - emptyString, - Severity::information, - "The configuration '" + configuration + "' was not checked because its code equals another one.", - "purgedConfiguration", - false); + ErrorMessage errmsg(loclist, + emptyString, + Severity::information, + "The configuration '" + configuration + "' was not checked because its code equals another one.", + "purgedConfiguration", + false); reportErr(errmsg); } //--------------------------------------------------------------------------- -void CppCheck::reportErr(const ErrorLogger::ErrorMessage &msg) +void CppCheck::reportErr(const ErrorMessage &msg) { mSuppressInternalErrorFound = false; @@ -1377,7 +1377,7 @@ void CppCheck::reportProgress(const std::string &filename, const char stage[], c mErrorLogger.reportProgress(filename, stage, value); } -void CppCheck::reportInfo(const ErrorLogger::ErrorMessage &msg) +void CppCheck::reportInfo(const ErrorMessage &msg) { const Suppressions::ErrorMessage &errorMessage = msg.toSuppressionsErrorMessage(); if (!mSettings.nomsg.isSuppressed(errorMessage)) @@ -1474,8 +1474,8 @@ void CppCheck::analyseClangTidy(const ImportProject::FileSettings &fileSettings) const int64_t column = std::atol(columnNumString.c_str()); fixedpath = Path::toNativeSeparators(fixedpath); - ErrorLogger::ErrorMessage errmsg; - errmsg.callStack.emplace_back(ErrorLogger::ErrorMessage::FileLocation(fixedpath, lineNumber, column)); + ErrorMessage errmsg; + errmsg.callStack.emplace_back(ErrorMessage::FileLocation(fixedpath, lineNumber, column)); errmsg.id = "clang-tidy-" + errorString.substr(1, errorString.length() - 2); if (errmsg.id.find("performance") != std::string::npos) diff --git a/lib/cppcheck.h b/lib/cppcheck.h index ecab05713..fbdd95b18 100644 --- a/lib/cppcheck.h +++ b/lib/cppcheck.h @@ -29,6 +29,7 @@ #include "settings.h" #include +#include #include #include #include @@ -191,7 +192,7 @@ private: * "[filepath:line number] Message", e.g. * "[main.cpp:4] Uninitialized member variable" */ - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE; + void reportErr(const ErrorMessage &msg) OVERRIDE; /** * @brief Information about progress is directed here. @@ -210,7 +211,7 @@ private: /** * Output information messages. */ - void reportInfo(const ErrorLogger::ErrorMessage &msg) OVERRIDE; + void reportInfo(const ErrorMessage &msg) OVERRIDE; ErrorLogger &mErrorLogger; diff --git a/lib/cppcheck.vcxproj b/lib/cppcheck.vcxproj index e38b26a1b..7b0dc06df 100644 --- a/lib/cppcheck.vcxproj +++ b/lib/cppcheck.vcxproj @@ -78,6 +78,7 @@ + diff --git a/lib/cppcheck.vcxproj.filters b/lib/cppcheck.vcxproj.filters index 3fbe2118f..7096f74c5 100644 --- a/lib/cppcheck.vcxproj.filters +++ b/lib/cppcheck.vcxproj.filters @@ -59,6 +59,9 @@ Source Files + + Source Files + Source Files diff --git a/lib/ctu.cpp b/lib/ctu.cpp index 0245c0020..38996dd73 100644 --- a/lib/ctu.cpp +++ b/lib/ctu.cpp @@ -22,6 +22,8 @@ #include "astutils.h" #include "settings.h" #include "symboldatabase.h" +#include "tokenize.h" + #include #include // back_inserter //--------------------------------------------------------------------------- @@ -99,7 +101,7 @@ std::string CTU::FileInfo::FunctionCall::toXmlString() const out << "/>"; else { out << ">\n"; - for (const ErrorLogger::ErrorMessage::FileLocation &loc : callValuePath) + for (const ErrorMessage::FileLocation &loc : callValuePath) out << " FirstChildElement(); !error && e2; e2 = e2->NextSiblingElement()) { if (std::strcmp(e2->Name(), "path") != 0) continue; - ErrorLogger::ErrorMessage::FileLocation loc; + ErrorMessage::FileLocation loc; loc.setfile(readAttrString(e2, ATTR_LOC_FILENAME, &error)); loc.line = readAttrInt(e2, ATTR_LOC_LINENR, &error); loc.column = readAttrInt(e2, ATTR_LOC_COLUMN, &error); @@ -335,7 +337,7 @@ CTU::FileInfo *CTU::getFileInfo(const Tokenizer *tokenizer) functionCall.callArgValue = value.intvalue; functionCall.warning = !value.errorSeverity(); for (const ErrorPathItem &i : value.errorPath) { - ErrorLogger::ErrorMessage::FileLocation loc; + ErrorMessage::FileLocation loc; loc.setfile(tokenizer->list.file(i.first)); loc.line = i.first->linenr(); loc.column = i.first->column(); @@ -522,14 +524,14 @@ static bool findPath(const std::string &callId, return false; } -std::list CTU::FileInfo::getErrorPath(InvalidValueType invalidValue, +std::list CTU::FileInfo::getErrorPath(InvalidValueType invalidValue, const CTU::FileInfo::UnsafeUsage &unsafeUsage, const std::map> &callsMap, const char info[], const FunctionCall * * const functionCallPtr, bool warning) const { - std::list locationList; + std::list locationList; const CTU::FileInfo::CallBase *path[10] = {nullptr}; @@ -550,12 +552,12 @@ std::list CTU::FileInfo::getErrorPath(I std::copy(functionCall->callValuePath.cbegin(), functionCall->callValuePath.cend(), std::back_inserter(locationList)); } - ErrorLogger::ErrorMessage::FileLocation fileLoc(path[index]->location.fileName, path[index]->location.lineNumber, path[index]->location.column); + ErrorMessage::FileLocation fileLoc(path[index]->location.fileName, path[index]->location.lineNumber, path[index]->location.column); fileLoc.setinfo("Calling function " + path[index]->callFunctionName + ", " + MathLib::toString(path[index]->callArgNr) + getOrdinalText(path[index]->callArgNr) + " argument is " + value1); locationList.push_back(fileLoc); } - ErrorLogger::ErrorMessage::FileLocation fileLoc2(unsafeUsage.location.fileName, unsafeUsage.location.lineNumber, unsafeUsage.location.column); + ErrorMessage::FileLocation fileLoc2(unsafeUsage.location.fileName, unsafeUsage.location.lineNumber, unsafeUsage.location.column); fileLoc2.setinfo(replaceStr(info, "ARG", unsafeUsage.myArgumentName)); locationList.push_back(fileLoc2); diff --git a/lib/ctu.h b/lib/ctu.h index 63a5e1c77..e239249e9 100644 --- a/lib/ctu.h +++ b/lib/ctu.h @@ -23,8 +23,13 @@ //--------------------------------------------------------------------------- #include "check.h" +#include "errorlogger.h" #include "valueflow.h" +#include + +class Function; + /// @addtogroup Core /// @{ @@ -79,7 +84,7 @@ namespace CTU { std::string callArgumentExpression; MathLib::bigint callArgValue; ValueFlow::Value::ValueType callValueType; - std::vector callValuePath; + std::vector callValuePath; bool warning; std::string toXmlString() const; @@ -111,7 +116,7 @@ namespace CTU { void loadFromXml(const tinyxml2::XMLElement *xmlElement); std::map> getCallsMap() const; - std::list getErrorPath(InvalidValueType invalidValue, + std::list getErrorPath(InvalidValueType invalidValue, const UnsafeUsage &unsafeUsage, const std::map> &callsMap, const char info[], diff --git a/lib/errorlogger.cpp b/lib/errorlogger.cpp index 7c6c22536..97f8f5ab3 100644 --- a/lib/errorlogger.cpp +++ b/lib/errorlogger.cpp @@ -58,57 +58,12 @@ InternalError::InternalError(const Token *tok, const std::string &errorMsg, Type } } -std::string Severity::toString(Severity::SeverityType severity) -{ - switch (severity) { - case none: - return ""; - case error: - return "error"; - case warning: - return "warning"; - case style: - return "style"; - case performance: - return "performance"; - case portability: - return "portability"; - case information: - return "information"; - case debug: - return "debug"; - } - throw InternalError(nullptr, "Unknown severity"); -} -Severity::SeverityType Severity::fromString(const std::string& severity) -{ - if (severity.empty()) - return none; - if (severity == "none") - return none; - if (severity == "error") - return error; - if (severity == "warning") - return warning; - if (severity == "style") - return style; - if (severity == "performance") - return performance; - if (severity == "portability") - return portability; - if (severity == "information") - return information; - if (severity == "debug") - return debug; - return none; -} - -ErrorLogger::ErrorMessage::ErrorMessage() +ErrorMessage::ErrorMessage() : incomplete(false), severity(Severity::none), cwe(0U), inconclusive(false) { } -ErrorLogger::ErrorMessage::ErrorMessage(const std::list &callStack, const std::string& file1, Severity::SeverityType severity, const std::string &msg, const std::string &id, bool inconclusive) : +ErrorMessage::ErrorMessage(const std::list &callStack, const std::string& file1, Severity::SeverityType severity, const std::string &msg, const std::string &id, bool inconclusive) : callStack(callStack), // locations for this error message id(id), // set the message id file0(file1), @@ -123,7 +78,7 @@ ErrorLogger::ErrorMessage::ErrorMessage(const std::list &callStack -ErrorLogger::ErrorMessage::ErrorMessage(const std::list &callStack, const std::string& file1, Severity::SeverityType severity, const std::string &msg, const std::string &id, const CWE &cwe, bool inconclusive) : +ErrorMessage::ErrorMessage(const std::list &callStack, const std::string& file1, Severity::SeverityType severity, const std::string &msg, const std::string &id, const CWE &cwe, bool inconclusive) : callStack(callStack), // locations for this error message id(id), // set the message id file0(file1), @@ -136,7 +91,7 @@ ErrorLogger::ErrorMessage::ErrorMessage(const std::list &callStack setmsg(msg); } -ErrorLogger::ErrorMessage::ErrorMessage(const std::list& callstack, const TokenList* list, Severity::SeverityType severity, const std::string& id, const std::string& msg, bool inconclusive) +ErrorMessage::ErrorMessage(const std::list& callstack, const TokenList* list, Severity::SeverityType severity, const std::string& id, const std::string& msg, bool inconclusive) : id(id), incomplete(false), severity(severity), cwe(0U), inconclusive(inconclusive) { // Format callstack @@ -155,7 +110,7 @@ ErrorLogger::ErrorMessage::ErrorMessage(const std::list& callstack } -ErrorLogger::ErrorMessage::ErrorMessage(const std::list& callstack, const TokenList* list, Severity::SeverityType severity, const std::string& id, const std::string& msg, const CWE &cwe, bool inconclusive) +ErrorMessage::ErrorMessage(const std::list& callstack, const TokenList* list, Severity::SeverityType severity, const std::string& id, const std::string& msg, const CWE &cwe, bool inconclusive) : id(id), incomplete(false), severity(severity), cwe(cwe.id), inconclusive(inconclusive) { // Format callstack @@ -173,7 +128,7 @@ ErrorLogger::ErrorMessage::ErrorMessage(const std::list& callstack setmsg(msg); } -ErrorLogger::ErrorMessage::ErrorMessage(const ErrorPath &errorPath, const TokenList *tokenList, Severity::SeverityType severity, const char id[], const std::string &msg, const CWE &cwe, bool inconclusive) +ErrorMessage::ErrorMessage(const ErrorPath &errorPath, const TokenList *tokenList, Severity::SeverityType severity, const char id[], const std::string &msg, const CWE &cwe, bool inconclusive) : id(id), incomplete(false), severity(severity), cwe(cwe.id), inconclusive(inconclusive) { // Format callstack @@ -192,7 +147,7 @@ ErrorLogger::ErrorMessage::ErrorMessage(const ErrorPath &errorPath, const TokenL setmsg(msg); } -ErrorLogger::ErrorMessage::ErrorMessage(const tinyxml2::XMLElement * const errmsg) +ErrorMessage::ErrorMessage(const tinyxml2::XMLElement * const errmsg) : incomplete(false), severity(Severity::none), cwe(0U), @@ -234,7 +189,7 @@ ErrorLogger::ErrorMessage::ErrorMessage(const tinyxml2::XMLElement * const errms } } -void ErrorLogger::ErrorMessage::setmsg(const std::string &msg) +void ErrorMessage::setmsg(const std::string &msg) { // If a message ends to a '\n' and contains only a one '\n' // it will cause the mVerboseMessage to be empty which will show @@ -260,7 +215,7 @@ void ErrorLogger::ErrorMessage::setmsg(const std::string &msg) } } -Suppressions::ErrorMessage ErrorLogger::ErrorMessage::toSuppressionsErrorMessage() const +Suppressions::ErrorMessage ErrorMessage::toSuppressionsErrorMessage() const { Suppressions::ErrorMessage ret; ret.errorId = id; @@ -274,7 +229,7 @@ Suppressions::ErrorMessage ErrorLogger::ErrorMessage::toSuppressionsErrorMessage } -std::string ErrorLogger::ErrorMessage::serialize() const +std::string ErrorMessage::serialize() const { // Serialize this message into a simple string std::ostringstream oss; @@ -293,7 +248,7 @@ std::string ErrorLogger::ErrorMessage::serialize() const oss << saneVerboseMessage.length() << " " << saneVerboseMessage; oss << callStack.size() << " "; - for (std::list::const_iterator loc = callStack.begin(); loc != callStack.end(); ++loc) { + for (std::list::const_iterator loc = callStack.begin(); loc != callStack.end(); ++loc) { std::ostringstream smallStream; smallStream << (*loc).line << '\t' << (*loc).column << '\t' << (*loc).getfile(false) << '\t' << loc->getOrigFile(false) << '\t' << loc->getinfo(); oss << smallStream.str().length() << " " << smallStream.str(); @@ -302,7 +257,7 @@ std::string ErrorLogger::ErrorMessage::serialize() const return oss.str(); } -bool ErrorLogger::ErrorMessage::deserialize(const std::string &data) +bool ErrorMessage::deserialize(const std::string &data) { inconclusive = false; callStack.clear(); @@ -376,7 +331,7 @@ bool ErrorLogger::ErrorMessage::deserialize(const std::string &data) // (*loc).line << '\t' << (*loc).column << '\t' << (*loc).getfile(false) << '\t' << loc->getOrigFile(false) << '\t' << loc->getinfo(); - ErrorLogger::ErrorMessage::FileLocation loc(substrings[3], MathLib::toLongNumber(substrings[0]), MathLib::toLongNumber(substrings[1])); + ErrorMessage::FileLocation loc(substrings[3], MathLib::toLongNumber(substrings[0]), MathLib::toLongNumber(substrings[1])); loc.setfile(substrings[2]); if (substrings.size() == 5) loc.setinfo(substrings[4]); @@ -390,7 +345,7 @@ bool ErrorLogger::ErrorMessage::deserialize(const std::string &data) return true; } -std::string ErrorLogger::ErrorMessage::getXMLHeader() +std::string ErrorMessage::getXMLHeader() { // xml_version 1 is the default xml format @@ -411,14 +366,14 @@ std::string ErrorLogger::ErrorMessage::getXMLHeader() return std::string(printer.CStr()) + '>'; } -std::string ErrorLogger::ErrorMessage::getXMLFooter() +std::string ErrorMessage::getXMLFooter() { return " \n"; } // There is no utf-8 support around but the strings should at least be safe for to tinyxml2. // See #5300 "Invalid encoding in XML output" and #6431 "Invalid XML created - Invalid encoding of string literal " -std::string ErrorLogger::ErrorMessage::fixInvalidChars(const std::string& raw) +std::string ErrorMessage::fixInvalidChars(const std::string& raw) { std::string result; result.reserve(raw.length()); @@ -438,7 +393,7 @@ std::string ErrorLogger::ErrorMessage::fixInvalidChars(const std::string& raw) return result; } -std::string ErrorLogger::ErrorMessage::toXML() const +std::string ErrorMessage::toXML() const { tinyxml2::XMLPrinter printer(nullptr, false, 2); printer.OpenElement("error", false); @@ -480,7 +435,7 @@ std::string ErrorLogger::ErrorMessage::toXML() const return printer.CStr(); } -void ErrorLogger::ErrorMessage::findAndReplace(std::string &source, const std::string &searchFor, const std::string &replaceWith) +void ErrorMessage::findAndReplace(std::string &source, const std::string &searchFor, const std::string &replaceWith) { std::string::size_type index = 0; while ((index = source.find(searchFor, index)) != std::string::npos) { @@ -506,7 +461,7 @@ static std::string readCode(const std::string &file, int linenr, int column, con return line + endl + std::string((column>0 ? column-1 : column), ' ') + '^'; } -std::string ErrorLogger::ErrorMessage::toString(bool verbose, const std::string &templateFormat, const std::string &templateLocation) const +std::string ErrorMessage::toString(bool verbose, const std::string &templateFormat, const std::string &templateLocation) const { // Save this ErrorMessage in plain text. @@ -514,7 +469,7 @@ std::string ErrorLogger::ErrorMessage::toString(bool verbose, const std::string if (templateFormat.empty()) { std::ostringstream text; if (!callStack.empty()) - text << callStackToString(callStack) << ": "; + text << ErrorLogger::callStackToString(callStack) << ": "; if (severity != Severity::none) { text << '(' << Severity::toString(severity); if (inconclusive) @@ -545,7 +500,7 @@ std::string ErrorLogger::ErrorMessage::toString(bool verbose, const std::string findAndReplace(result, "{severity}", Severity::toString(severity)); findAndReplace(result, "{cwe}", MathLib::toString(cwe.id)); findAndReplace(result, "{message}", verbose ? mVerboseMessage : mShortMessage); - findAndReplace(result, "{callstack}", callStack.empty() ? emptyString : callStackToString(callStack)); + findAndReplace(result, "{callstack}", callStack.empty() ? emptyString : ErrorLogger::callStackToString(callStack)); if (!callStack.empty()) { findAndReplace(result, "{file}", callStack.back().getfile()); findAndReplace(result, "{line}", MathLib::toString(callStack.back().line)); @@ -623,57 +578,57 @@ bool ErrorLogger::reportUnmatchedSuppressions(const std::list callStack; + std::list callStack; if (!s.fileName.empty()) callStack.emplace_back(s.fileName, s.lineNumber, 0); - reportErr(ErrorLogger::ErrorMessage(callStack, emptyString, Severity::information, "Unmatched suppression: " + s.errorId, "unmatchedSuppression", false)); + reportErr(ErrorMessage(callStack, emptyString, Severity::information, "Unmatched suppression: " + s.errorId, "unmatchedSuppression", false)); err = true; } return err; } -std::string ErrorLogger::callStackToString(const std::list &callStack) +std::string ErrorLogger::callStackToString(const std::list &callStack) { std::ostringstream ostr; - for (std::list::const_iterator tok = callStack.begin(); tok != callStack.end(); ++tok) { + for (std::list::const_iterator tok = callStack.begin(); tok != callStack.end(); ++tok) { ostr << (tok == callStack.begin() ? "" : " -> ") << tok->stringify(); } return ostr.str(); } -ErrorLogger::ErrorMessage::FileLocation::FileLocation(const Token* tok, const TokenList* tokenList) +ErrorMessage::FileLocation::FileLocation(const Token* tok, const TokenList* tokenList) : fileIndex(tok->fileIndex()), line(tok->linenr()), column(tok->column()), mOrigFileName(tokenList->getOrigFile(tok)), mFileName(tokenList->file(tok)) { } -ErrorLogger::ErrorMessage::FileLocation::FileLocation(const Token* tok, const std::string &info, const TokenList* tokenList) +ErrorMessage::FileLocation::FileLocation(const Token* tok, const std::string &info, const TokenList* tokenList) : fileIndex(tok->fileIndex()), line(tok->linenr()), column(tok->column()), mOrigFileName(tokenList->getOrigFile(tok)), mFileName(tokenList->file(tok)), mInfo(info) { } -std::string ErrorLogger::ErrorMessage::FileLocation::getfile(bool convert) const +std::string ErrorMessage::FileLocation::getfile(bool convert) const { if (convert) return Path::toNativeSeparators(mFileName); return mFileName; } -std::string ErrorLogger::ErrorMessage::FileLocation::getOrigFile(bool convert) const +std::string ErrorMessage::FileLocation::getOrigFile(bool convert) const { if (convert) return Path::toNativeSeparators(mOrigFileName); return mOrigFileName; } -void ErrorLogger::ErrorMessage::FileLocation::setfile(const std::string &file) +void ErrorMessage::FileLocation::setfile(const std::string &file) { mFileName = file; mFileName = Path::fromNativeSeparators(mFileName); mFileName = Path::simplifyPath(mFileName); } -std::string ErrorLogger::ErrorMessage::FileLocation::stringify() const +std::string ErrorMessage::FileLocation::stringify() const { std::ostringstream oss; oss << '[' << Path::toNativeSeparators(mFileName); @@ -733,7 +688,7 @@ std::string ErrorLogger::plistHeader(const std::string &version, const std::vect return ostr.str(); } -static std::string plistLoc(const char indent[], const ErrorLogger::ErrorMessage::FileLocation &loc) +static std::string plistLoc(const char indent[], const ErrorMessage::FileLocation &loc) { std::ostringstream ostr; ostr << indent << "\r\n" @@ -744,16 +699,16 @@ static std::string plistLoc(const char indent[], const ErrorLogger::ErrorMessage return ostr.str(); } -std::string ErrorLogger::plistData(const ErrorLogger::ErrorMessage &msg) +std::string ErrorLogger::plistData(const ErrorMessage &msg) { std::ostringstream plist; plist << " \r\n" << " path\r\n" << " \r\n"; - std::list::const_iterator prev = msg.callStack.begin(); + std::list::const_iterator prev = msg.callStack.begin(); - for (std::list::const_iterator it = msg.callStack.begin(); it != msg.callStack.end(); ++it) { + for (std::list::const_iterator it = msg.callStack.begin(); it != msg.callStack.end(); ++it) { if (prev != it) { plist << " \r\n" << " kindcontrol\r\n" @@ -776,7 +731,7 @@ std::string ErrorLogger::plistData(const ErrorLogger::ErrorMessage &msg) prev = it; } - std::list::const_iterator next = it; + std::list::const_iterator next = it; ++next; const std::string message = (it->getinfo().empty() && next == msg.callStack.end() ? msg.shortMessage() : it->getinfo()); diff --git a/lib/errorlogger.h b/lib/errorlogger.h index 9b1c47bf7..ea03eecce 100644 --- a/lib/errorlogger.h +++ b/lib/errorlogger.h @@ -22,6 +22,7 @@ //--------------------------------------------------------------------------- #include "config.h" +#include "errortypes.h" #include "suppressions.h" #include @@ -35,11 +36,6 @@ * CWE id (Common Weakness Enumeration) * See https://cwe.mitre.org/ for further reference. * */ -struct CWE { - explicit CWE(unsigned short cweId) : id(cweId) {} - unsigned short id; -}; - // CWE list: https://cwe.mitre.org/data/published/cwe_v3.4.1.pdf static const struct CWE CWE_USE_OF_UNINITIALIZED_VARIABLE(457U); static const struct CWE CWE_NULL_POINTER_DEREFERENCE(476U); @@ -58,82 +54,190 @@ namespace tinyxml2 { /// @addtogroup Core /// @{ -/** @brief Simple container to be thrown when internal error is detected. */ -struct InternalError { - enum Type {AST, SYNTAX, UNKNOWN_MACRO, INTERNAL, LIMIT, INSTANTIATION}; - InternalError(const Token *tok, const std::string &errorMsg, Type type = INTERNAL); - const Token *token; - std::string errorMessage; - Type type; - std::string id; -}; - -/** @brief enum class for severity. Used when reporting errors. */ -class CPPCHECKLIB Severity { +/** + * Wrapper for error messages, provided by reportErr() + */ +class CPPCHECKLIB ErrorMessage { public: /** - * Message severities. + * File name and line number. + * Internally paths are stored with / separator. When getting the filename + * it is by default converted to native separators. */ - enum SeverityType { + class CPPCHECKLIB FileLocation { + public: + FileLocation() + : fileIndex(0), line(0), column(0) { + } + + FileLocation(const std::string &file, int line, int column) + : fileIndex(0), line(line), column(column), mOrigFileName(file), mFileName(file) { + } + + FileLocation(const std::string &file, const std::string &info, int line, int column) + : fileIndex(0), line(line), column(column), mOrigFileName(file), mFileName(file), mInfo(info) { + } + + FileLocation(const Token* tok, const TokenList* tokenList); + FileLocation(const Token* tok, const std::string &info, const TokenList* tokenList); + /** - * No severity (default value). + * Return the filename. + * @param convert If true convert path to native separators. + * @return filename. */ - none, + std::string getfile(bool convert = true) const; + /** - * Programming error. - * This indicates severe error like memory leak etc. - * The error is certain. + * Filename with the whole path (no --rp) + * @param convert If true convert path to native separators. + * @return filename. */ - error, + std::string getOrigFile(bool convert = true) const; + /** - * Warning. - * Used for dangerous coding style that can cause severe runtime errors. - * For example: forgetting to initialize a member variable in a constructor. + * Set the filename. + * @param file Filename to set. */ - warning, + void setfile(const std::string &file); + /** - * Style warning. - * Used for general code cleanup recommendations. Fixing these - * will not fix any bugs but will make the code easier to maintain. - * For example: redundant code, unreachable code, etc. + * @return the location as a string. Format: [file:line] */ - style, - /** - * Performance warning. - * Not an error as is but suboptimal code and fixing it probably leads - * to faster performance of the compiled code. - */ - performance, - /** - * Portability warning. - * This warning indicates the code is not properly portable for - * different platforms and bitnesses (32/64 bit). If the code is meant - * to compile in different platforms and bitnesses these warnings - * should be fixed. - */ - portability, - /** - * Checking information. - * Information message about the checking (process) itself. These - * messages inform about header files not found etc issues that are - * not errors in the code but something user needs to know. - */ - information, - /** - * Debug message. - * Debug-mode message useful for the developers. - */ - debug + std::string stringify() const; + + unsigned int fileIndex; + int line; // negative value means "no line" + unsigned int column; + + std::string getinfo() const { + return mInfo; + } + void setinfo(const std::string &i) { + mInfo = i; + } + + private: + std::string mOrigFileName; + std::string mFileName; + std::string mInfo; }; - static std::string toString(SeverityType severity); - static SeverityType fromString(const std::string& severity); + ErrorMessage(const std::list &callStack, + const std::string& file1, + Severity::SeverityType severity, + const std::string &msg, + const std::string &id, bool inconclusive); + ErrorMessage(const std::list &callStack, + const std::string& file1, + Severity::SeverityType severity, + const std::string &msg, + const std::string &id, + const CWE &cwe, + bool inconclusive); + ErrorMessage(const std::list& callstack, + const TokenList* list, + Severity::SeverityType severity, + const std::string& id, + const std::string& msg, + bool inconclusive); + ErrorMessage(const std::list& callstack, + const TokenList* list, + Severity::SeverityType severity, + const std::string& id, + const std::string& msg, + const CWE &cwe, + bool inconclusive); + ErrorMessage(const ErrorPath &errorPath, + const TokenList *tokenList, + Severity::SeverityType severity, + const char id[], + const std::string &msg, + const CWE &cwe, + bool inconclusive); + ErrorMessage(); + explicit ErrorMessage(const tinyxml2::XMLElement * const errmsg); + + /** + * Format the error message in XML format + */ + std::string toXML() const; + + static std::string getXMLHeader(); + static std::string getXMLFooter(); + + /** + * Format the error message into a string. + * @param verbose use verbose message + * @param templateFormat Empty string to use default output format + * or template to be used. E.g. "{file}:{line},{severity},{id},{message}" + * @param templateLocation Format Empty string to use default output format + * or template to be used. E.g. "{file}:{line},{info}" + * @return formatted string + */ + std::string toString(bool verbose, + const std::string &templateFormat = emptyString, + const std::string &templateLocation = emptyString) const; + + std::string serialize() const; + bool deserialize(const std::string &data); + + std::list callStack; + std::string id; + + /** For GUI rechecking; source file (not header) */ + std::string file0; + /** For GUI bug hunting; function name */ + std::string function; + /** For GUI bug hunting; incomplete analysis */ + bool incomplete; + + Severity::SeverityType severity; + CWE cwe; + bool inconclusive; + + /** set short and verbose messages */ + void setmsg(const std::string &msg); + + /** Short message (single line short message) */ + const std::string &shortMessage() const { + return mShortMessage; + } + + /** Verbose message (may be the same as the short message) */ + const std::string &verboseMessage() const { + return mVerboseMessage; + } + + /** Symbol names */ + const std::string &symbolNames() const { + return mSymbolNames; + } + + Suppressions::ErrorMessage toSuppressionsErrorMessage() const; + +private: + /** + * Replace all occurrences of searchFor with replaceWith in the + * given source. + * @param source The string to modify + * @param searchFor What should be searched for + * @param replaceWith What will replace the found item + */ + static void findAndReplace(std::string &source, const std::string &searchFor, const std::string &replaceWith); + + static std::string fixInvalidChars(const std::string& raw); + + /** Short message */ + std::string mShortMessage; + + /** Verbose message */ + std::string mVerboseMessage; + + /** symbol names */ + std::string mSymbolNames; }; - -typedef std::pair ErrorPathItem; -typedef std::list ErrorPath; - /** * @brief This is an interface, which the class responsible of error logging * should implement. @@ -142,191 +246,6 @@ class CPPCHECKLIB ErrorLogger { protected: std::ofstream plistFile; public: - - /** - * Wrapper for error messages, provided by reportErr() - */ - class CPPCHECKLIB ErrorMessage { - public: - /** - * File name and line number. - * Internally paths are stored with / separator. When getting the filename - * it is by default converted to native separators. - */ - class CPPCHECKLIB FileLocation { - public: - FileLocation() - : fileIndex(0), line(0), column(0) { - } - - FileLocation(const std::string &file, int line, int column) - : fileIndex(0), line(line), column(column), mOrigFileName(file), mFileName(file) { - } - - FileLocation(const std::string &file, const std::string &info, int line, int column) - : fileIndex(0), line(line), column(column), mOrigFileName(file), mFileName(file), mInfo(info) { - } - - FileLocation(const Token* tok, const TokenList* tokenList); - FileLocation(const Token* tok, const std::string &info, const TokenList* tokenList); - - /** - * Return the filename. - * @param convert If true convert path to native separators. - * @return filename. - */ - std::string getfile(bool convert = true) const; - - /** - * Filename with the whole path (no --rp) - * @param convert If true convert path to native separators. - * @return filename. - */ - std::string getOrigFile(bool convert = true) const; - - /** - * Set the filename. - * @param file Filename to set. - */ - void setfile(const std::string &file); - - /** - * @return the location as a string. Format: [file:line] - */ - std::string stringify() const; - - unsigned int fileIndex; - int line; // negative value means "no line" - unsigned int column; - - std::string getinfo() const { - return mInfo; - } - void setinfo(const std::string &i) { - mInfo = i; - } - - private: - std::string mOrigFileName; - std::string mFileName; - std::string mInfo; - }; - - ErrorMessage(const std::list &callStack, - const std::string& file1, - Severity::SeverityType severity, - const std::string &msg, - const std::string &id, bool inconclusive); - ErrorMessage(const std::list &callStack, - const std::string& file1, - Severity::SeverityType severity, - const std::string &msg, - const std::string &id, - const CWE &cwe, - bool inconclusive); - ErrorMessage(const std::list& callstack, - const TokenList* list, - Severity::SeverityType severity, - const std::string& id, - const std::string& msg, - bool inconclusive); - ErrorMessage(const std::list& callstack, - const TokenList* list, - Severity::SeverityType severity, - const std::string& id, - const std::string& msg, - const CWE &cwe, - bool inconclusive); - ErrorMessage(const ErrorPath &errorPath, - const TokenList *tokenList, - Severity::SeverityType severity, - const char id[], - const std::string &msg, - const CWE &cwe, - bool inconclusive); - ErrorMessage(); - explicit ErrorMessage(const tinyxml2::XMLElement * const errmsg); - - /** - * Format the error message in XML format - */ - std::string toXML() const; - - static std::string getXMLHeader(); - static std::string getXMLFooter(); - - /** - * Format the error message into a string. - * @param verbose use verbose message - * @param templateFormat Empty string to use default output format - * or template to be used. E.g. "{file}:{line},{severity},{id},{message}" - * @param templateLocation Format Empty string to use default output format - * or template to be used. E.g. "{file}:{line},{info}" - * @return formatted string - */ - std::string toString(bool verbose, - const std::string &templateFormat = emptyString, - const std::string &templateLocation = emptyString) const; - - std::string serialize() const; - bool deserialize(const std::string &data); - - std::list callStack; - std::string id; - - /** For GUI rechecking; source file (not header) */ - std::string file0; - /** For GUI bug hunting; function name */ - std::string function; - /** For GUI bug hunting; incomplete analysis */ - bool incomplete; - - Severity::SeverityType severity; - CWE cwe; - bool inconclusive; - - /** set short and verbose messages */ - void setmsg(const std::string &msg); - - /** Short message (single line short message) */ - const std::string &shortMessage() const { - return mShortMessage; - } - - /** Verbose message (may be the same as the short message) */ - const std::string &verboseMessage() const { - return mVerboseMessage; - } - - /** Symbol names */ - const std::string &symbolNames() const { - return mSymbolNames; - } - - Suppressions::ErrorMessage toSuppressionsErrorMessage() const; - - private: - /** - * Replace all occurrences of searchFor with replaceWith in the - * given source. - * @param source The string to modify - * @param searchFor What should be searched for - * @param replaceWith What will replace the found item - */ - static void findAndReplace(std::string &source, const std::string &searchFor, const std::string &replaceWith); - - static std::string fixInvalidChars(const std::string& raw); - - /** Short message */ - std::string mShortMessage; - - /** Verbose message */ - std::string mVerboseMessage; - - /** symbol names */ - std::string mSymbolNames; - }; - ErrorLogger() { } virtual ~ErrorLogger() { if (plistFile.is_open()) { @@ -349,7 +268,7 @@ public: * * @param msg Location and other information about the found error. */ - virtual void reportErr(const ErrorLogger::ErrorMessage &msg) = 0; + virtual void reportErr(const ErrorMessage &msg) = 0; /** * Report progress to client @@ -367,7 +286,7 @@ public: * Output information messages. * @param msg Location and other information about the found error. */ - virtual void reportInfo(const ErrorLogger::ErrorMessage &msg) { + virtual void reportInfo(const ErrorMessage &msg) { reportErr(msg); } @@ -380,7 +299,7 @@ public: */ bool reportUnmatchedSuppressions(const std::list &unmatched); - static std::string callStackToString(const std::list &callStack); + static std::string callStackToString(const std::list &callStack); /** * Convert XML-sensitive characters into XML entities @@ -390,7 +309,7 @@ public: static std::string toxml(const std::string &str); static std::string plistHeader(const std::string &version, const std::vector &files); - static std::string plistData(const ErrorLogger::ErrorMessage &msg); + static std::string plistData(const ErrorMessage &msg); static const char *plistFooter() { return " \r\n" "\r\n" diff --git a/lib/errortypes.cpp b/lib/errortypes.cpp new file mode 100644 index 000000000..bb5dd4c0f --- /dev/null +++ b/lib/errortypes.cpp @@ -0,0 +1,64 @@ +/* + * Cppcheck - A tool for static C/C++ code analysis + * Copyright (C) 2007-2020 Cppcheck team. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "errortypes.h" + +std::string Severity::toString(Severity::SeverityType severity) +{ + switch (severity) { + case none: + return ""; + case error: + return "error"; + case warning: + return "warning"; + case style: + return "style"; + case performance: + return "performance"; + case portability: + return "portability"; + case information: + return "information"; + case debug: + return "debug"; + } + throw InternalError(nullptr, "Unknown severity"); +} +Severity::SeverityType Severity::fromString(const std::string& severity) +{ + if (severity.empty()) + return none; + if (severity == "none") + return none; + if (severity == "error") + return error; + if (severity == "warning") + return warning; + if (severity == "style") + return style; + if (severity == "performance") + return performance; + if (severity == "portability") + return portability; + if (severity == "information") + return information; + if (severity == "debug") + return debug; + return none; +} \ No newline at end of file diff --git a/lib/errortypes.h b/lib/errortypes.h new file mode 100644 index 000000000..80fcf1f50 --- /dev/null +++ b/lib/errortypes.h @@ -0,0 +1,115 @@ +/* + * Cppcheck - A tool for static C/C++ code analysis + * Copyright (C) 2007-2020 Cppcheck team. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +//--------------------------------------------------------------------------- +#ifndef errortypesH +#define errortypesH +//--------------------------------------------------------------------------- + +#include "config.h" + +#include +#include + +/// @addtogroup Core +/// @{ +class Token; + +/** @brief Simple container to be thrown when internal error is detected. */ +struct InternalError { + enum Type {AST, SYNTAX, UNKNOWN_MACRO, INTERNAL, LIMIT, INSTANTIATION}; + InternalError(const Token *tok, const std::string &errorMsg, Type type = INTERNAL); + const Token *token; + std::string errorMessage; + Type type; + std::string id; +}; + +/** @brief enum class for severity. Used when reporting errors. */ +class CPPCHECKLIB Severity { +public: + /** + * Message severities. + */ + enum SeverityType { + /** + * No severity (default value). + */ + none, + /** + * Programming error. + * This indicates severe error like memory leak etc. + * The error is certain. + */ + error, + /** + * Warning. + * Used for dangerous coding style that can cause severe runtime errors. + * For example: forgetting to initialize a member variable in a constructor. + */ + warning, + /** + * Style warning. + * Used for general code cleanup recommendations. Fixing these + * will not fix any bugs but will make the code easier to maintain. + * For example: redundant code, unreachable code, etc. + */ + style, + /** + * Performance warning. + * Not an error as is but suboptimal code and fixing it probably leads + * to faster performance of the compiled code. + */ + performance, + /** + * Portability warning. + * This warning indicates the code is not properly portable for + * different platforms and bitnesses (32/64 bit). If the code is meant + * to compile in different platforms and bitnesses these warnings + * should be fixed. + */ + portability, + /** + * Checking information. + * Information message about the checking (process) itself. These + * messages inform about header files not found etc issues that are + * not errors in the code but something user needs to know. + */ + information, + /** + * Debug message. + * Debug-mode message useful for the developers. + */ + debug + }; + + static std::string toString(SeverityType severity); + static SeverityType fromString(const std::string &severity); +}; + +struct CWE { + explicit CWE(unsigned short cweId) : id(cweId) {} + unsigned short id; +}; + +typedef std::pair ErrorPathItem; +typedef std::list ErrorPath; + +/// @} +//--------------------------------------------------------------------------- +#endif // errortypesH diff --git a/lib/exprengine.cpp b/lib/exprengine.cpp index 5900fa5a4..534d99061 100644 --- a/lib/exprengine.cpp +++ b/lib/exprengine.cpp @@ -130,7 +130,9 @@ */ #include "exprengine.h" + #include "astutils.h" +#include "errorlogger.h" #include "settings.h" #include "symboldatabase.h" #include "tokenize.h" @@ -1421,7 +1423,7 @@ static void checkContract(Data &data, const Token *tok, const Function *function const auto contractIt = data.settings->functionContracts.find(function->fullName()); const std::string functionName = contractIt->first; const std::string functionExpects = contractIt->second; - ErrorLogger::ErrorMessage errmsg(callstack, + ErrorMessage errmsg(callstack, &data.tokenizer->list, Severity::SeverityType::error, id, @@ -1439,7 +1441,7 @@ static void checkContract(Data &data, const Token *tok, const Function *function const char * const id = "internalErrorInExprEngine"; const auto contractIt = data.settings->functionContracts.find(function->fullName()); const std::string functionExpects = contractIt->second; - ErrorLogger::ErrorMessage errmsg(callstack, + ErrorMessage errmsg(callstack, &data.tokenizer->list, Severity::SeverityType::error, id, @@ -2163,7 +2165,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, std::list callstack{settings->clang ? tok : tok->astParent()}; const char * const id = (tok->valueType() && tok->valueType()->isFloat()) ? "bughuntingDivByZeroFloat" : "bughuntingDivByZero"; const bool bailout = (value.type == ExprEngine::ValueType::BailoutValue); - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, id, "There is division, cannot determine that there can't be a division by zero.", CWE(369), false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, id, "There is division, cannot determine that there can't be a division by zero.", CWE(369), false); if (!bailout) errmsg.function = dataBase->currentFunction; else @@ -2216,7 +2218,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, errorMessage += " Note that unsigned integer overflow is defined and will wrap around."; std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingIntegerOverflow", errorMessage, false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingIntegerOverflow", errorMessage, false); errorLogger->reportErr(errmsg); }; #endif @@ -2281,7 +2283,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, dataBase->addError(tok->linenr()); std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingUninit", "Cannot determine that '" + tok->expressionString() + "' is initialized", CWE_USE_OF_UNINITIALIZED_VARIABLE, false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingUninit", "Cannot determine that '" + tok->expressionString() + "' is initialized", CWE_USE_OF_UNINITIALIZED_VARIABLE, false); errorLogger->reportErr(errmsg); }; @@ -2325,11 +2327,11 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, if (!bad.empty()) { dataBase->addError(tok->linenr()); std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, - &tokenizer->list, - Severity::SeverityType::error, - "bughuntingInvalidArgValue", - "There is function call, cannot determine that " + std::to_string(num) + getOrdinalText(num) + " argument value meets the attribute " + bad, CWE(0), false); + ErrorMessage errmsg(callstack, + &tokenizer->list, + Severity::SeverityType::error, + "bughuntingInvalidArgValue", + "There is function call, cannot determine that " + std::to_string(num) + getOrdinalText(num) + " argument value meets the attribute " + bad, CWE(0), false); errorLogger->reportErr(errmsg); return; } @@ -2377,7 +2379,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, if (err) { dataBase->addError(tok->linenr()); std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingInvalidArgValue", "There is function call, cannot determine that " + std::to_string(num) + getOrdinalText(num) + " argument value is valid. Bad value: " + bad, CWE(0), false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingInvalidArgValue", "There is function call, cannot determine that " + std::to_string(num) + getOrdinalText(num) + " argument value is valid. Bad value: " + bad, CWE(0), false); errorLogger->reportErr(errmsg); break; } @@ -2391,7 +2393,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, if (v.second->isUninit()) { dataBase->addError(tok->linenr()); std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingUninitArg", "There is function call, cannot determine that " + std::to_string(num) + getOrdinalText(num) + " argument is initialized.", CWE_USE_OF_UNINITIALIZED_VARIABLE, false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingUninitArg", "There is function call, cannot determine that " + std::to_string(num) + getOrdinalText(num) + " argument is initialized.", CWE_USE_OF_UNINITIALIZED_VARIABLE, false); errorLogger->reportErr(errmsg); break; } @@ -2415,7 +2417,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, if (value.isLessThan(dataBase, low)) { dataBase->addError(tok->linenr()); std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingAssign", "There is assignment, cannot determine that value is greater or equal with " + std::to_string(low), CWE_INCORRECT_CALCULATION, false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingAssign", "There is assignment, cannot determine that value is greater or equal with " + std::to_string(low), CWE_INCORRECT_CALCULATION, false); errorLogger->reportErr(errmsg); } } @@ -2425,7 +2427,7 @@ void ExprEngine::runChecks(ErrorLogger *errorLogger, const Tokenizer *tokenizer, if (value.isGreaterThan(dataBase, high)) { dataBase->addError(tok->linenr()); std::list callstack{tok}; - ErrorLogger::ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingAssign", "There is assignment, cannot determine that value is lower or equal with " + std::to_string(high), CWE_INCORRECT_CALCULATION, false); + ErrorMessage errmsg(callstack, &tokenizer->list, Severity::SeverityType::error, "bughuntingAssign", "There is assignment, cannot determine that value is lower or equal with " + std::to_string(high), CWE_INCORRECT_CALCULATION, false); errorLogger->reportErr(errmsg); } } diff --git a/lib/lib.pri b/lib/lib.pri index 392f59d32..517767733 100644 --- a/lib/lib.pri +++ b/lib/lib.pri @@ -35,6 +35,7 @@ HEADERS += $${PWD}/analyzerinfo.h \ $${PWD}/cppcheck.h \ $${PWD}/ctu.h \ $${PWD}/errorlogger.h \ + $${PWD}/errortypes.h \ $${PWD}/exprengine.h \ $${PWD}/forwardanalyzer.h \ $${PWD}/importproject.h \ @@ -89,6 +90,7 @@ SOURCES += $${PWD}/analyzerinfo.cpp \ $${PWD}/cppcheck.cpp \ $${PWD}/ctu.cpp \ $${PWD}/errorlogger.cpp \ + $${PWD}/errortypes.cpp \ $${PWD}/exprengine.cpp \ $${PWD}/forwardanalyzer.cpp \ $${PWD}/importproject.cpp \ diff --git a/lib/library.h b/lib/library.h index d3d635d1b..842e509cf 100644 --- a/lib/library.h +++ b/lib/library.h @@ -22,8 +22,8 @@ //--------------------------------------------------------------------------- #include "config.h" -#include "errorlogger.h" #include "mathlib.h" +#include "errortypes.h" #include "standards.h" #include diff --git a/lib/mathlib.cpp b/lib/mathlib.cpp index 7bfdb0ca5..ce7132a2c 100644 --- a/lib/mathlib.cpp +++ b/lib/mathlib.cpp @@ -18,7 +18,7 @@ #include "mathlib.h" -#include "errorlogger.h" +#include "errortypes.h" #include "utils.h" #include diff --git a/lib/pathanalysis.h b/lib/pathanalysis.h index 6efc76d83..af7b8834c 100644 --- a/lib/pathanalysis.h +++ b/lib/pathanalysis.h @@ -1,9 +1,9 @@ #ifndef GUARD_PATHANALYSIS_H #define GUARD_PATHANALYSIS_H -#include +#include "errortypes.h" -#include "errorlogger.h" +#include class Library; class Scope; diff --git a/lib/preprocessor.cpp b/lib/preprocessor.cpp index 20097f8bc..b4a68b47e 100644 --- a/lib/preprocessor.cpp +++ b/lib/preprocessor.cpp @@ -786,17 +786,17 @@ void Preprocessor::reportOutput(const simplecpp::OutputList &outputList, bool sh void Preprocessor::error(const std::string &filename, unsigned int linenr, const std::string &msg) { - std::list locationList; + std::list locationList; if (!filename.empty()) { - const ErrorLogger::ErrorMessage::FileLocation loc(filename, linenr, 0); + const ErrorMessage::FileLocation loc(filename, linenr, 0); locationList.push_back(loc); } - mErrorLogger->reportErr(ErrorLogger::ErrorMessage(locationList, - mFile0, - Severity::error, - msg, - "preprocessorErrorDirective", - false)); + mErrorLogger->reportErr(ErrorMessage(locationList, + mFile0, + Severity::error, + msg, + "preprocessorErrorDirective", + false)); } // Report that include is missing @@ -819,19 +819,19 @@ void Preprocessor::missingInclude(const std::string &filename, unsigned int line missingIncludeFlag = true; if (mErrorLogger && mSettings.checkConfiguration) { - std::list locationList; + std::list locationList; if (!filename.empty()) { - ErrorLogger::ErrorMessage::FileLocation loc; + ErrorMessage::FileLocation loc; loc.line = linenr; loc.setfile(Path::toNativeSeparators(filename)); locationList.push_back(loc); } - ErrorLogger::ErrorMessage errmsg(locationList, mFile0, Severity::information, - (headerType==SystemHeader) ? - "Include file: <" + header + "> not found. Please note: Cppcheck does not need standard library headers to get proper results." : - "Include file: \"" + header + "\" not found.", - (headerType==SystemHeader) ? "missingIncludeSystem" : "missingInclude", - false); + ErrorMessage errmsg(locationList, mFile0, Severity::information, + (headerType==SystemHeader) ? + "Include file: <" + header + "> not found. Please note: Cppcheck does not need standard library headers to get proper results." : + "Include file: \"" + header + "\" not found.", + (headerType==SystemHeader) ? "missingIncludeSystem" : "missingInclude", + false); mErrorLogger->reportInfo(errmsg); } } @@ -869,10 +869,10 @@ bool Preprocessor::validateCfg(const std::string &cfg, const std::list locationList; - const ErrorLogger::ErrorMessage::FileLocation loc(file, line, 0); + std::list locationList; + const ErrorMessage::FileLocation loc(file, line, 0); locationList.push_back(loc); - const ErrorLogger::ErrorMessage errmsg(locationList, mFile0, Severity::information, "Skipping configuration '" + cfg + "' since the value of '" + macro + "' is unknown. Use -D if you want to check it. You can use -U to skip it explicitly.", id, false); + const ErrorMessage errmsg(locationList, mFile0, Severity::information, "Skipping configuration '" + cfg + "' since the value of '" + macro + "' is unknown. Use -D if you want to check it. You can use -U to skip it explicitly.", id, false); mErrorLogger->reportInfo(errmsg); } diff --git a/lib/programmemory.h b/lib/programmemory.h index 010490418..5c4ed972d 100644 --- a/lib/programmemory.h +++ b/lib/programmemory.h @@ -3,7 +3,7 @@ #include "config.h" #include "utils.h" -#include "valueflow.h" +#include "valueflow.h" // needed for alias #include "mathlib.h" #include #include diff --git a/lib/settings.h b/lib/settings.h index 1e7b50a08..725885ddd 100644 --- a/lib/settings.h +++ b/lib/settings.h @@ -22,7 +22,6 @@ //--------------------------------------------------------------------------- #include "config.h" -#include "errorlogger.h" #include "importproject.h" #include "library.h" #include "platform.h" diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index dbe191383..46f124967 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1731,10 +1731,10 @@ void SymbolDatabase::validateExecutableScopes() const if (scope->isExecutable() && !function) { const std::list callstack(1, scope->classDef); const std::string msg = std::string("Executable scope '") + scope->classDef->str() + "' with unknown function."; - const ErrorLogger::ErrorMessage errmsg(callstack, &mTokenizer->list, Severity::debug, - "symbolDatabaseWarning", - msg, - false); + const ErrorMessage errmsg(callstack, &mTokenizer->list, Severity::debug, + "symbolDatabaseWarning", + msg, + false); mErrorLogger->reportErr(errmsg); } } @@ -2818,11 +2818,11 @@ void SymbolDatabase::debugMessage(const Token *tok, const std::string &msg) cons { if (tok && mSettings->debugwarnings) { const std::list locationList(1, tok); - const ErrorLogger::ErrorMessage errmsg(locationList, &mTokenizer->list, - Severity::debug, - "debug", - msg, - false); + const ErrorMessage errmsg(locationList, &mTokenizer->list, + Severity::debug, + "debug", + msg, + false); if (mErrorLogger) mErrorLogger->reportErr(errmsg); } diff --git a/lib/templatesimplifier.cpp b/lib/templatesimplifier.cpp index e043c8ac6..680e70097 100644 --- a/lib/templatesimplifier.cpp +++ b/lib/templatesimplifier.cpp @@ -2993,8 +2993,8 @@ bool TemplateSimplifier::simplifyTemplateInstantiations( (!typeParametersInDeclaration.empty() && typeParametersInDeclaration.size() != mTypesUsedInTemplateInstantiation.size())) { if (printDebug && mErrorLogger) { std::list callstack(1, tok2); - mErrorLogger->reportErr(ErrorLogger::ErrorMessage(callstack, &mTokenList, Severity::debug, "debug", - "Failed to instantiate template \"" + instantiation.name() + "\". The checking continues anyway.", false)); + mErrorLogger->reportErr(ErrorMessage(callstack, &mTokenList, Severity::debug, "debug", + "Failed to instantiate template \"" + instantiation.name() + "\". The checking continues anyway.", false)); } if (typeForNewName.empty()) continue; @@ -3061,8 +3061,8 @@ bool TemplateSimplifier::simplifyTemplateInstantiations( if (typeForNewName.empty()) { if (printDebug && mErrorLogger) { std::list callstack(1, tok2); - mErrorLogger->reportErr(ErrorLogger::ErrorMessage(callstack, &mTokenList, Severity::debug, "debug", - "Failed to instantiate template \"" + templateDeclaration.name() + "\". The checking continues anyway.", false)); + mErrorLogger->reportErr(ErrorMessage(callstack, &mTokenList, Severity::debug, "debug", + "Failed to instantiate template \"" + templateDeclaration.name() + "\". The checking continues anyway.", false)); } return false; } @@ -3678,11 +3678,11 @@ void TemplateSimplifier::simplifyTemplates( if (passCount == passCountMax) { if (mSettings->debugwarnings) { const std::list locationList(1, mTokenList.front()); - const ErrorLogger::ErrorMessage errmsg(locationList, &mTokenizer->list, - Severity::debug, - "debug", - "TemplateSimplifier: pass count limit hit before simplifications were finished.", - false); + const ErrorMessage errmsg(locationList, &mTokenizer->list, + Severity::debug, + "debug", + "TemplateSimplifier: pass count limit hit before simplifications were finished.", + false); if (mErrorLogger) mErrorLogger->reportErr(errmsg); } diff --git a/lib/token.cpp b/lib/token.cpp index 16f860a83..79e51dd46 100644 --- a/lib/token.cpp +++ b/lib/token.cpp @@ -19,7 +19,6 @@ #include "token.h" #include "astutils.h" -#include "errorlogger.h" #include "library.h" #include "settings.h" #include "symboldatabase.h" diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index cc040e5f8..4d2967691 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -20,6 +20,7 @@ #include "tokenize.h" #include "check.h" +#include "errorlogger.h" #include "library.h" #include "mathlib.h" #include "platform.h" @@ -2195,8 +2196,8 @@ bool Tokenizer::simplifyUsing() } str += " ;"; std::list callstack(1, usingStart); - mErrorLogger->reportErr(ErrorLogger::ErrorMessage(callstack, &list, Severity::debug, "debug", - "Failed to parse \'" + str + "\'. The checking continues anyway.", false)); + mErrorLogger->reportErr(ErrorMessage(callstack, &list, Severity::debug, "debug", + "Failed to parse \'" + str + "\'. The checking continues anyway.", false)); } } tok1 = after; @@ -11470,7 +11471,7 @@ void Tokenizer::reportError(const Token* tok, const Severity::SeverityType sever void Tokenizer::reportError(const std::list& callstack, Severity::SeverityType severity, const std::string& id, const std::string& msg, bool inconclusive) const { - const ErrorLogger::ErrorMessage errmsg(callstack, &list, severity, id, msg, inconclusive); + const ErrorMessage errmsg(callstack, &list, severity, id, msg, inconclusive); if (mErrorLogger) mErrorLogger->reportErr(errmsg); else diff --git a/lib/tokenize.h b/lib/tokenize.h index 25d849fe6..9c327fd59 100644 --- a/lib/tokenize.h +++ b/lib/tokenize.h @@ -22,7 +22,7 @@ //--------------------------------------------------------------------------- #include "config.h" -#include "errorlogger.h" +#include "errortypes.h" #include "tokenlist.h" #include @@ -36,6 +36,7 @@ class SymbolDatabase; class TimerResults; class Token; class TemplateSimplifier; +class ErrorLogger; namespace simplecpp { class TokenList; diff --git a/lib/tokenlist.cpp b/lib/tokenlist.cpp index 279dc5990..16f6ef022 100644 --- a/lib/tokenlist.cpp +++ b/lib/tokenlist.cpp @@ -1614,7 +1614,7 @@ const std::string& TokenList::file(const Token *tok) const std::string TokenList::fileLine(const Token *tok) const { - return ErrorLogger::ErrorMessage::FileLocation(tok, this).stringify(); + return ErrorMessage::FileLocation(tok, this).stringify(); } bool TokenList::validateToken(const Token* tok) const diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 29f38d1ee..a10494509 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -107,9 +107,9 @@ static void bailoutInternal(TokenList *tokenlist, ErrorLogger *errorLogger, const Token *tok, const std::string &what, const std::string &file, int line, const std::string &function) { - std::list callstack(1, ErrorLogger::ErrorMessage::FileLocation(tok, tokenlist)); - ErrorLogger::ErrorMessage errmsg(callstack, tokenlist->getSourceFilePath(), Severity::debug, - Path::stripDirectoryPart(file) + ":" + MathLib::toString(line) + ":" + function + " bailout: " + what, "valueFlowBailout", false); + std::list callstack(1, ErrorMessage::FileLocation(tok, tokenlist)); + ErrorMessage errmsg(callstack, tokenlist->getSourceFilePath(), Severity::debug, + Path::stripDirectoryPart(file) + ":" + MathLib::toString(line) + ":" + function + " bailout: " + what, "valueFlowBailout", false); errorLogger->reportErr(errmsg); } diff --git a/oss-fuzz/main.cpp b/oss-fuzz/main.cpp index 061d6dec0..f5f64647b 100644 --- a/oss-fuzz/main.cpp +++ b/oss-fuzz/main.cpp @@ -22,7 +22,7 @@ public: void reportOut(const std::string &outmsg) OVERRIDE { (void)outmsg; } - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE { + void reportErr(const ErrorMessage &msg) OVERRIDE { (void)msg; } void reportProgress(const std::string& filename, diff --git a/test/testcppcheck.cpp b/test/testcppcheck.cpp index c34b8c173..0afe35707 100644 --- a/test/testcppcheck.cpp +++ b/test/testcppcheck.cpp @@ -40,7 +40,7 @@ private: void reportOut(const std::string & /*outmsg*/) OVERRIDE {} void bughuntingReport(const std::string & /*str*/) OVERRIDE {} - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE { + void reportErr(const ErrorMessage &msg) OVERRIDE { id.push_back(msg.id); } }; diff --git a/test/testerrorlogger.cpp b/test/testerrorlogger.cpp index 1c1a4bb7e..7b976171c 100644 --- a/test/testerrorlogger.cpp +++ b/test/testerrorlogger.cpp @@ -32,8 +32,8 @@ public: } private: - const ErrorLogger::ErrorMessage::FileLocation fooCpp5; - const ErrorLogger::ErrorMessage::FileLocation barCpp8; + const ErrorMessage::FileLocation fooCpp5; + const ErrorMessage::FileLocation barCpp8; void run() OVERRIDE { TEST_CASE(PatternSearchReplace); @@ -65,7 +65,7 @@ private: void TestPatternSearchReplace(const std::string& idPlaceholder, const std::string& id) const { const std::string plainText = "text"; - ErrorLogger::ErrorMessage message; + ErrorMessage message; message.id = id; std::string serialized = message.toString(true, idPlaceholder + plainText + idPlaceholder); @@ -98,20 +98,20 @@ private: } void FileLocationDefaults() const { - ErrorLogger::ErrorMessage::FileLocation loc; + ErrorMessage::FileLocation loc; ASSERT_EQUALS("", loc.getfile()); ASSERT_EQUALS(0, loc.line); } void FileLocationSetFile() const { - ErrorLogger::ErrorMessage::FileLocation loc; + ErrorMessage::FileLocation loc; loc.setfile("foo.cpp"); ASSERT_EQUALS("foo.cpp", loc.getfile()); ASSERT_EQUALS(0, loc.line); } void ErrorMessageConstruct() const { - std::list locs(1, fooCpp5); + std::list locs(1, fooCpp5); ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.", "errorId", false); ASSERT_EQUALS(1, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -121,7 +121,7 @@ private: } void ErrorMessageConstructLocations() const { - std::list locs = { fooCpp5, barCpp8 }; + std::list locs = { fooCpp5, barCpp8 }; ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.", "errorId", false); ASSERT_EQUALS(2, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -131,7 +131,7 @@ private: } void ErrorMessageVerbose() const { - std::list locs(1, fooCpp5); + std::list locs(1, fooCpp5); ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); ASSERT_EQUALS(1, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -141,7 +141,7 @@ private: } void ErrorMessageVerboseLocations() const { - std::list locs = { fooCpp5, barCpp8 }; + std::list locs = { fooCpp5, barCpp8 }; ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); ASSERT_EQUALS(2, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -151,7 +151,7 @@ private: } void CustomFormat() const { - std::list locs(1, fooCpp5); + std::list locs(1, fooCpp5); ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); ASSERT_EQUALS(1, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -161,7 +161,7 @@ private: } void CustomFormat2() const { - std::list locs(1, fooCpp5); + std::list locs(1, fooCpp5); ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); ASSERT_EQUALS(1, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -172,7 +172,7 @@ private: void CustomFormatLocations() const { // Check that first location from location stack is used in template - std::list locs = { fooCpp5, barCpp8 }; + std::list locs = { fooCpp5, barCpp8 }; ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); ASSERT_EQUALS(2, msg.callStack.size()); ASSERT_EQUALS("Programming error.", msg.shortMessage()); @@ -182,14 +182,14 @@ private: } void ToXmlV2() const { - std::list locs(1, fooCpp5); + std::list locs(1, fooCpp5); ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); std::string header("\n\n"); header += " \n "; - ASSERT_EQUALS(header, ErrorLogger::ErrorMessage::getXMLHeader()); - ASSERT_EQUALS(" \n", ErrorLogger::ErrorMessage::getXMLFooter()); + ASSERT_EQUALS(header, ErrorMessage::getXMLHeader()); + ASSERT_EQUALS(" \n", ErrorMessage::getXMLFooter()); std::string message(" \n"; message += " \n "; @@ -197,15 +197,15 @@ private: } void ToXmlV2Locations() const { - std::list locs = { fooCpp5, barCpp8 }; + std::list locs = { fooCpp5, barCpp8 }; locs.back().setinfo("ä"); ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nVerbose error", "errorId", false); std::string header("\n\n"); header += " \n "; - ASSERT_EQUALS(header, ErrorLogger::ErrorMessage::getXMLHeader()); - ASSERT_EQUALS(" \n", ErrorLogger::ErrorMessage::getXMLFooter()); + ASSERT_EQUALS(header, ErrorMessage::getXMLHeader()); + ASSERT_EQUALS(" \n", ErrorMessage::getXMLFooter()); std::string message(" \n"; message += " \n"; @@ -215,7 +215,7 @@ private: void ToXmlV2Encoding() const { { - std::list locs; + std::list locs; ErrorMessage msg(locs, emptyString, Severity::error, "Programming error.\nComparing \"\203\" with \"\003\"", "errorId", false); const std::string expected(" "); ASSERT_EQUALS(expected, msg.toXML()); @@ -223,7 +223,7 @@ private: { const char code1[]="äöü"; const char code2[]="\x12\x00\x00\x01"; - std::list locs; + std::list locs; ErrorMessage msg1(locs, emptyString, Severity::error, std::string("Programming error.\nReading \"")+code1+"\"", "errorId", false); ASSERT_EQUALS(" ", msg1.toXML()); ErrorMessage msg2(locs, emptyString, Severity::error, std::string("Programming error.\nReading \"")+code2+"\"", "errorId", false); @@ -233,7 +233,7 @@ private: void InconclusiveXml() const { // Location - std::list locs(1, fooCpp5); + std::list locs(1, fooCpp5); // Inconclusive error message ErrorMessage msg(locs, emptyString, Severity::error, "Programming error", "errorId", true); @@ -247,7 +247,7 @@ private: void SerializeInconclusiveMessage() const { // Inconclusive error message - std::list locs; + std::list locs; ErrorMessage msg(locs, emptyString, Severity::error, "Programming error", "errorId", true); ASSERT_EQUALS("7 errorId" "5 error" @@ -272,7 +272,7 @@ private: } void SerializeSanitize() const { - std::list locs; + std::list locs; ErrorMessage msg(locs, emptyString, Severity::error, std::string("Illegal character in \"foo\001bar\""), "errorId", false); ASSERT_EQUALS("7 errorId" @@ -291,11 +291,11 @@ private: } void SerializeFileLocation() const { - ErrorLogger::ErrorMessage::FileLocation loc1(":/,;", 654, 33); + ErrorMessage::FileLocation loc1(":/,;", 654, 33); loc1.setfile("[]:;,()"); loc1.setinfo("abcd:/,"); - std::list locs{loc1}; + std::list locs{loc1}; ErrorMessage msg(locs, emptyString, Severity::error, "Programming error", "errorId", true); diff --git a/test/testgarbage.cpp b/test/testgarbage.cpp index b3fe587c9..48c1df944 100644 --- a/test/testgarbage.cpp +++ b/test/testgarbage.cpp @@ -17,7 +17,6 @@ */ #include "check.h" -#include "errorlogger.h" #include "settings.h" #include "testsuite.h" #include "token.h" diff --git a/test/testlibrary.cpp b/test/testlibrary.cpp index 64f41030f..a24c034a4 100644 --- a/test/testlibrary.cpp +++ b/test/testlibrary.cpp @@ -16,7 +16,6 @@ * along with this program. If not, see . */ -#include "errorlogger.h" #include "library.h" #include "settings.h" #include "standards.h" diff --git a/test/testsamples.cpp b/test/testsamples.cpp index 48c268bd0..b1bbff3bf 100644 --- a/test/testsamples.cpp +++ b/test/testsamples.cpp @@ -131,7 +131,7 @@ private: exec.reportOut(*i); - ErrorLogger::ErrorMessage errMessage; + ErrorMessage errMessage; errMessage.setmsg(*i); // no xml option @@ -154,9 +154,9 @@ private: CLEAR_REDIRECT_ERROUT; // possible change of msg for xml option - // with ErrorLogger::ErrorMessage::fixInvalidChars(), plus additional XML formatting + // with ErrorMessage::fixInvalidChars(), plus additional XML formatting execXML.reportInfo(errMessage); - // undo the effects of "ErrorLogger::ErrorMessage::fixInvalidChars()" + // undo the effects of "ErrorMessage::fixInvalidChars()" // replacing octal constants with characters std::string myErr; std::string myErrOrg = GET_REDIRECT_ERROUT; diff --git a/test/testsuite.cpp b/test/testsuite.cpp index ec7e19843..d4a53463c 100644 --- a/test/testsuite.cpp +++ b/test/testsuite.cpp @@ -360,7 +360,7 @@ void TestFixture::reportOut(const std::string & outmsg) output << outmsg << std::endl; } -void TestFixture::reportErr(const ErrorLogger::ErrorMessage &msg) +void TestFixture::reportErr(const ErrorMessage &msg) { const std::string errormessage(msg.toString(mVerbose, mTemplateFormat, mTemplateLocation)); if (errout.str().find(errormessage) == std::string::npos) diff --git a/test/testsuite.h b/test/testsuite.h index 2c1526eb7..3db7c6117 100644 --- a/test/testsuite.h +++ b/test/testsuite.h @@ -84,7 +84,7 @@ protected: public: void bughuntingReport(const std::string &/*str*/) OVERRIDE {} void reportOut(const std::string &outmsg) OVERRIDE; - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE; + void reportErr(const ErrorMessage &msg) OVERRIDE; void run(const std::string &str); static void printHelp(); const std::string classname; diff --git a/test/testutils.h b/test/testutils.h index 9277539ca..6b243ffa7 100644 --- a/test/testutils.h +++ b/test/testutils.h @@ -53,7 +53,7 @@ public: void reportOut(const std::string &outmsg) OVERRIDE { next->reportOut(outmsg); } - void reportErr(const ErrorLogger::ErrorMessage &msg) OVERRIDE { + void reportErr(const ErrorMessage &msg) OVERRIDE { if (!msg.callStack.empty() && !settings.nomsg.isSuppressed(msg.toSuppressionsErrorMessage())) next->reportErr(msg); } diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index ce57a7b61..303b8d55f 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -13,9 +13,13 @@ add_executable(dmake EXCLUDE_FROM_ALL dmake.cpp ${CMAKE_SOURCE_DIR}/cli/filelister.cpp ${srcs_tools} + ${CMAKE_SOURCE_DIR}/lib/utils.cpp ${CMAKE_SOURCE_DIR}/externals/simplecpp/simplecpp ) target_include_directories(dmake PRIVATE ${CMAKE_SOURCE_DIR}/cli ${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/externals/simplecpp) +if (WIN32 AND NOT BORLAND) + target_link_libraries(dmake Shlwapi.lib) +endif() add_custom_target(run-dmake $ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}