ClangToolRunner: Reuse LoopList

Instead of LoopRepeat + container capture.

Change-Id: I5bce612279cf63f6ad1237569b55baad9a98e2ce
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2024-01-25 14:21:03 +01:00
parent 507933467f
commit e1f0da4e20

View File

@@ -121,19 +121,19 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
FilePath outputFilePath; FilePath outputFilePath;
}; };
const Storage<ClangToolStorage> storage; const Storage<ClangToolStorage> storage;
const LoopRepeat repeater(units.size()); const LoopList iterator(units);
const auto mainToolArguments = [units, input, repeater](const ClangToolStorage &data) { const auto mainToolArguments = [input, iterator](const ClangToolStorage &data) {
QStringList result; QStringList result;
result << "-export-fixes=" + data.outputFilePath.nativePath(); result << "-export-fixes=" + data.outputFilePath.nativePath();
if (!input.overlayFilePath.isEmpty() && isVFSOverlaySupported(data.executable)) if (!input.overlayFilePath.isEmpty() && isVFSOverlaySupported(data.executable))
result << "--vfsoverlay=" + input.overlayFilePath; result << "--vfsoverlay=" + input.overlayFilePath;
result << units[repeater.iteration()].file.nativePath(); result << iterator->file.nativePath();
return result; return result;
}; };
const auto onSetup = [storage, units, input, setupHandler, repeater] { const auto onSetup = [storage, input, setupHandler, iterator] {
const AnalyzeUnit &unit = units[repeater.iteration()]; const AnalyzeUnit &unit = *iterator;
if (setupHandler && !setupHandler(unit)) if (setupHandler && !setupHandler(unit))
return SetupResult::StopWithError; return SetupResult::StopWithError;
@@ -153,8 +153,8 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
return SetupResult::Continue; return SetupResult::Continue;
}; };
const auto onProcessSetup = [storage, units, input, mainToolArguments, repeater](Process &process) { const auto onProcessSetup = [storage, input, mainToolArguments, iterator](Process &process) {
const AnalyzeUnit &unit = units[repeater.iteration()]; const AnalyzeUnit &unit = *iterator;
process.setEnvironment(input.environment); process.setEnvironment(input.environment);
process.setUseCtrlCStub(true); process.setUseCtrlCStub(true);
process.setLowPriority(); process.setLowPriority();
@@ -171,13 +171,13 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
qCDebug(LOG).noquote() << "Starting" << commandLine.toUserOutput(); qCDebug(LOG).noquote() << "Starting" << commandLine.toUserOutput();
process.setCommand(commandLine); process.setCommand(commandLine);
}; };
const auto onProcessDone = [storage, units, input, outputHandler, repeater]( const auto onProcessDone = [storage, input, outputHandler, iterator](
const Process &process, DoneWith result) { const Process &process, DoneWith result) {
qCDebug(LOG).noquote() << "Output:\n" << process.cleanedStdOut(); qCDebug(LOG).noquote() << "Output:\n" << process.cleanedStdOut();
if (!outputHandler) if (!outputHandler)
return; return;
const AnalyzeUnit &unit = units[repeater.iteration()]; const AnalyzeUnit &unit = *iterator;
if (result == DoneWith::Success) { if (result == DoneWith::Success) {
const QString stdErr = process.cleanedStdErr(); const QString stdErr = process.cleanedStdErr();
if (stdErr.isEmpty()) if (stdErr.isEmpty())
@@ -208,7 +208,7 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
input.diagnosticsFilter); input.diagnosticsFilter);
data.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer()); data.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
}; };
const auto onReadDone = [storage, units, input, outputHandler, repeater]( const auto onReadDone = [storage, input, outputHandler, iterator](
const Async<expected_str<Diagnostics>> &data, DoneWith result) { const Async<expected_str<Diagnostics>> &data, DoneWith result) {
if (!outputHandler) if (!outputHandler)
return; return;
@@ -221,7 +221,7 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
else else
error = diagnosticsResult.error(); error = diagnosticsResult.error();
outputHandler({ok, outputHandler({ok,
units[repeater.iteration()].file, iterator->file,
storage->outputFilePath, storage->outputFilePath,
diagnostics, diagnostics,
input.tool, input.tool,
@@ -231,7 +231,7 @@ GroupItem clangToolTask(const AnalyzeUnits &units,
return Group { return Group {
parallelLimit(qMax(1, input.runSettings.parallelJobs())), parallelLimit(qMax(1, input.runSettings.parallelJobs())),
finishAllAndSuccess, finishAllAndSuccess,
repeater, iterator,
Group { Group {
storage, storage,
onGroupSetup(onSetup), onGroupSetup(onSetup),