diff --git a/.github/workflows/iwyu.yml b/.github/workflows/iwyu.yml index d5afa818e..80d241fc5 100644 --- a/.github/workflows/iwyu.yml +++ b/.github/workflows/iwyu.yml @@ -39,6 +39,7 @@ jobs: make -C cmake.output autogen # make sure the auto-generated GUI dependencies exist make -C cmake.output gui-build-deps + make -C cmake.output triage-build-ui-deps - name: Build Qt mappings run: | @@ -52,6 +53,11 @@ jobs: # do not fail for now so the output is being saved iwyu_tool -p cmake.output -j $(nproc) -- -w > iwyu.log || true + - uses: actions/upload-artifact@v3 + with: + name: Compilation Database + path: ./cmake.output/compile_commands.json + - uses: actions/upload-artifact@v3 with: name: Qt Mappings diff --git a/Makefile b/Makefile index fc9126b5b..c41d01645 100644 --- a/Makefile +++ b/Makefile @@ -505,7 +505,7 @@ $(libcppdir)/checkmemoryleak.o: lib/checkmemoryleak.cpp lib/astutils.h lib/check $(libcppdir)/checknullpointer.o: lib/checknullpointer.cpp lib/astutils.h lib/check.h lib/checknullpointer.h lib/color.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/smallvector.h lib/sourcelocation.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 lib/vfvalue.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/checknullpointer.cpp -$(libcppdir)/checkother.o: lib/checkother.cpp lib/astutils.h lib/check.h lib/checkclass.h lib/checkother.h lib/checkuninitvar.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/fwdanalysis.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.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 lib/vfvalue.h +$(libcppdir)/checkother.o: lib/checkother.cpp lib/astutils.h lib/check.h lib/checkclass.h lib/checkother.h lib/config.h lib/errortypes.h lib/fwdanalysis.h lib/importproject.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.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 lib/vfvalue.h $(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/checkother.cpp $(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/sourcelocation.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/vfvalue.h diff --git a/cli/cmdlineparser.cpp b/cli/cmdlineparser.cpp index f0045ae71..0cd599cb7 100644 --- a/cli/cmdlineparser.cpp +++ b/cli/cmdlineparser.cpp @@ -37,11 +37,14 @@ #include #include // EXIT_FAILURE #include -#include +#include // IWYU pragma: keep #include +#include #include #include #include // IWYU pragma: keep +#include +#include #include #ifdef HAVE_RULES diff --git a/cli/cppcheckexecutor.cpp b/cli/cppcheckexecutor.cpp index f2e50e346..b9c28d36e 100644 --- a/cli/cppcheckexecutor.cpp +++ b/cli/cppcheckexecutor.cpp @@ -41,11 +41,13 @@ #include "processexecutor.h" #endif +#include #include #include #include // EXIT_SUCCESS and EXIT_FAILURE #include #include +#include #include #include #include // IWYU pragma: keep diff --git a/cli/precompiled.h b/cli/precompiled.h index 352f372aa..c77546f48 100644 --- a/cli/precompiled.h +++ b/cli/precompiled.h @@ -18,6 +18,8 @@ #pragma once +// IWYU pragma: begin_keep #include "config.h" #include "cppcheck.h" #include "settings.h" +// IWYU pragma: end_keep diff --git a/cli/processexecutor.cpp b/cli/processexecutor.cpp index d3b0d8e10..2aaacdd01 100644 --- a/cli/processexecutor.cpp +++ b/cli/processexecutor.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include diff --git a/gui/precompiled.h b/gui/precompiled.h index c21895879..7e10f3e1a 100644 --- a/gui/precompiled.h +++ b/gui/precompiled.h @@ -18,6 +18,7 @@ #pragma once +// IWYU pragma: begin_keep #include "checkthread.h" #include "codeeditor.h" #include "codeeditorstyle.h" @@ -29,3 +30,4 @@ #include #include +// IWYU pragma: end_keep diff --git a/gui/threadhandler.cpp b/gui/threadhandler.cpp index 4930a79c9..e66ebe61b 100644 --- a/gui/threadhandler.cpp +++ b/gui/threadhandler.cpp @@ -23,7 +23,6 @@ #include "resultsview.h" #include "settings.h" -#include #include #include diff --git a/lib/check.cpp b/lib/check.cpp index e210ef7a3..f01d938a6 100644 --- a/lib/check.cpp +++ b/lib/check.cpp @@ -26,8 +26,10 @@ #include "tokenize.h" #include "vfvalue.h" +#include #include #include +#include #include //--------------------------------------------------------------------------- diff --git a/lib/checkautovariables.cpp b/lib/checkautovariables.cpp index f048709ba..ce7a72038 100644 --- a/lib/checkautovariables.cpp +++ b/lib/checkautovariables.cpp @@ -31,6 +31,7 @@ #include "valueflow.h" #include "vfvalue.h" +#include #include #include #include diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index 915269f19..115432515 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/checkexceptionsafety.cpp b/lib/checkexceptionsafety.cpp index 4af6bde91..26454bafd 100644 --- a/lib/checkexceptionsafety.cpp +++ b/lib/checkexceptionsafety.cpp @@ -19,6 +19,8 @@ //--------------------------------------------------------------------------- #include "checkexceptionsafety.h" +#include "errortypes.h" +#include "library.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/lib/checkexceptionsafety.h b/lib/checkexceptionsafety.h index ace477748..6a5d5f76d 100644 --- a/lib/checkexceptionsafety.h +++ b/lib/checkexceptionsafety.h @@ -23,7 +23,6 @@ #include "check.h" #include "config.h" -#include "errortypes.h" #include "tokenize.h" #include diff --git a/lib/checkfunctions.cpp b/lib/checkfunctions.cpp index 888798fe1..caf32a1ff 100644 --- a/lib/checkfunctions.cpp +++ b/lib/checkfunctions.cpp @@ -32,6 +32,7 @@ #include "vfvalue.h" #include +#include #include #include #include diff --git a/lib/checkinternal.cpp b/lib/checkinternal.cpp index bbe77e9eb..4c2160467 100644 --- a/lib/checkinternal.cpp +++ b/lib/checkinternal.cpp @@ -25,8 +25,9 @@ #include "token.h" #include "tokenize.h" -#include #include +#include +#include // Register this check class (by creating a static instance of it). // Disabled in release builds diff --git a/lib/checkleakautovar.cpp b/lib/checkleakautovar.cpp index f4fc853ee..8fe67d81a 100644 --- a/lib/checkleakautovar.cpp +++ b/lib/checkleakautovar.cpp @@ -32,7 +32,9 @@ #include "token.h" #include "tokenize.h" +#include #include +#include #include #include #include diff --git a/lib/checkother.cpp b/lib/checkother.cpp index 49e5052ae..2fc29dede 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -29,11 +29,11 @@ #include "symboldatabase.h" #include "token.h" #include "tokenize.h" +#include "tokenlist.h" #include "utils.h" #include "valueflow.h" #include "vfvalue.h" -#include "checkuninitvar.h" // CheckUninitVar::isVariableUsage #include "checkclass.h" // CheckClass::stl_containers_not_const #include // find_if() diff --git a/lib/checksizeof.cpp b/lib/checksizeof.cpp index c22795812..0d1b8916e 100644 --- a/lib/checksizeof.cpp +++ b/lib/checksizeof.cpp @@ -26,6 +26,8 @@ #include "token.h" #include "tokenize.h" +#include +#include #include #include diff --git a/lib/checkunusedfunctions.cpp b/lib/checkunusedfunctions.cpp index 455829a38..50baf6af5 100644 --- a/lib/checkunusedfunctions.cpp +++ b/lib/checkunusedfunctions.cpp @@ -35,8 +35,10 @@ #include #include #include // IWYU pragma: keep +#include #include #include // IWYU pragma: keep +#include #include #include diff --git a/lib/clangimport.cpp b/lib/clangimport.cpp index 35461a402..77eda9aa5 100644 --- a/lib/clangimport.cpp +++ b/lib/clangimport.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/cppcheck.cpp b/lib/cppcheck.cpp index 212e9c56a..330161f72 100644 --- a/lib/cppcheck.cpp +++ b/lib/cppcheck.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include // <- TEMPORARY @@ -53,6 +54,7 @@ #include // IWYU pragma: keep #include #include +#include #include #include diff --git a/lib/cppcheck.h b/lib/cppcheck.h index 68a419f81..d4ffab71e 100644 --- a/lib/cppcheck.h +++ b/lib/cppcheck.h @@ -32,7 +32,6 @@ #include #include // IWYU pragma: keep #include -#include #include #include #include diff --git a/lib/errorlogger.cpp b/lib/errorlogger.cpp index b4a3ae1c1..23f6502b8 100644 --- a/lib/errorlogger.cpp +++ b/lib/errorlogger.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include // IWYU pragma: keep #include diff --git a/lib/fwdanalysis.cpp b/lib/fwdanalysis.cpp index 9682f056d..b3a8930c0 100644 --- a/lib/fwdanalysis.cpp +++ b/lib/fwdanalysis.cpp @@ -25,7 +25,11 @@ #include "token.h" #include "vfvalue.h" +#include +#include +#include #include +#include static bool isUnchanged(const Token *startToken, const Token *endToken, const std::set &exprVarIds, bool local) { diff --git a/lib/importproject.cpp b/lib/importproject.cpp index fb6db23fe..cbe5a59e5 100644 --- a/lib/importproject.cpp +++ b/lib/importproject.cpp @@ -33,6 +33,7 @@ #include #include #include // IWYU pragma: keep +#include #include #include diff --git a/lib/library.cpp b/lib/library.cpp index 559e7adfc..b6dbff7fa 100644 --- a/lib/library.cpp +++ b/lib/library.cpp @@ -28,6 +28,7 @@ #include "valueflow.h" #include "vfvalue.h" +#include #include #include #include diff --git a/lib/mathlib.cpp b/lib/mathlib.cpp index 9457790f8..446b7dc46 100644 --- a/lib/mathlib.cpp +++ b/lib/mathlib.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include diff --git a/lib/precompiled.h b/lib/precompiled.h index 1a2c9dd84..6dcee4197 100644 --- a/lib/precompiled.h +++ b/lib/precompiled.h @@ -17,6 +17,8 @@ */ #pragma once + +// IWYU pragma: begin_keep #include "astutils.h" #include "errorlogger.h" #include "library.h" @@ -27,3 +29,4 @@ #include "suppressions.h" #include "utils.h" #include "valueflow.h" +// IWYU pragma: end_keep diff --git a/lib/settings.h b/lib/settings.h index 79362e4b7..64a42f4fc 100644 --- a/lib/settings.h +++ b/lib/settings.h @@ -32,6 +32,7 @@ #include #include +#include #include #include #include diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 364e94709..1e2ddedbb 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -45,6 +45,7 @@ #include // IWYU pragma: keep #include #include +#include #include #include #include diff --git a/lib/symboldatabase.h b/lib/symboldatabase.h index b583ba402..9942e1620 100644 --- a/lib/symboldatabase.h +++ b/lib/symboldatabase.h @@ -28,6 +28,7 @@ #include "sourcelocation.h" #include "token.h" +#include #include #include #include diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index e5839c954..34fd69559 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -40,7 +40,9 @@ #include #include #include +#include #include +#include #include #include #include diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index af6980365..ec726bca8 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -93,6 +93,7 @@ #include "programmemory.h" #include "reverseanalyzer.h" #include "settings.h" +#include "smallvector.h" #include "sourcelocation.h" #include "standards.h" #include "symboldatabase.h" @@ -106,13 +107,13 @@ #include #include #include +#include #include #include #include #include #include #include -#include #include #include #include diff --git a/test/fixture.h b/test/fixture.h index 4daf02b92..8baf43d3e 100644 --- a/test/fixture.h +++ b/test/fixture.h @@ -26,11 +26,15 @@ #include "errorlogger.h" #include +#include #include #include +#include #include class options; +class Settings; +class Tokenizer; class TestFixture : public ErrorLogger { private: diff --git a/test/helpers.cpp b/test/helpers.cpp index 31af95c7f..e93fdc669 100644 --- a/test/helpers.cpp +++ b/test/helpers.cpp @@ -20,11 +20,14 @@ #include "path.h" +#include +#include +#include + #ifdef _WIN32 #include #else #include -#include #include #endif diff --git a/test/helpers.h b/test/helpers.h index d22690f73..93974d386 100644 --- a/test/helpers.h +++ b/test/helpers.h @@ -26,12 +26,11 @@ #include "tokenize.h" #include "tokenlist.h" -#include -#include +#include // IWYU pragma: keep #include #include // IWYU pragma: keep #include -#include + class Token; diff --git a/test/precompiled.h b/test/precompiled.h index 1da2e84cd..9fba4c2a6 100644 --- a/test/precompiled.h +++ b/test/precompiled.h @@ -18,6 +18,7 @@ #pragma once +// IWYU pragma: begin_keep #include "check.h" #include "config.h" #include "importproject.h" @@ -28,3 +29,4 @@ #include "token.h" #include "tokenlist.h" #include "tokenize.h" +// IWYU pragma: end_keep diff --git a/test/testassert.cpp b/test/testassert.cpp index b2f7f3fa8..5cc1d83b1 100644 --- a/test/testassert.cpp +++ b/test/testassert.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep diff --git a/test/testautovariables.cpp b/test/testautovariables.cpp index 49e07ab7f..b64ed0d1b 100644 --- a/test/testautovariables.cpp +++ b/test/testautovariables.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep class TestAutoVariables : public TestFixture { diff --git a/test/testbool.cpp b/test/testbool.cpp index ed0741cb3..cd5af1b66 100644 --- a/test/testbool.cpp +++ b/test/testbool.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep class TestBool : public TestFixture { diff --git a/test/testboost.cpp b/test/testboost.cpp index 546e643ea..f2b919dcd 100644 --- a/test/testboost.cpp +++ b/test/testboost.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep class TestBoost : public TestFixture { diff --git a/test/testclangimport.cpp b/test/testclangimport.cpp index 9b2033168..40196ac25 100644 --- a/test/testclangimport.cpp +++ b/test/testclangimport.cpp @@ -15,7 +15,6 @@ // along with this program. If not, see . #include "clangimport.h" -#include "platform.h" #include "settings.h" #include "symboldatabase.h" #include "token.h" diff --git a/test/testcmdlineparser.cpp b/test/testcmdlineparser.cpp index 5d8a3c290..c7048d5cf 100644 --- a/test/testcmdlineparser.cpp +++ b/test/testcmdlineparser.cpp @@ -27,6 +27,7 @@ #include "fixture.h" #include "timer.h" +#include #include #include #include diff --git a/test/testcondition.cpp b/test/testcondition.cpp index f6a89ae20..7c8ae1316 100644 --- a/test/testcondition.cpp +++ b/test/testcondition.cpp @@ -25,6 +25,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include #include // IWYU pragma: keep #include diff --git a/test/testexceptionsafety.cpp b/test/testexceptionsafety.cpp index 116ff5a04..31cf267f2 100644 --- a/test/testexceptionsafety.cpp +++ b/test/testexceptionsafety.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep class TestExceptionSafety : public TestFixture { diff --git a/test/testinternal.cpp b/test/testinternal.cpp index 0396081c8..0904b62e0 100644 --- a/test/testinternal.cpp +++ b/test/testinternal.cpp @@ -21,7 +21,9 @@ #include "tokenize.h" #include "checkinternal.h" #include "fixture.h" +#include "settings.h" +#include #include class TestInternal : public TestFixture { diff --git a/test/testleakautovar.cpp b/test/testleakautovar.cpp index 43a3c9579..67d55393a 100644 --- a/test/testleakautovar.cpp +++ b/test/testleakautovar.cpp @@ -18,15 +18,16 @@ #include "checkleakautovar.h" -#include "errortypes.h" #include "library.h" #include "settings.h" #include "fixture.h" #include "tokenize.h" +#include #include #include // IWYU pragma: keep #include +#include #include #include @@ -36,6 +37,7 @@ class TestLeakAutoVarStrcpy; class TestLeakAutoVarWindows; +struct InternalError; class TestLeakAutoVar : public TestFixture { public: diff --git a/test/testother.cpp b/test/testother.cpp index 9a7f090d3..5a3ee21aa 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -26,6 +26,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include #include // IWYU pragma: keep #include diff --git a/test/testsizeof.cpp b/test/testsizeof.cpp index dae1d0923..30aea3e2f 100644 --- a/test/testsizeof.cpp +++ b/test/testsizeof.cpp @@ -22,6 +22,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include #include // IWYU pragma: keep #include diff --git a/test/teststl.cpp b/test/teststl.cpp index 0f2efccec..ebd09f363 100644 --- a/test/teststl.cpp +++ b/test/teststl.cpp @@ -25,6 +25,7 @@ #include "utils.h" #include +#include #include // IWYU pragma: keep #include diff --git a/test/teststring.cpp b/test/teststring.cpp index 34fda1ca4..a217f0925 100644 --- a/test/teststring.cpp +++ b/test/teststring.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index cc679eb1e..173721325 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -26,6 +26,7 @@ #include "tokenize.h" #include "tokenlist.h" +#include #include #include #include diff --git a/test/testtype.cpp b/test/testtype.cpp index ffccc4668..1730b3009 100644 --- a/test/testtype.cpp +++ b/test/testtype.cpp @@ -24,6 +24,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep #include diff --git a/test/testutils.cpp b/test/testutils.cpp index 546212b83..6ef95fa9e 100644 --- a/test/testutils.cpp +++ b/test/testutils.cpp @@ -18,6 +18,7 @@ #include "helpers.h" #include "fixture.h" +#include "settings.h" #include "utils.h" const Settings givenACodeSampleToTokenize::settings; diff --git a/test/testvaarg.cpp b/test/testvaarg.cpp index f56daec48..1db5cf73f 100644 --- a/test/testvaarg.cpp +++ b/test/testvaarg.cpp @@ -23,6 +23,7 @@ #include "fixture.h" #include "tokenize.h" +#include #include // IWYU pragma: keep class TestVaarg : public TestFixture { diff --git a/tools/dmake.cpp b/tools/dmake.cpp index f895c2561..5c6e66bc2 100644 --- a/tools/dmake.cpp +++ b/tools/dmake.cpp @@ -20,12 +20,18 @@ #include #include +#include #include // IWYU pragma: keep #include #include +#include +#include #include +#include #include +#include "config.h" + #include "../cli/filelister.h" #include "../lib/pathmatch.h" #include "../lib/utils.h"