forked from qt-creator/qt-creator
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:
@@ -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),
|
||||||
|
Reference in New Issue
Block a user