diff --git a/src/plugins/clangtools/clangtidyclazyruncontrol.cpp b/src/plugins/clangtools/clangtidyclazyruncontrol.cpp index 8be64c2cfe5..6064686951c 100644 --- a/src/plugins/clangtools/clangtidyclazyruncontrol.cpp +++ b/src/plugins/clangtools/clangtidyclazyruncontrol.cpp @@ -50,8 +50,12 @@ QList ClangTidyClazyRunWorker::runnerCreators() if (m_diagnosticConfig.clangTidyMode() != CppTools::ClangDiagnosticConfig::TidyMode::Disabled) creators << [this]() { return createRunner(); }; - if (!m_diagnosticConfig.clazyChecks().isEmpty()) - creators << [this]() { return createRunner(); }; + if (!m_diagnosticConfig.clazyChecks().isEmpty()) { + if (!qEnvironmentVariable("QTC_USE_CLAZY_STANDALONE_PATH").isEmpty()) + creators << [this]() { return createRunner(); }; + else + creators << [this]() { return createRunner(); }; + } return creators; } diff --git a/src/plugins/clangtools/clangtidyclazyrunner.cpp b/src/plugins/clangtools/clangtidyclazyrunner.cpp index c09c914b111..1a3a0cea47e 100644 --- a/src/plugins/clangtools/clangtidyclazyrunner.cpp +++ b/src/plugins/clangtools/clangtidyclazyrunner.cpp @@ -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) { diff --git a/src/plugins/clangtools/clangtidyclazyrunner.h b/src/plugins/clangtools/clangtidyclazyrunner.h index 1edc684c0ff..72cd7a155c9 100644 --- a/src/plugins/clangtools/clangtidyclazyrunner.h +++ b/src/plugins/clangtools/clangtidyclazyrunner.h @@ -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