From 40bd9aba9cb77ee1b2947adf975cfd845a4cad02 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Jun 2017 15:21:17 +0200 Subject: [PATCH] ClangStaticAnalyzer: Adapt to new simpler RunControl creation Change-Id: Ib088828a9695938afb83bcdd2d5fd4124dd602a8 Reviewed-by: Nikolai Kosjar --- .../clangstaticanalyzer.pro | 2 - .../clangstaticanalyzer.qbs | 2 - .../clangstaticanalyzerplugin.cpp | 25 +++++-- .../clangstaticanalyzerruncontrol.cpp | 9 +-- .../clangstaticanalyzerruncontrol.h | 2 +- .../clangstaticanalyzerruncontrolfactory.cpp | 70 ------------------- .../clangstaticanalyzerruncontrolfactory.h | 46 ------------ 7 files changed, 25 insertions(+), 131 deletions(-) delete mode 100644 src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp delete mode 100644 src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.h diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzer.pro b/src/plugins/clangstaticanalyzer/clangstaticanalyzer.pro index 4450072a70d..3787c2ac6d8 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzer.pro +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzer.pro @@ -11,7 +11,6 @@ SOURCES += \ clangstaticanalyzerprojectsettingsmanager.cpp \ clangstaticanalyzerprojectsettingswidget.cpp \ clangstaticanalyzerruncontrol.cpp \ - clangstaticanalyzerruncontrolfactory.cpp \ clangstaticanalyzerrunner.cpp \ clangstaticanalyzersettings.cpp \ clangstaticanalyzertool.cpp \ @@ -29,7 +28,6 @@ HEADERS += \ clangstaticanalyzerprojectsettings.h \ clangstaticanalyzerprojectsettingsmanager.h \ clangstaticanalyzerprojectsettingswidget.h \ - clangstaticanalyzerruncontrolfactory.h \ clangstaticanalyzerruncontrol.h \ clangstaticanalyzerrunner.h \ clangstaticanalyzersettings.h \ diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzer.qbs b/src/plugins/clangstaticanalyzer/clangstaticanalyzer.qbs index 34d1fd2f773..d2c1e724fca 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzer.qbs +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzer.qbs @@ -42,8 +42,6 @@ QtcPlugin { "clangstaticanalyzerprojectsettingswidget.ui", "clangstaticanalyzerruncontrol.cpp", "clangstaticanalyzerruncontrol.h", - "clangstaticanalyzerruncontrolfactory.cpp", - "clangstaticanalyzerruncontrolfactory.h", "clangstaticanalyzerrunner.cpp", "clangstaticanalyzerrunner.h", "clangstaticanalyzersettings.cpp", diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp index 2ce8cdf2fb6..f10b2784bb8 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp @@ -28,7 +28,7 @@ #include "clangstaticanalyzerconfigwidget.h" #include "clangstaticanalyzerconstants.h" #include "clangstaticanalyzerprojectsettingswidget.h" -#include "clangstaticanalyzerruncontrolfactory.h" +#include "clangstaticanalyzerruncontrol.h" #include "clangstaticanalyzertool.h" #ifdef WITH_TESTS @@ -36,7 +36,8 @@ #include "clangstaticanalyzerunittests.h" #endif -#include +#include + #include #include #include @@ -44,7 +45,10 @@ #include #include #include + +#include #include +#include #include #include @@ -54,7 +58,6 @@ #include -using namespace Debugger; using namespace ProjectExplorer; namespace ClangStaticAnalyzer { @@ -125,9 +128,23 @@ bool ClangStaticAnalyzerPlugin::initialize(const QStringList &arguments, QString ProjectPanelFactory::registerFactory(panelFactory); addAutoReleasedObject(new ClangStaticAnalyzerTool); - addAutoReleasedObject(new ClangStaticAnalyzerRunControlFactory); addAutoReleasedObject(new ClangStaticAnalyzerOptionsPage); + auto constraint = [](RunConfiguration *runConfiguration) { + Target *target = runConfiguration->target(); + QTC_ASSERT(target, return false); + + Project *project = target->project(); + QTC_ASSERT(project, return false); + + const Core::Id cxx = ProjectExplorer::Constants::CXX_LANGUAGE_ID; + return project->projectLanguages().contains(cxx) + && ToolChainKitInformation::toolChain(target->kit(), cxx); + }; + + RunControl::registerWorker + (Constants::CLANGSTATICANALYZER_RUN_MODE, constraint); + return true; } diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp index 43fdf32bc0e..69b89109aff 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp @@ -69,8 +69,7 @@ static Q_LOGGING_CATEGORY(LOG, "qtc.clangstaticanalyzer.runcontrol") namespace ClangStaticAnalyzer { namespace Internal { -ClangStaticAnalyzerToolRunner::ClangStaticAnalyzerToolRunner(RunControl *runControl, - QString *errorMessage) +ClangStaticAnalyzerToolRunner::ClangStaticAnalyzerToolRunner(RunControl *runControl) : RunWorker(runControl) { setDisplayName("ClangStaticAnalyzerRunner"); @@ -102,11 +101,9 @@ ClangStaticAnalyzerToolRunner::ClangStaticAnalyzerToolRunner(RunControl *runCont // or even gone, so better stop here. tool->resetCursorAndProjectInfoBeforeBuild(); - if (errorMessage) { - *errorMessage = tr( + reportFailure(tr( "The project configuration changed since the start of the Clang Static Analyzer. " - "Please re-run with current configuration."); - } + "Please re-run with current configuration.")); return; } diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h index 3c6b4267d7f..9719c421167 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h @@ -52,7 +52,7 @@ class ClangStaticAnalyzerToolRunner : public ProjectExplorer::RunWorker Q_OBJECT public: - ClangStaticAnalyzerToolRunner(ProjectExplorer::RunControl *runControl, QString *errorMessage); + explicit ClangStaticAnalyzerToolRunner(ProjectExplorer::RunControl *runControl); void start() override; void stop() override; diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp deleted file mode 100644 index da3d4f2225e..00000000000 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "clangstaticanalyzerruncontrolfactory.h" - -#include "clangstaticanalyzerconstants.h" -#include "clangstaticanalyzerruncontrol.h" - -#include - -#include -#include - -#include - -using namespace ProjectExplorer; - -namespace ClangStaticAnalyzer { -namespace Internal { - -bool ClangStaticAnalyzerRunControlFactory::canRun(RunConfiguration *runConfiguration, - Core::Id runMode) const -{ - if (runMode != Constants::CLANGSTATICANALYZER_RUN_MODE) - return false; - - Target *target = runConfiguration->target(); - QTC_ASSERT(target, return false); - - Project *project = target->project(); - QTC_ASSERT(project, return false); - - const Core::Id cxx = ProjectExplorer::Constants::CXX_LANGUAGE_ID; - return project->projectLanguages().contains(cxx) - && ToolChainKitInformation::toolChain(target->kit(), cxx); -} - -RunControl *ClangStaticAnalyzerRunControlFactory::create(RunConfiguration *runConfiguration, - Core::Id runMode, - QString *errorMessage) -{ - auto runControl = new RunControl(runConfiguration, runMode); - (void) new ClangStaticAnalyzerToolRunner(runControl, errorMessage); - return runControl; -} - -} // namespace Internal -} // namespace ClangStaticAnalyzer diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.h b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.h deleted file mode 100644 index a5537842b6c..00000000000 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include - -namespace ClangStaticAnalyzer { -namespace Internal { - -class ClangStaticAnalyzerRunControlFactory : public ProjectExplorer::IRunControlFactory -{ - Q_OBJECT - -public: - bool canRun(ProjectExplorer::RunConfiguration *runConfiguration, - Core::Id runMode) const override; - - ProjectExplorer::RunControl *create(ProjectExplorer::RunConfiguration *runConfiguration, - Core::Id runMode, QString *errorMessage) override; -}; - -} // namespace Internal -} // namespace ClangStaticAnalyzer