IDECoverageReportGenerationErrorDomain при создании CodeCoverage для проекта
У меня возникли некоторые проблемы с командой xcodebuild, и я надеялся узнать, сталкивался ли кто-нибудь с подобными проблемами.
Я использую сканирование fastlane для тестирования и также создаю покрытие кода, это будет генерировать информацию о покрытии кода в файле xcresult. Это прекрасно работает, пока я не добавлю в смесь xcargs.
Без xcargs я могу бегатьxcrun xccov view --report --json Run-Development-2022.06.09_13-05-00-+0200.xcresult
в выходной файл вLogs/Test
в производных данных и получить отчет JSON для запуска.
Когда я добавляюxcargs: "OTHER_SWIFT_FLAGS=\"$(inherited) -Xfrontend -debug-time-function-bodies\" SWIFT_OPTIMIZATION_LEVEL=\"-Owholemodule\""
кscan()
, он только добавляет запрошенные аргументы в команду xcodebuild, но когда я запускаю ту же команду отчета выше, я получаю следующую ошибку в файле JSON:
{
"code": 0,
"domain": "IDECoverageReportGenerationErrorDomain",
"localizedDescription": "Failed to generate coverage for target 'HeadlessUnitTests.xctest' at paths (\n \"\/Users...}\/HeadlessUnitTests.xctest\/HeadlessUnitTests\"\n):\nmalformed instrumentation profile data"
}
...
Кажется, это не имеет ничего общего с содержимымxcargs
, я попытался удалить флаги, а также настроить оптимизацию, но проблема не устранена. Удаление всех xcargs снова будет работать.
Моя полоса:
desc "Test: makes a clean build and runs all tests."
lane :test do
begin
scan(
workspace: WORKSPACE,
scheme: "Development",
configuration: "Debug",
clean: true,
devices: [DEVICE],
skip_detect_devices: true,
skip_slack: true,
code_coverage: true,
output_directory: './build/',
output_types: "junit",
buildlog_path: "#{ENV['GENERIC_FILE_STORAGE']}/build/logs",
xcargs: "OTHER_SWIFT_FLAGS=\"$(inherited) -Xfrontend -debug-time-function-bodies\" SWIFT_OPTIMIZATION_LEVEL=\"-Owholemodule\"")
rescue => ex
UI.user_error! ex
end
end
1 ответ
Мы (@paul-peelen и я) исследовали это вместе, и похоже, что этот параметр не работает с покрытием кода:SWIFT_OPTIMIZATION_LEVEL="-Owholemodule"
.
Вместо этого мы выбрали-0none
что дало нам покрытие кода и значительно увеличило скорость нашей тестовой сборки.