From e9029d4613d98c17e05236a0058164bb8787f94b Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 1 Apr 2015 17:25:19 +0000 Subject: --instrumentation_filter now works with Objective C. Added "-Tests$" to the default instrumentation_filter, this is the typical pattern for Objective C. All sources are included in ObjcCommon.SOURCE. Sources from targets which match the current instrumentation_filter are included in ObjcCommon.INSTRUMENTED_SOURCE. GCNOs are added to ObjcCommon.GCNO iff the source they originate from is included in from a target which matches the instrumentation_filter. RELNOTES: --instrumentation_filter now works with Objective C coverage. -- MOS_MIGRATED_REVID=90076465 --- .../java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java | 8 +++++++- .../com/google/devtools/build/lib/rules/objc/ObjcProvider.java | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc') diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java index 50a080f26d..c485cd6cc8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java @@ -29,6 +29,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.GENERAL_RESO import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE; +import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INSTRUMENTED_SOURCE; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB; @@ -62,6 +63,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.rules.cpp.CcCommon; import com.google.devtools.build.lib.util.FileType; +import com.google.devtools.build.lib.util.RegexFilter; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.HashSet; @@ -379,8 +381,12 @@ public final class ObjcCommon { Iterables.concat(artifacts.getSrcs(), artifacts.getNonArcSrcs()); objcProvider.addAll(LIBRARY, artifacts.getArchive().asSet()); objcProvider.addAll(SOURCE, allSources); - if (context.getConfiguration().isCodeCoverageEnabled()) { + BuildConfiguration configuration = context.getConfiguration(); + RegexFilter filter = configuration.getInstrumentationFilter(); + if (configuration.isCodeCoverageEnabled() + && filter.isIncluded(context.getLabel().toString())) { for (Artifact source : allSources) { + objcProvider.add(INSTRUMENTED_SOURCE, source); objcProvider.add(GCNO, intermediateArtifacts.gcnoFile(source)); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java index e559ab4e35..12692ba011 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java @@ -82,6 +82,11 @@ public final class ObjcProvider implements TransitiveInfoProvider { */ public static final Key SOURCE = new Key<>(STABLE_ORDER); + /** + * Contains all coverage instrumented source files. + */ + public static final Key INSTRUMENTED_SOURCE = new Key<>(STABLE_ORDER); + /** * Contains all .gcno files one for every source file if in coverage mode. * It contains information to reconstruct the basic block graphs and assign source line numbers -- cgit v1.2.3