web-dev-qa-db-ja.com

Xcodeのコードカバレッジからポッドを除外する方法

excludeポッドをコードカバレッジから除外する方法はありますか?
私が書いたコードについてのみ、コードカバレッジを確認したいと思います。

問題ではないが、私はXcode 8を使用しています。

24
Fengson

これらの手順が役立ちます:

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は除外されません

30
Tung Fam

XCode 10アップデート

Xcode 10では、コードカバレッジを有効にするターゲットを設定できます

スキームの編集>テスト>オプション

「一部のターゲットのカバレッジを収集する」を選択して、メインプロジェクトを追加するだけです。

9
kingInTheNorth

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

9
Grigory Entin
  1. 左側のプロジェクトナビゲーターでポッドプロジェクトをクリックします。
  2. 右側で、まだ開いていない場合はプロジェクトとターゲットリストを開きます。次に、(ターゲットではなく)ポッドプロジェクト名をクリックします。
  3. [ビルド設定]をクリックします。
  4. 検索バーで「CLANG_ENABLE_CODE_COVERAGE」を検索します。
  5. 「コードカバレッジサポートを有効にする」をNOに変更します。
  6. テストを再実行します。
6
SeaJelly

ポッドを開発していて、自分専用のコードカバレッジが必要な場合:

    # 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
2
Daniel Suia