excludeポッドをコードカバレッジから除外する方法はありますか?
私が書いたコードについてのみ、コードカバレッジを確認したいと思います。
問題ではないが、私はXcode 8を使用しています。
これらの手順が役立ちます:
1。これらの行をPodfileに追加します
# 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-coverageという名前)をソースツリーのルートに配置します(必要に応じて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);
対応するGistへのリンクは次のとおりです。 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