ClangTools: Allow invoking clazy-standalone instead of clang

...this is for testing and debugging purposes so far.

Eventually, we want to switch to clazy-standalone. But as of now there
is no released clazy version supporting the required "-export-fixes="
option. It's in clazy's master branch only.

Change-Id: If09941dc387658bbc17646a9140f4ee8fad4d6b3
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-08-02 10:33:06 +02:00
parent a8f00d147c
commit 74688679b2
3 changed files with 37 additions and 2 deletions

View File

@@ -50,8 +50,12 @@ QList<RunnerCreator> ClangTidyClazyRunWorker::runnerCreators()
if (m_diagnosticConfig.clangTidyMode() != CppTools::ClangDiagnosticConfig::TidyMode::Disabled)
creators << [this]() { return createRunner<ClangTidyRunner>(); };
if (!m_diagnosticConfig.clazyChecks().isEmpty())
if (!m_diagnosticConfig.clazyChecks().isEmpty()) {
if (!qEnvironmentVariable("QTC_USE_CLAZY_STANDALONE_PATH").isEmpty())
creators << [this]() { return createRunner<ClazyStandaloneRunner>(); };
else
creators << [this]() { return createRunner<ClazyPluginRunner>(); };
}
return creators;
}

View File

@@ -86,6 +86,14 @@ static QStringList tidyChecksArguments(const ClangDiagnosticConfig diagnosticCon
return {};
}
static QStringList clazyChecksArguments(const ClangDiagnosticConfig diagnosticConfig)
{
const QString clazyChecks = diagnosticConfig.clazyChecks();
if (!clazyChecks.isEmpty())
return {"-checks=" + diagnosticConfig.clazyChecks()};
return {};
}
static QStringList mainToolArguments(const QString &mainFilePath, const QString &outputFilePath)
{
return {
@@ -123,6 +131,21 @@ ClangTidyRunner::ClangTidyRunner(const ClangDiagnosticConfig &config, QObject *p
});
}
ClazyStandaloneRunner::ClazyStandaloneRunner(const ClangDiagnosticConfig &config, QObject *parent)
: ClangToolRunner(parent)
{
setName(tr("Clazy"));
setOutputFileFormat(OutputFileFormat::Yaml);
setExecutable(qEnvironmentVariable("QTC_USE_CLAZY_STANDALONE_PATH"));
setArgsCreator([this, config](const QStringList &baseOptions) {
return QStringList()
<< clazyChecksArguments(config)
<< mainToolArguments(filePath(), m_logFile)
<< "--"
<< clangArguments(config, baseOptions);
});
}
ClazyPluginRunner::ClazyPluginRunner(const ClangDiagnosticConfig &config, QObject *parent)
: ClangToolRunner(parent)
{

View File

@@ -40,6 +40,14 @@ public:
ClangTidyRunner(const CppTools::ClangDiagnosticConfig &config, QObject *parent = nullptr);
};
class ClazyStandaloneRunner final : public ClangToolRunner
{
Q_OBJECT
public:
ClazyStandaloneRunner(const CppTools::ClangDiagnosticConfig &config, QObject *parent = nullptr);
};
class ClazyPluginRunner final : public ClangToolRunner
{
Q_OBJECT