forked from qt-creator/qt-creator
ClangTools: Use separate runners for tidy and clazy
For a file to analyze, start one process for tidy and one for clazy. No functional change. Change-Id: I049faed5ddbe306e4690ec6831fad19de0de35f6 Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -45,14 +45,20 @@ ClangTidyClazyRunWorker::ClangTidyClazyRunWorker(RunControl *runControl,
|
||||
|
||||
QList<RunnerCreator> ClangTidyClazyRunWorker::runnerCreators()
|
||||
{
|
||||
return {
|
||||
[this]() { return createRunner(); }
|
||||
};
|
||||
QList<RunnerCreator> creators;
|
||||
|
||||
if (!m_diagnosticConfig.clazyChecks().isEmpty())
|
||||
creators << [this]() { return createRunner<ClazyRunner>(); };
|
||||
if (m_diagnosticConfig.clangTidyMode() != CppTools::ClangDiagnosticConfig::TidyMode::Disabled)
|
||||
creators << [this]() { return createRunner<ClangTidyRunner>(); };
|
||||
|
||||
return creators;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
ClangToolRunner *ClangTidyClazyRunWorker::createRunner()
|
||||
{
|
||||
auto runner = new ClangTidyClazyRunner(m_diagnosticConfig, this);
|
||||
auto runner = new T(m_diagnosticConfig, this);
|
||||
runner->init(m_clangExecutable, m_temporaryDir.path(), m_environment);
|
||||
connect(runner, &ClangToolRunner::finishedWithSuccess,
|
||||
this, &ClangTidyClazyRunWorker::onRunnerFinishedWithSuccess);
|
||||
|
@@ -46,7 +46,7 @@ protected:
|
||||
ClangTool *tool() final;
|
||||
|
||||
private:
|
||||
ClangToolRunner *createRunner();
|
||||
template <class T> ClangToolRunner *createRunner();
|
||||
|
||||
private:
|
||||
CppTools::ClangDiagnosticConfig m_diagnosticConfig;
|
||||
|
@@ -100,19 +100,28 @@ static QStringList clazyPluginArguments(const ClangDiagnosticConfig diagnosticCo
|
||||
return arguments;
|
||||
}
|
||||
|
||||
ClangTidyClazyRunner::ClangTidyClazyRunner(const ClangDiagnosticConfig &config,
|
||||
QObject *parent)
|
||||
ClangTidyRunner::ClangTidyRunner(const ClangDiagnosticConfig &config, QObject *parent)
|
||||
: ClangToolRunner(parent)
|
||||
{
|
||||
setName(tr("Clang-Tidy/Clazy"));
|
||||
setName(tr("Clang-Tidy"));
|
||||
setArgsCreator([this, config](const QStringList &baseOptions) {
|
||||
return commonArguments(baseOptions, m_logFile, config)
|
||||
<< tidyPluginArguments(config)
|
||||
<< clazyPluginArguments(config)
|
||||
<< baseOptions
|
||||
<< QDir::toNativeSeparators(filePath());
|
||||
});
|
||||
}
|
||||
|
||||
ClazyRunner::ClazyRunner(const ClangDiagnosticConfig &config, QObject *parent)
|
||||
: ClangToolRunner(parent)
|
||||
{
|
||||
setName(tr("Clazy"));
|
||||
setArgsCreator([this, config](const QStringList &baseOptions) {
|
||||
return commonArguments(baseOptions, m_logFile, config)
|
||||
<< clazyPluginArguments(config) << baseOptions
|
||||
<< QDir::toNativeSeparators(filePath());
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ClangTools
|
||||
|
@@ -32,12 +32,20 @@
|
||||
namespace ClangTools {
|
||||
namespace Internal {
|
||||
|
||||
class ClangTidyClazyRunner final : public ClangToolRunner
|
||||
class ClangTidyRunner final : public ClangToolRunner
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ClangTidyClazyRunner(const CppTools::ClangDiagnosticConfig &config, QObject *parent = nullptr);
|
||||
ClangTidyRunner(const CppTools::ClangDiagnosticConfig &config, QObject *parent = nullptr);
|
||||
};
|
||||
|
||||
class ClazyRunner final : public ClangToolRunner
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ClazyRunner(const CppTools::ClangDiagnosticConfig &config, QObject *parent = nullptr);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
@@ -390,7 +390,8 @@ void ClangToolRunWorker::analyzeNextFile()
|
||||
m_runners.insert(runner);
|
||||
QTC_ASSERT(runner->run(unit.file, unit.arguments), return);
|
||||
|
||||
appendMessage(tr("Analyzing \"%1\".").arg(FilePath::fromString(unit.file).toUserOutput()),
|
||||
appendMessage(tr("Analyzing \"%1\" [%2].")
|
||||
.arg(FilePath::fromString(unit.file).toUserOutput(), runner->name()),
|
||||
Utils::StdOutFormat);
|
||||
}
|
||||
|
||||
|
@@ -58,6 +58,7 @@ public:
|
||||
// (2) -o output-file
|
||||
bool run(const QString &filePath, const QStringList &compilerOptions = QStringList());
|
||||
|
||||
QString name() const { return m_name; }
|
||||
QString filePath() const { return m_filePath; }
|
||||
QString logFilePath() const { return m_logFile; }
|
||||
|
||||
|
Reference in New Issue
Block a user