summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolsreuse.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-09-25 15:46:15 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-10-01 14:10:28 +0000
commitb895dfa3821385311aa7b1be766195a3e586a283 (patch)
tree67b96cb788dbd617b2c1abbf9384ce85e849a06b /src/plugins/cpptools/cpptoolsreuse.cpp
parentd2648db9140a6959b9eb269c5381ac8040c3f246 (diff)
downloadqt-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.cpp75
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