ClangTools: Simplify a few signatures

A runWorker's project and target cannot change and are obtainable via
the runControl.

Change-Id: I9ce62e94a964dde9b29abf0d1f05eddcd4b87c14
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
hjk
2019-08-27 11:47:45 +02:00
parent 4f19baaf7c
commit a4022c6156
5 changed files with 27 additions and 32 deletions

View File

@@ -33,12 +33,10 @@ using namespace ProjectExplorer;
namespace ClangTools { namespace ClangTools {
namespace Internal { namespace Internal {
ClangTidyClazyRunWorker::ClangTidyClazyRunWorker( ClangTidyClazyRunWorker::ClangTidyClazyRunWorker(RunControl *runControl,
RunControl *runControl,
Target *target,
const CppTools::ClangDiagnosticConfig &diagnosticConfig, const CppTools::ClangDiagnosticConfig &diagnosticConfig,
const FileInfos &fileInfos) const FileInfos &fileInfos)
: ClangToolRunWorker(runControl, target, fileInfos) : ClangToolRunWorker(runControl, fileInfos)
, m_diagnosticConfig(diagnosticConfig) , m_diagnosticConfig(diagnosticConfig)
{ {
setId("ClangTidyClazyRunner"); setId("ClangTidyClazyRunner");

View File

@@ -38,7 +38,6 @@ class ClangTidyClazyRunWorker final : public ClangToolRunWorker
public: public:
ClangTidyClazyRunWorker(ProjectExplorer::RunControl *runControl, ClangTidyClazyRunWorker(ProjectExplorer::RunControl *runControl,
ProjectExplorer::Target *target,
const CppTools::ClangDiagnosticConfig &diagnosticConfig, const CppTools::ClangDiagnosticConfig &diagnosticConfig,
const FileInfos &fileInfos); const FileInfos &fileInfos);

View File

@@ -375,19 +375,20 @@ static ClangDiagnosticConfig getDiagnosticConfig(Project *project)
void ClangTidyClazyTool::startTool(bool askUserForFileSelection) void ClangTidyClazyTool::startTool(bool askUserForFileSelection)
{ {
Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return);
QTC_ASSERT(project->activeTarget(), return);
auto runControl = new RunControl(Constants::CLANGTIDYCLAZY_RUN_MODE); auto runControl = new RunControl(Constants::CLANGTIDYCLAZY_RUN_MODE);
runControl->setDisplayName(tr("Clang-Tidy and Clazy")); runControl->setDisplayName(tr("Clang-Tidy and Clazy"));
runControl->setIcon(ProjectExplorer::Icons::ANALYZER_START_SMALL_TOOLBAR); runControl->setIcon(ProjectExplorer::Icons::ANALYZER_START_SMALL_TOOLBAR);
runControl->setTarget(project->activeTarget());
Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return);
const FileInfos fileInfos = collectFileInfos(project, askUserForFileSelection); const FileInfos fileInfos = collectFileInfos(project, askUserForFileSelection);
if (fileInfos.empty()) if (fileInfos.empty())
return; return;
auto clangTool = new ClangTidyClazyRunWorker(runControl, auto clangTool = new ClangTidyClazyRunWorker(runControl,
project->activeTarget(),
getDiagnosticConfig(project), getDiagnosticConfig(project),
fileInfos); fileInfos);

View File

@@ -117,8 +117,8 @@ namespace Internal {
class ProjectBuilder : public RunWorker class ProjectBuilder : public RunWorker
{ {
public: public:
ProjectBuilder(RunControl *runControl, Project *project, ClangToolRunWorker *parent) ProjectBuilder(RunControl *runControl, ClangToolRunWorker *parent)
: RunWorker(runControl), m_project(project), m_parent(parent) : RunWorker(runControl), m_parent(parent)
{ {
setId("ProjectBuilder"); setId("ProjectBuilder");
} }
@@ -136,7 +136,7 @@ private:
return; return;
} }
Target *target = m_project->activeTarget(); Target *target = runControl()->target();
QTC_ASSERT(target, reportFailure(); return); QTC_ASSERT(target, reportFailure(); return);
BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown; BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
@@ -169,7 +169,7 @@ private:
connect(BuildManager::instance(), &BuildManager::buildQueueFinished, connect(BuildManager::instance(), &BuildManager::buildQueueFinished,
this, &ProjectBuilder::onBuildFinished, Qt::QueuedConnection); this, &ProjectBuilder::onBuildFinished, Qt::QueuedConnection);
ProjectExplorerPlugin::buildProject(m_project); ProjectExplorerPlugin::buildProject(target->project());
} }
void onBuildFinished(bool success) void onBuildFinished(bool success)
@@ -181,7 +181,6 @@ private:
} }
private: private:
QPointer<Project> m_project;
ClangToolRunWorker *m_parent; ClangToolRunWorker *m_parent;
bool m_enabled = true; bool m_enabled = true;
bool m_success = false; bool m_success = false;
@@ -230,19 +229,17 @@ static QDebug operator<<(QDebug debug, const AnalyzeUnits &analyzeUnits)
} }
ClangToolRunWorker::ClangToolRunWorker(RunControl *runControl, ClangToolRunWorker::ClangToolRunWorker(RunControl *runControl,
Target *target,
const FileInfos &fileInfos) const FileInfos &fileInfos)
: RunWorker(runControl) : RunWorker(runControl)
, m_projectBuilder(new ProjectBuilder(runControl, target->project(), this)) , m_projectBuilder(new ProjectBuilder(runControl, this))
, m_clangExecutable(Core::ICore::clangExecutable(CLANG_BINDIR)) , m_clangExecutable(Core::ICore::clangExecutable(CLANG_BINDIR))
, m_temporaryDir("clangtools-XXXXXX") , m_temporaryDir("clangtools-XXXXXX")
, m_target(target)
, m_fileInfos(fileInfos) , m_fileInfos(fileInfos)
{ {
addStartDependency(m_projectBuilder); addStartDependency(m_projectBuilder);
ClangToolsProjectSettings *projectSettings = ClangToolsProjectSettingsManager::getSettings( ClangToolsProjectSettings *projectSettings = ClangToolsProjectSettingsManager::getSettings(
target->project()); runControl->project());
if (projectSettings->useGlobalSettings()) if (projectSettings->useGlobalSettings())
m_projectBuilder->setEnabled(ClangToolsSettings::instance()->savedBuildBeforeAnalysis()); m_projectBuilder->setEnabled(ClangToolsSettings::instance()->savedBuildBeforeAnalysis());
else else
@@ -252,14 +249,14 @@ ClangToolRunWorker::ClangToolRunWorker(RunControl *runControl,
void ClangToolRunWorker::init() void ClangToolRunWorker::init()
{ {
setSupportsReRunning(false); setSupportsReRunning(false);
m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo( Target *target = runControl()->target();
m_target->project()); m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(target->project());
BuildConfiguration *buildConfiguration = m_target->activeBuildConfiguration(); BuildConfiguration *buildConfiguration = target->activeBuildConfiguration();
QTC_ASSERT(buildConfiguration, return); QTC_ASSERT(buildConfiguration, return);
m_environment = buildConfiguration->environment(); m_environment = buildConfiguration->environment();
ToolChain *toolChain = ToolChainKitAspect::toolChain(m_target->kit(), ToolChain *toolChain = ToolChainKitAspect::toolChain(target->kit(),
ProjectExplorer::Constants::CXX_LANGUAGE_ID); ProjectExplorer::Constants::CXX_LANGUAGE_ID);
QTC_ASSERT(toolChain, return); QTC_ASSERT(toolChain, return);
m_targetTriple = toolChain->originalTargetTriple(); m_targetTriple = toolChain->originalTargetTriple();
@@ -288,8 +285,9 @@ void ClangToolRunWorker::start()
return; return;
} }
m_projectInfo = CppTools::CppModelManager::instance()->projectInfo(m_target->project()); Project *project = runControl()->project();
m_projectFiles = Utils::toSet(m_target->project()->files(Project::AllFiles)); m_projectInfo = CppTools::CppModelManager::instance()->projectInfo(project);
m_projectFiles = Utils::toSet(project->files(Project::AllFiles));
// Some projects provides CompilerCallData once a build is finished, // Some projects provides CompilerCallData once a build is finished,
if (m_projectInfo.configurationOrFilesChanged(m_projectInfoBeforeBuild)) { if (m_projectInfo.configurationOrFilesChanged(m_projectInfoBeforeBuild)) {
@@ -481,8 +479,9 @@ void ClangToolRunWorker::finalize()
if (m_filesNotAnalyzed.size() != 0) { if (m_filesNotAnalyzed.size() != 0) {
QString msg = tr("%1: Not all files could be analyzed.").arg(toolName); QString msg = tr("%1: Not all files could be analyzed.").arg(toolName);
TaskHub::addTask(Task::Error, msg, Debugger::Constants::ANALYZERTASK_ID); TaskHub::addTask(Task::Error, msg, Debugger::Constants::ANALYZERTASK_ID);
if (m_target && !m_target->activeBuildConfiguration()->buildDirectory().exists() Target *target = runControl()->target();
&& !ClangToolsProjectSettingsManager::getSettings(m_target->project()) if (target && !target->activeBuildConfiguration()->buildDirectory().exists()
&& !ClangToolsProjectSettingsManager::getSettings(target->project())
->buildBeforeAnalysis()) { ->buildBeforeAnalysis()) {
msg = tr("%1: You might need to build the project to generate or update source " msg = tr("%1: You might need to build the project to generate or update source "
"files. To build automatically, enable \"Build the project before starting " "files. To build automatically, enable \"Build the project before starting "

View File

@@ -66,7 +66,6 @@ class ClangToolRunWorker : public ProjectExplorer::RunWorker
public: public:
ClangToolRunWorker(ProjectExplorer::RunControl *runControl, ClangToolRunWorker(ProjectExplorer::RunControl *runControl,
ProjectExplorer::Target *target,
const FileInfos &fileInfos); const FileInfos &fileInfos);
bool success() const { return m_success; } // For testing. bool success() const { return m_success; } // For testing.
@@ -102,7 +101,6 @@ protected:
Utils::TemporaryDirectory m_temporaryDir; Utils::TemporaryDirectory m_temporaryDir;
private: private:
QPointer<ProjectExplorer::Target> m_target;
FileInfos m_fileInfos; FileInfos m_fileInfos;
CppTools::ProjectInfo m_projectInfoBeforeBuild; CppTools::ProjectInfo m_projectInfoBeforeBuild;