Есть ли способ исключить Pods из охвата кода?
Я хотел бы видеть Code Coverage только для кода, который я написал.
Не то, чтобы это имело значение, но я использую Xcode 8.
Есть ли способ исключить Pods из охвата кода?
Я хотел бы видеть Code Coverage только для кода, который я написал.
Не то, чтобы это имело значение, но я использую Xcode 8.
Эти шаги помогут:
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
Чтобы отключить покрытие для кода 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
Если вы разрабатываете модуль и хотите иметь покрытие кода только для своих:
# 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
Обновление XCode 10
В Xcode 10 вы можете установить, для каких целей вы хотите включить покрытие кода в
Редактировать схемы> Тест> Параметры
Просто выберите "Сбор покрытия для некоторых целей" и добавьте ваш основной проект.