如何从Xcode中的代码覆盖范围中排除Pod

时间:2016-09-24 08:07:15

标签: ios xcode testing

有没有办法从代码覆盖范围排除 Pod? 我想只看到我编写的代码的代码覆盖率。

不是它应该重要,但我正在使用Xcode 8。

6 个答案:

答案 0 :(得分:28)

这些步骤将有所帮助:

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

现在你不会在测试覆盖范围内看到pod。

注意:它只排除了Objective-c pod但不包括Swift

答案 1 :(得分:9)

要禁用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);

这是指向相应要点的链接:https://gist.github.com/grigorye/f6dfaa9f7bd9dbb192fe25a6cdb419d4

答案 2 :(得分:6)

  1. 点击左侧Project Linkigator中的Pods项目
  2. 在右侧,打开项目和目标列表(如果尚未打开);然后单击Pods项目名称(不是目标)。
  3. 单击“构建设置”。
  4. 在搜索栏中,搜索" CLANG_ENABLE_CODE_COVERAGE"。
  5. 更改"启用代码覆盖率支持"没有。
  6. 重新运行测试。

答案 3 :(得分:2)

如果您正在开发一个pod并希望仅为您的代码覆盖:

export *

答案 4 :(得分:2)

XCode 10更新

在Xcode 10中,您可以设置要为其启用代码覆盖率的目标

编辑方案>测试>选项

只需选择“收集某些目标的覆盖范围”并添加您的主项目即可。

答案 5 :(得分:0)

基于@Tung Fam的答案,为某些豆荚添加了排除列表

= A1:A1000 + (2/24)