Clang: Add default diagnostic configuration for Clazy

... and Clang-Tidy + Clazy.

Use stable 'level0' checks.

Change-Id: Icdcbb8807f7925bf93f8b4e11a00c2710d6693cd
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Ivan Donchevskii
2018-05-25 15:30:56 +02:00
parent 6575cfc674
commit 840ab99115
2 changed files with 51 additions and 16 deletions

View File

@@ -118,8 +118,11 @@ void ClangToolsSettings::readSettings()
m_buildBeforeAnalysis = settings->value(QString(buildBeforeAnalysisKey), true).toBool(); m_buildBeforeAnalysis = settings->value(QString(buildBeforeAnalysisKey), true).toBool();
m_savedDiagnosticConfigId = m_diagnosticConfigId m_diagnosticConfigId = Core::Id::fromSetting(settings->value(QString(diagnosticConfigIdKey)));
= Core::Id::fromSetting(settings->value(QString(diagnosticConfigIdKey))); if (!m_diagnosticConfigId.isValid())
m_diagnosticConfigId = "Builtin.TidyAndClazy";
m_savedDiagnosticConfigId = m_diagnosticConfigId;
updateSavedBuildBeforeAnalysiIfRequired(); updateSavedBuildBeforeAnalysiIfRequired();

View File

@@ -61,6 +61,19 @@ static void addConfigForPedanticWarnings(ClangDiagnosticConfigsModel &model)
model.appendOrUpdate(config); model.appendOrUpdate(config);
} }
constexpr const char *DEFAULT_TIDY_CHECKS = "-*,"
"bugprone-*,"
"cppcoreguidelines-*,"
"misc-*,"
"modernize-*,"
"performance-*,"
"readability-*,"
"-cppcoreguidelines-owning-memory,"
"-readability-braces-around-statements,"
"-readability-implicit-bool-conversion,"
"-readability-named-parameter";
constexpr const char *DEFAULT_CLAZY_CHECKS = "level0";
static void addConfigForAlmostEveryWarning(ClangDiagnosticConfigsModel &model) static void addConfigForAlmostEveryWarning(ClangDiagnosticConfigsModel &model)
{ {
ClangDiagnosticConfig config; ClangDiagnosticConfig config;
@@ -95,21 +108,9 @@ static void addConfigForTidy(ClangDiagnosticConfigsModel &model)
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel", config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
"Clang-Tidy thorough checks")); "Clang-Tidy thorough checks"));
config.setIsReadOnly(true); config.setIsReadOnly(true);
config.setClangOptions(QStringList{ config.setClangOptions(QStringList{QStringLiteral("-w")});
QStringLiteral("-w"),
});
config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList); config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList);
config.setClangTidyChecks("-*," config.setClangTidyChecks(QString::fromUtf8(DEFAULT_TIDY_CHECKS));
"bugprone-*,"
"cppcoreguidelines-*,"
"misc-*,"
"modernize-*,"
"performance-*,"
"readability-*,"
"-cppcoreguidelines-owning-memory,"
"-readability-braces-around-statements,"
"-readability-implicit-bool-conversion,"
"-readability-named-parameter");
model.appendOrUpdate(config); model.appendOrUpdate(config);
} }
@@ -131,6 +132,35 @@ static void addConfigForClangAnalyze(ClangDiagnosticConfigsModel &model)
model.appendOrUpdate(config); model.appendOrUpdate(config);
} }
static void addConfigForClazy(ClangDiagnosticConfigsModel &model)
{
ClangDiagnosticConfig config;
config.setId("Builtin.Clazy");
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
"Clazy level0 checks"));
config.setIsReadOnly(true);
config.setClangOptions(QStringList{QStringLiteral("-w")});
config.setClazyChecks(QString::fromUtf8(DEFAULT_CLAZY_CHECKS));
model.appendOrUpdate(config);
}
static void addConfigForTidyAndClazy(ClangDiagnosticConfigsModel &model)
{
ClangDiagnosticConfig config;
config.setId("Builtin.TidyAndClazy");
config.setDisplayName(QCoreApplication::translate("ClangDiagnosticConfigsModel",
"Clang-Tidy and Clazy preselected checks"));
config.setIsReadOnly(true);
config.setClangOptions(QStringList{QStringLiteral("-w")});
config.setClangTidyMode(ClangDiagnosticConfig::TidyMode::ChecksPrefixList);
config.setClangTidyChecks(QString::fromUtf8(DEFAULT_TIDY_CHECKS));
config.setClazyChecks(QString::fromUtf8(DEFAULT_CLAZY_CHECKS));
model.appendOrUpdate(config);
}
static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model) static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model)
{ {
addConfigForPedanticWarnings(model); addConfigForPedanticWarnings(model);
@@ -138,6 +168,8 @@ static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model)
addConfigForAlmostEveryWarning(model); addConfigForAlmostEveryWarning(model);
addConfigForTidy(model); addConfigForTidy(model);
addConfigForClangAnalyze(model); addConfigForClangAnalyze(model);
addConfigForClazy(model);
addConfigForTidyAndClazy(model);
} }
ClangDiagnosticConfigsModel::ClangDiagnosticConfigsModel(const ClangDiagnosticConfigs &customConfigs) ClangDiagnosticConfigsModel::ClangDiagnosticConfigsModel(const ClangDiagnosticConfigs &customConfigs)