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что дало нам покрытие кода и значительно увеличило скорость нашей тестовой сборки.

Другие вопросы по тегам