diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2024-01-12 23:54:35 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2024-01-16 16:44:50 +0000 |
commit | 1ed8b567023d7ed0d37c9662f81b37405e15ee94 (patch) | |
tree | 1d627045aaea38b6ef2d5003aa63df3dfcef0ece /src/plugins/clangtools | |
parent | cab71e1005eb0129b2ba748531d93af05d11b5c1 (diff) |
ClangTool: Separate unit from AnalyzeInputData
Pass it separately instead. It's going to be replaced by
list of units.
Change-Id: Ie557bc0ae996b816a69b60a6e9792ca157829c78
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/clangtools')
-rw-r--r-- | src/plugins/clangtools/clangtool.cpp | 4 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolrunner.cpp | 45 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolrunner.h | 4 | ||||
-rw-r--r-- | src/plugins/clangtools/documentclangtoolrunner.cpp | 3 |
4 files changed, 28 insertions, 28 deletions
diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index c889bd8c34..c9f318d1b0 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -798,8 +798,8 @@ Group ClangTool::runRecipe(const RunSettings &runSettings, updateForCurrentState(); }; const AnalyzeInputData input{tool, runSettings, diagnosticConfig, tempDir->path(), - environment, unit}; - tasks.append(clangToolTask(input, setupHandler, outputHandler)); + environment}; + tasks.append(clangToolTask(unit, input, setupHandler, outputHandler)); } taskTree.setRecipe(tasks); return SetupResult::Continue; diff --git a/src/plugins/clangtools/clangtoolrunner.cpp b/src/plugins/clangtools/clangtoolrunner.cpp index 3d415d862c..f6901f1957 100644 --- a/src/plugins/clangtools/clangtoolrunner.cpp +++ b/src/plugins/clangtools/clangtoolrunner.cpp @@ -58,10 +58,10 @@ static bool isClMode(const QStringList &options) return options.contains("--driver-mode=cl"); } -static QStringList checksArguments(const AnalyzeInputData &input) +static QStringList checksArguments(const AnalyzeUnit &unit, const AnalyzeInputData &input) { if (input.tool == ClangToolType::Tidy) { - if (input.runSettings.hasConfigFileForSourceFile(input.unit.file)) + if (input.runSettings.hasConfigFileForSourceFile(unit.file)) return {"--warnings-as-errors=-*", "-checks=-clang-diagnostic-*"}; switch (input.config.clangTidyMode()) { case ClangDiagnosticConfig::TidyMode::UseDefaultChecks: @@ -77,16 +77,16 @@ static QStringList checksArguments(const AnalyzeInputData &input) return {}; } -static QStringList clangArguments(const AnalyzeInputData &input) +static QStringList clangArguments(const AnalyzeUnit &unit, const AnalyzeInputData &input) { QStringList arguments; const ClangDiagnosticConfig &diagnosticConfig = input.config; - const QStringList &baseOptions = input.unit.arguments; + const QStringList &baseOptions = unit.arguments; arguments << ClangDiagnosticConfigsModel::globalDiagnosticOptions() << (isClMode(baseOptions) ? clangArgsForCl(diagnosticConfig.clangOptions()) : diagnosticConfig.clangOptions()) << baseOptions; - if (ProjectFile::isHeader(input.unit.file)) + if (ProjectFile::isHeader(unit.file)) arguments << "-Wno-pragma-once-outside-header"; if (LOG().isDebugEnabled()) @@ -110,7 +110,8 @@ static FilePath createOutputFilePath(const FilePath &dirPath, const FilePath &fi return {}; } -GroupItem clangToolTask(const AnalyzeInputData &input, +GroupItem clangToolTask(const AnalyzeUnit &unit, + const AnalyzeInputData &input, const AnalyzeSetupHandler &setupHandler, const AnalyzeOutputHandler &outputHandler) { @@ -121,17 +122,17 @@ GroupItem clangToolTask(const AnalyzeInputData &input, }; const Storage<ClangToolStorage> storage; - const auto mainToolArguments = [input](const ClangToolStorage &data) { + const auto mainToolArguments = [unit, input](const ClangToolStorage &data) { QStringList result; result << "-export-fixes=" + data.outputFilePath.nativePath(); if (!input.overlayFilePath.isEmpty() && isVFSOverlaySupported(data.executable)) result << "--vfsoverlay=" + input.overlayFilePath; - result << input.unit.file.nativePath(); + result << unit.file.nativePath(); return result; }; - const auto onSetup = [storage, input, setupHandler] { - if (setupHandler && !setupHandler(input.unit)) + const auto onSetup = [storage, unit, input, setupHandler] { + if (setupHandler && !setupHandler(unit)) return SetupResult::StopWithError; ClangToolStorage *data = storage.activeStorage(); @@ -142,15 +143,15 @@ GroupItem clangToolTask(const AnalyzeInputData &input, return SetupResult::StopWithError; } - QTC_CHECK(!input.unit.arguments.contains(QLatin1String("-o"))); - QTC_CHECK(!input.unit.arguments.contains(input.unit.file.nativePath())); - QTC_ASSERT(input.unit.file.exists(), return SetupResult::StopWithError); - data->outputFilePath = createOutputFilePath(input.outputDirPath, input.unit.file); + QTC_CHECK(!unit.arguments.contains(QLatin1String("-o"))); + QTC_CHECK(!unit.arguments.contains(unit.file.nativePath())); + QTC_ASSERT(unit.file.exists(), return SetupResult::StopWithError); + data->outputFilePath = createOutputFilePath(input.outputDirPath, unit.file); QTC_ASSERT(!data->outputFilePath.isEmpty(), return SetupResult::StopWithError); return SetupResult::Continue; }; - const auto onProcessSetup = [storage, input, mainToolArguments](Process &process) { + const auto onProcessSetup = [storage, unit, input, mainToolArguments](Process &process) { process.setEnvironment(input.environment); process.setUseCtrlCStub(true); process.setLowPriority(); @@ -158,16 +159,16 @@ GroupItem clangToolTask(const AnalyzeInputData &input, const ClangToolStorage &data = *storage; - const QStringList args = checksArguments(input) + const QStringList args = checksArguments(unit, input) + mainToolArguments(data) + QStringList{"--"} - + clangArguments(input); + + clangArguments(unit, input); const CommandLine commandLine = {data.executable, args}; qCDebug(LOG).noquote() << "Starting" << commandLine.toUserOutput(); process.setCommand(commandLine); }; - const auto onProcessDone = [storage, input, outputHandler](const Process &process, DoneWith result) { + const auto onProcessDone = [storage, unit, input, outputHandler](const Process &process, DoneWith result) { qCDebug(LOG).noquote() << "Output:\n" << process.cleanedStdOut(); if (!outputHandler) @@ -176,7 +177,7 @@ GroupItem clangToolTask(const AnalyzeInputData &input, const QString stdErr = process.cleanedStdErr(); if (stdErr.isEmpty()) return; - outputHandler({true, input.unit.file, {}, {}, input.tool, + outputHandler({true, unit.file, {}, {}, input.tool, Tr::tr("%1 produced stderr output:").arg(storage->name), stdErr}); return; } @@ -193,7 +194,7 @@ GroupItem clangToolTask(const AnalyzeInputData &input, else message = Tr::tr("%1 crashed.").arg(data.name); outputHandler( - {false, input.unit.file, data.outputFilePath, {}, input.tool, message, details}); + {false, unit.file, data.outputFilePath, {}, input.tool, message, details}); }; const auto onReadSetup = [storage, input](Async<expected_str<Diagnostics>> &data) { @@ -202,7 +203,7 @@ GroupItem clangToolTask(const AnalyzeInputData &input, input.diagnosticsFilter); data.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); }; - const auto onReadDone = [storage, input, outputHandler]( + const auto onReadDone = [storage, unit, input, outputHandler]( const Async<expected_str<Diagnostics>> &data, DoneWith result) { if (!outputHandler) return; @@ -215,7 +216,7 @@ GroupItem clangToolTask(const AnalyzeInputData &input, else error = diagnosticsResult.error(); outputHandler({ok, - input.unit.file, + unit.file, storage->outputFilePath, diagnostics, input.tool, diff --git a/src/plugins/clangtools/clangtoolrunner.h b/src/plugins/clangtools/clangtoolrunner.h index cf77107e71..7a806b0c04 100644 --- a/src/plugins/clangtools/clangtoolrunner.h +++ b/src/plugins/clangtools/clangtoolrunner.h @@ -35,7 +35,6 @@ struct AnalyzeInputData CppEditor::ClangDiagnosticConfig config; Utils::FilePath outputDirPath; Utils::Environment environment; - AnalyzeUnit unit; QString overlayFilePath = {}; AcceptDiagsFromFilePath diagnosticsFilter = {}; }; @@ -54,7 +53,8 @@ struct AnalyzeOutputData using AnalyzeSetupHandler = std::function<bool(const AnalyzeUnit &)>; using AnalyzeOutputHandler = std::function<void(const AnalyzeOutputData &)>; -Tasking::GroupItem clangToolTask(const AnalyzeInputData &input, +Tasking::GroupItem clangToolTask(const AnalyzeUnit &unit, + const AnalyzeInputData &input, const AnalyzeSetupHandler &setupHandler, const AnalyzeOutputHandler &outputHandler); diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index eee5206f46..328b139e81 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -209,14 +209,13 @@ void DocumentClangToolRunner::run() config, m_temporaryDir.path(), env, - unit, vfso().overlayFilePath().toString(), diagnosticFilter}; const auto setupHandler = [this, executable](const AnalyzeUnit &) { return !m_document->isModified() || isVFSOverlaySupported(executable); }; const auto outputHandler = [this](const AnalyzeOutputData &output) { onDone(output); }; - tasks.append(Group{finishAllAndSuccess, clangToolTask(input, setupHandler, outputHandler)}); + tasks.append(Group{finishAllAndSuccess, clangToolTask(unit, input, setupHandler, outputHandler)}); }; addClangTool(ClangToolType::Tidy); addClangTool(ClangToolType::Clazy); |