aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangtools/documentclangtoolrunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/clangtools/documentclangtoolrunner.cpp')
-rw-r--r--src/plugins/clangtools/documentclangtoolrunner.cpp25
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);