diff options
Diffstat (limited to 'src/plugins/clangtools/documentclangtoolrunner.cpp')
-rw-r--r-- | src/plugins/clangtools/documentclangtoolrunner.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index 81a7e8f5444..3de2c6d55cf 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -18,14 +18,15 @@ #include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildtargettype.h> -#include <projectexplorer/session.h> +#include <projectexplorer/projectmanager.h> #include <projectexplorer/target.h> +#include <solutions/tasking/tasktree.h> + #include <texteditor/textdocument.h> #include <texteditor/texteditor.h> #include <utils/qtcassert.h> -#include <utils/tasktree.h> #include <QLoggingCategory> #include <QScopeGuard> @@ -35,6 +36,7 @@ static Q_LOGGING_CATEGORY(LOG, "qtc.clangtools.cftr", QtWarningMsg) using namespace Core; using namespace CppEditor; using namespace ProjectExplorer; +using namespace Tasking; using namespace Utils; namespace ClangTools { @@ -97,8 +99,8 @@ void DocumentClangToolRunner::scheduleRun() static Project *findProject(const FilePath &file) { - Project *project = SessionManager::projectForFile(file); - return project ? project : SessionManager::startupProject(); + Project *project = ProjectManager::projectForFile(file); + return project ? project : ProjectManager::startupProject(); } static VirtualFileSystemOverlay &vfso() @@ -188,23 +190,26 @@ void DocumentClangToolRunner::run() vfso().update(); const ClangDiagnosticConfig config = diagnosticConfig(runSettings.diagnosticConfigId()); const Environment env = projectBuildEnvironment(project); - using namespace Tasking; QList<TaskItem> tasks{parallel}; - const auto addClangTool = [this, &config, &env, &tasks](ClangToolType tool) { - if (!config.isEnabled(tool)) + const auto addClangTool = [this, &runSettings, &config, &env, &tasks](ClangToolType tool) { + if (!toolEnabled(tool, config, runSettings)) + return; + if (!config.isEnabled(tool) && !runSettings.hasConfigFileForSourceFile(m_fileInfo.file)) return; const FilePath executable = toolExecutable(tool); + if (executable.isEmpty() || !executable.isExecutableFile()) + return; const auto [includeDir, clangVersion] = getClangIncludeDirAndVersion(executable); - if (!executable.isExecutableFile() || includeDir.isEmpty() || clangVersion.isEmpty()) + if (includeDir.isEmpty() || clangVersion.isEmpty()) return; const AnalyzeUnit unit(m_fileInfo, includeDir, clangVersion); - const AnalyzeInputData input{tool, config, m_temporaryDir.path(), env, unit, + const AnalyzeInputData input{tool, runSettings, config, m_temporaryDir.path(), env, unit, vfso().overlayFilePath().toString()}; const auto setupHandler = [this, executable] { return !m_document->isModified() || isVFSOverlaySupported(executable); }; const auto outputHandler = [this](const AnalyzeOutputData &output) { onDone(output); }; - tasks.append(Group{optional, clangToolTask(input, setupHandler, outputHandler)}); + tasks.append(Group{finishAllAndDone, clangToolTask(input, setupHandler, outputHandler)}); }; addClangTool(ClangToolType::Tidy); addClangTool(ClangToolType::Clazy); |