forked from qt-creator/qt-creator
ClangTools: Query the tools for supported checks
...instead of hardcoding them for a particular version of clang-tidy/clazy. While at it, move also the tidy/clazy widgets to ClangTools as this simplifies feeding data to them. Reduce also the built-in configs to a single one using clang-tidy's and clazy's default checks as they look very reasonable and saves us some porting effort. Also, our previous built-in configs were just too numerous. Change-Id: Ib9297acb7810a940b86a23a8695530506a570394 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -79,6 +79,7 @@ bool ClangDiagnosticConfig::operator==(const ClangDiagnosticConfig &other) const
|
||||
&& m_clangOptions == other.m_clangOptions
|
||||
&& m_clangTidyMode == other.m_clangTidyMode
|
||||
&& m_clangTidyChecks == other.m_clangTidyChecks
|
||||
&& m_clazyMode == other.m_clazyMode
|
||||
&& m_clazyChecks == other.m_clazyChecks
|
||||
&& m_isReadOnly == other.m_isReadOnly
|
||||
&& m_useBuildSystemWarnings == other.m_useBuildSystemWarnings;
|
||||
@@ -89,6 +90,16 @@ bool ClangDiagnosticConfig::operator!=(const ClangDiagnosticConfig &other) const
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
ClangDiagnosticConfig::ClazyMode ClangDiagnosticConfig::clazyMode() const
|
||||
{
|
||||
return m_clazyMode;
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfig::setClazyMode(const ClazyMode &clazyMode)
|
||||
{
|
||||
m_clazyMode = clazyMode;
|
||||
}
|
||||
|
||||
bool ClangDiagnosticConfig::useBuildSystemWarnings() const
|
||||
{
|
||||
return m_useBuildSystemWarnings;
|
||||
@@ -135,15 +146,9 @@ static QString convertToNewClazyChecksFormat(const QString &checks)
|
||||
// Starting with Qt Creator 4.9, checks are a comma-separated string of checks: "x,y,z".
|
||||
|
||||
if (checks.isEmpty())
|
||||
return checks;
|
||||
|
||||
if (checks.size() == 6 && checks.startsWith("level")) {
|
||||
bool ok = false;
|
||||
const int level = checks.midRef(5).toInt(&ok);
|
||||
QTC_ASSERT(ok, return QString());
|
||||
return clazyChecksForLevel(level);
|
||||
}
|
||||
|
||||
return {};
|
||||
if (checks.size() == 6 && checks.startsWith("level"))
|
||||
return {};
|
||||
return checks;
|
||||
}
|
||||
|
||||
@@ -153,6 +158,7 @@ static const char diagnosticConfigDisplayNameKey[] = "displayName";
|
||||
static const char diagnosticConfigWarningsKey[] = "diagnosticOptions";
|
||||
static const char diagnosticConfigsTidyChecksKey[] = "clangTidyChecks";
|
||||
static const char diagnosticConfigsTidyModeKey[] = "clangTidyMode";
|
||||
static const char diagnosticConfigsClazyModeKey[] = "clazyMode";
|
||||
static const char diagnosticConfigsClazyChecksKey[] = "clazyChecks";
|
||||
|
||||
void diagnosticConfigsToSettings(QSettings *s, const ClangDiagnosticConfigs &configs)
|
||||
@@ -165,8 +171,8 @@ void diagnosticConfigsToSettings(QSettings *s, const ClangDiagnosticConfigs &con
|
||||
s->setValue(diagnosticConfigDisplayNameKey, config.displayName());
|
||||
s->setValue(diagnosticConfigWarningsKey, config.clangOptions());
|
||||
s->setValue(diagnosticConfigsTidyModeKey, int(config.clangTidyMode()));
|
||||
s->setValue(diagnosticConfigsTidyChecksKey,
|
||||
config.clangTidyChecks());
|
||||
s->setValue(diagnosticConfigsTidyChecksKey, config.clangTidyChecks());
|
||||
s->setValue(diagnosticConfigsClazyModeKey, int(config.clazyMode()));
|
||||
s->setValue(diagnosticConfigsClazyChecksKey, config.clazyChecks());
|
||||
}
|
||||
s->endArray();
|
||||
@@ -189,6 +195,8 @@ ClangDiagnosticConfigs diagnosticConfigsFromSettings(QSettings *s)
|
||||
config.setClangTidyChecks(
|
||||
s->value(diagnosticConfigsTidyChecksKey).toString());
|
||||
|
||||
config.setClazyMode(static_cast<ClangDiagnosticConfig::ClazyMode>(
|
||||
s->value(diagnosticConfigsClazyModeKey).toInt()));
|
||||
const QString clazyChecks = s->value(diagnosticConfigsClazyChecksKey).toString();
|
||||
config.setClazyChecks(convertToNewClazyChecksFormat(clazyChecks));
|
||||
configs.append(config);
|
||||
|
||||
Reference in New Issue
Block a user