diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-09-25 15:46:15 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-10-01 14:10:28 +0000 |
commit | b895dfa3821385311aa7b1be766195a3e586a283 (patch) | |
tree | 67b96cb788dbd617b2c1abbf9384ce85e849a06b /src/plugins/cpptools/cpptoolsreuse.cpp | |
parent | d2648db9140a6959b9eb269c5381ac8040c3f246 (diff) | |
download | qt-creator-b895dfa3821385311aa7b1be766195a3e586a283.tar.gz |
Clang/ClangTools: Separate custom diagnostic configs
Add a separate pool of custom diagnostic configs for the
ClangTools plugin. That is, the diagnostic configs in
Menu: Tools > C++ > Code Model
are not shared anymore with the configs at
Menu: Tools > Analyzer > ClangTools
On plugin initialization of ClangTools, move tidy/clazy related configs
to ClangTools.
Change-Id: Id06087a58b53e466a3d7bbac669550c5fbe9899d
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cpptoolsreuse.cpp')
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.cpp | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index 0d186f8421..bf37098f88 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -26,8 +26,9 @@ #include "cpptoolsreuse.h" #include "cppcodemodelsettings.h" -#include "cpptoolsplugin.h" #include "cpptools_clazychecks.h" +#include "cpptoolsconstants.h" +#include "cpptoolsplugin.h" #include <coreplugin/documentmanager.h> #include <coreplugin/editormanager/editormanager.h> @@ -351,4 +352,76 @@ QString clazyChecksForLevel(int level) return checks.join(','); } +static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model) +{ + // Pedantic + ClangDiagnosticConfig config; + config.setId("Builtin.Pedantic"); + config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel", + "Pedantic checks")); + config.setIsReadOnly(true); + config.setClangOptions(QStringList{QStringLiteral("-Wpedantic")}); + model.appendOrUpdate(config); + + // Questionable constructs + config = ClangDiagnosticConfig(); + config.setId("Builtin.Questionable"); + config.setDisplayName(QCoreApplication::translate( + "ClangDiagnosticConfigsModel", + "Checks for questionable constructs")); + config.setIsReadOnly(true); + config.setClangOptions(QStringList{ + QStringLiteral("-Wall"), + QStringLiteral("-Wextra"), + }); + model.appendOrUpdate(config); + + // Everything with exceptions + config = ClangDiagnosticConfig(); + config.setId(Constants::CPP_CLANG_BUILTIN_CONFIG_ID_EVERYTHING_WITH_EXCEPTIONS); + config.setDisplayName(QCoreApplication::translate( + "ClangDiagnosticConfigsModel", + "Checks for almost everything")); + config.setIsReadOnly(true); + config.setClangOptions(QStringList{ + QStringLiteral("-Weverything"), + QStringLiteral("-Wno-c++98-compat"), + QStringLiteral("-Wno-c++98-compat-pedantic"), + QStringLiteral("-Wno-unused-macros"), + QStringLiteral("-Wno-newline-eof"), + QStringLiteral("-Wno-exit-time-destructors"), + QStringLiteral("-Wno-global-constructors"), + QStringLiteral("-Wno-gnu-zero-variadic-macro-arguments"), + QStringLiteral("-Wno-documentation"), + QStringLiteral("-Wno-shadow"), + QStringLiteral("-Wno-switch-enum"), + QStringLiteral("-Wno-missing-prototypes"), // Not optimal for C projects. + QStringLiteral("-Wno-used-but-marked-unused"), // e.g. QTest::qWait + }); + model.appendOrUpdate(config); + + // Build system + config = ClangDiagnosticConfig(); + config.setId("Builtin.BuildSystem"); + config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel", + "Build-system warnings")); + config.setIsReadOnly(true); + config.setUseBuildSystemWarnings(true); + model.appendOrUpdate(config); +} + +ClangDiagnosticConfigsModel diagnosticConfigsModel(const ClangDiagnosticConfigs &customConfigs) +{ + ClangDiagnosticConfigsModel model; + addBuiltinConfigs(model); + for (const ClangDiagnosticConfig &config : customConfigs) + model.appendOrUpdate(config); + return model; +} + +ClangDiagnosticConfigsModel diagnosticConfigsModel() +{ + return diagnosticConfigsModel(CppTools::codeModelSettings()->clangCustomDiagnosticConfigs()); +} + } // CppTools |