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()
|
QList<RunnerCreator> ClangTidyClazyRunWorker::runnerCreators()
|
||||||
{
|
{
|
||||||
return {
|
QList<RunnerCreator> creators;
|
||||||
[this]() { return createRunner(); }
|
|
||||||
};
|
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()
|
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);
|
runner->init(m_clangExecutable, m_temporaryDir.path(), m_environment);
|
||||||
connect(runner, &ClangToolRunner::finishedWithSuccess,
|
connect(runner, &ClangToolRunner::finishedWithSuccess,
|
||||||
this, &ClangTidyClazyRunWorker::onRunnerFinishedWithSuccess);
|
this, &ClangTidyClazyRunWorker::onRunnerFinishedWithSuccess);
|
||||||
|
@@ -46,7 +46,7 @@ protected:
|
|||||||
ClangTool *tool() final;
|
ClangTool *tool() final;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ClangToolRunner *createRunner();
|
template <class T> ClangToolRunner *createRunner();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CppTools::ClangDiagnosticConfig m_diagnosticConfig;
|
CppTools::ClangDiagnosticConfig m_diagnosticConfig;
|
||||||
|
@@ -100,19 +100,28 @@ static QStringList clazyPluginArguments(const ClangDiagnosticConfig diagnosticCo
|
|||||||
return arguments;
|
return arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangTidyClazyRunner::ClangTidyClazyRunner(const ClangDiagnosticConfig &config,
|
ClangTidyRunner::ClangTidyRunner(const ClangDiagnosticConfig &config, QObject *parent)
|
||||||
QObject *parent)
|
|
||||||
: ClangToolRunner(parent)
|
: ClangToolRunner(parent)
|
||||||
{
|
{
|
||||||
setName(tr("Clang-Tidy/Clazy"));
|
setName(tr("Clang-Tidy"));
|
||||||
setArgsCreator([this, config](const QStringList &baseOptions) {
|
setArgsCreator([this, config](const QStringList &baseOptions) {
|
||||||
return commonArguments(baseOptions, m_logFile, config)
|
return commonArguments(baseOptions, m_logFile, config)
|
||||||
<< tidyPluginArguments(config)
|
<< tidyPluginArguments(config)
|
||||||
<< clazyPluginArguments(config)
|
|
||||||
<< baseOptions
|
<< baseOptions
|
||||||
<< QDir::toNativeSeparators(filePath());
|
<< 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 Internal
|
||||||
} // namespace ClangTools
|
} // namespace ClangTools
|
||||||
|
@@ -32,12 +32,20 @@
|
|||||||
namespace ClangTools {
|
namespace ClangTools {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class ClangTidyClazyRunner final : public ClangToolRunner
|
class ClangTidyRunner final : public ClangToolRunner
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
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
|
} // namespace Internal
|
||||||
|
@@ -390,7 +390,8 @@ void ClangToolRunWorker::analyzeNextFile()
|
|||||||
m_runners.insert(runner);
|
m_runners.insert(runner);
|
||||||
QTC_ASSERT(runner->run(unit.file, unit.arguments), return);
|
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);
|
Utils::StdOutFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -58,6 +58,7 @@ public:
|
|||||||
// (2) -o output-file
|
// (2) -o output-file
|
||||||
bool run(const QString &filePath, const QStringList &compilerOptions = QStringList());
|
bool run(const QString &filePath, const QStringList &compilerOptions = QStringList());
|
||||||
|
|
||||||
|
QString name() const { return m_name; }
|
||||||
QString filePath() const { return m_filePath; }
|
QString filePath() const { return m_filePath; }
|
||||||
QString logFilePath() const { return m_logFile; }
|
QString logFilePath() const { return m_logFile; }
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user