Подтвердить что ты не робот

Как исключить Pods из покрытия кода в Xcode

Есть ли способ исключить Pods из охвата кода?
Я хотел бы видеть Code Coverage только для кода, который я написал.

Не то, чтобы это имело значение, но я использую Xcode 8.

4b9b3361

Ответ 1

Эти шаги помогут:

1. добавьте эти строки в подфайл

# Disable Code Coverage for Pods projects
post_install do |installer_representation|
    installer_representation.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['CLANG_ENABLE_CODE_COVERAGE'] = 'NO'
        end
    end
end

2. выполните pod install

Теперь вы не увидите стручки в тестовом покрытии.

Примечание: Он исключает только Objective-c, но не Swift

Ответ 2

Чтобы отключить покрытие для кода swift, вы можете использовать оболочку для SWIFT_EXEC (я проверял это до сих пор с Xcode 9.3). Следовательно, полное решение (включая Swift) будет следующим:

Добавьте к вашему Podfile (и после этого запустите pod install):

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |configuration|
      configuration.build_settings['CLANG_ENABLE_CODE_COVERAGE'] = 'NO'
      configuration.build_settings['SWIFT_EXEC'] = '$(SRCROOT)/SWIFT_EXEC-no-coverage'
    end
  end
end

Поместите следующий скрипт (назовите его SWIFT_EXEC-no-покрытие) в корень дерева исходного кода (при необходимости, chmod +x):

#! /usr/bin/perl -w

use strict;
use Getopt::Long qw(:config pass_through);

my $profile_coverage_mapping;
GetOptions("profile-coverage-mapping" => \$profile_coverage_mapping);

exec(
    "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc",
    @ARGV);

Вот ссылка на соответствующую суть: https://gist.github.com/grigorye/f6dfaa9f7bd9dbb192fe25a6cdb419d4

Ответ 3

  • Нажмите на свой проект Pods в Навигаторе проектов слева.
  • С правой стороны откройте проект и целевой список, если он еще не открыт; затем щелкните имя проекта Pods (НЕ цели).
  • Нажмите "Настройки сборки".
  • В строке поиска найдите "CLANG_ENABLE_CODE_COVERAGE".
  • Измените "Включить поддержку покрытия кода" на NO.
  • Повторно запустить тест.

Ответ 4

Если вы разрабатываете модуль и хотите иметь покрытие кода только для своих:

    # Disable Code Coverage for Pods projects except MyPod
    post_install do |installer_representation|
      installer_representation.pods_project.targets.each do |target|
        if target.name == 'MyPod'
          target.build_configurations.each do |config|
            config.build_settings['CLANG_ENABLE_CODE_COVERAGE'] = 'YES'
          end
        else 
          target.build_configurations.each do |config|
            config.build_settings['CLANG_ENABLE_CODE_COVERAGE'] = 'NO'
          end
        end
      end
    end

Ответ 5

Обновление XCode 10

В Xcode 10 вы можете установить, для каких целей вы хотите включить покрытие кода в

Редактировать схемы> Тест> Параметры

Просто выберите "Сбор покрытия для некоторых целей" и добавьте ваш основной проект.