From ff9b3671d912e1f8128166dea1ed11736e7c3440 Mon Sep 17 00:00:00 2001 From: Oliver Nguyen Date: Tue, 5 Apr 2022 15:38:20 -0700 Subject: Enable jacocoagent to build as host module. Fixes stack frame map when instrumenting branches for newer bytecode versions. Test: EMMA_INSTRUMENT=true EMMA_INSTRUMENT_STATIC=true m HelloWorldHostTest Bug: 214313542 Change-Id: I418dc48ccfdd537986b42280549a72e46dc8ed06 --- Android.bp | 1 + .../org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java | 2 +- org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java | 3 ++- org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Android.bp b/Android.bp index aad52a34..25801a46 100644 --- a/Android.bp +++ b/Android.bp @@ -58,6 +58,7 @@ license { java_library { name: "jacocoagent", + host_supported: true, installable: true, apex_available: [ diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java index 7a54b6d8..3e26d1b4 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java @@ -29,7 +29,7 @@ class ClassFieldProbeArrayStrategy implements IProbeArrayStrategy { * Frame stack with a single boolean array. */ private static final Object[] FRAME_STACK_ARRZ = new Object[] { - InstrSupport.DATAFIELD_DESC }; + InstrSupport.DATAFIELD_DESC_UNQUALIFIED }; /** * Empty frame locals. diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java index c125112d..a805e0ff 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java @@ -79,7 +79,8 @@ public final class InstrSupport { * boolean[]). */ // BEGIN android-change - public static final String DATAFIELD_DESC = "Lorg/jacoco/core/data/IExecutionData;"; + public static final String DATAFIELD_DESC_UNQUALIFIED = "org/jacoco/core/data/IExecutionData"; + public static final String DATAFIELD_DESC = "L" + DATAFIELD_DESC_UNQUALIFIED + ";"; // END android-change // === Init Method === diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java index 20794f60..59dff4bf 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java @@ -154,7 +154,7 @@ class ProbeInserter extends MethodVisitor implements IProbeInserter { int pos = 0; // Current variable position while (idx < nLocal || pos <= variable) { if (pos == variable) { - newLocal[newIdx++] = InstrSupport.DATAFIELD_DESC; + newLocal[newIdx++] = InstrSupport.DATAFIELD_DESC_UNQUALIFIED; pos++; } else { if (idx < nLocal) { -- cgit v1.2.3 From 5d668dfb6cafb877f16dd7834c8b42a8b2b49d17 Mon Sep 17 00:00:00 2001 From: David Li Date: Fri, 6 May 2022 02:31:38 +0000 Subject: Revert "Enable jacocoagent to build as host module." This reverts commit ff9b3671d912e1f8128166dea1ed11736e7c3440. Reason for revert: broke test Bug: 231643552 Bug: 231653919 Change-Id: I75f48a7b7a31246fd84d593ea6e3fdc46316589b --- Android.bp | 1 - .../org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java | 2 +- org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java | 3 +-- org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Android.bp b/Android.bp index 25801a46..aad52a34 100644 --- a/Android.bp +++ b/Android.bp @@ -58,7 +58,6 @@ license { java_library { name: "jacocoagent", - host_supported: true, installable: true, apex_available: [ diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java index 3e26d1b4..7a54b6d8 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java @@ -29,7 +29,7 @@ class ClassFieldProbeArrayStrategy implements IProbeArrayStrategy { * Frame stack with a single boolean array. */ private static final Object[] FRAME_STACK_ARRZ = new Object[] { - InstrSupport.DATAFIELD_DESC_UNQUALIFIED }; + InstrSupport.DATAFIELD_DESC }; /** * Empty frame locals. diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java index a805e0ff..c125112d 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java @@ -79,8 +79,7 @@ public final class InstrSupport { * boolean[]). */ // BEGIN android-change - public static final String DATAFIELD_DESC_UNQUALIFIED = "org/jacoco/core/data/IExecutionData"; - public static final String DATAFIELD_DESC = "L" + DATAFIELD_DESC_UNQUALIFIED + ";"; + public static final String DATAFIELD_DESC = "Lorg/jacoco/core/data/IExecutionData;"; // END android-change // === Init Method === diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java index 59dff4bf..20794f60 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java @@ -154,7 +154,7 @@ class ProbeInserter extends MethodVisitor implements IProbeInserter { int pos = 0; // Current variable position while (idx < nLocal || pos <= variable) { if (pos == variable) { - newLocal[newIdx++] = InstrSupport.DATAFIELD_DESC_UNQUALIFIED; + newLocal[newIdx++] = InstrSupport.DATAFIELD_DESC; pos++; } else { if (idx < nLocal) { -- cgit v1.2.3 From b97e0695898d7cad44dcb2af09c70a386defd7a5 Mon Sep 17 00:00:00 2001 From: Oliver Nguyen Date: Tue, 5 Apr 2022 15:38:20 -0700 Subject: Reland: "Enable jacocoagent to build as host module." Fixes stack frame map when instrumenting branches for newer bytecode versions. Test: EMMA_INSTRUMENT=true EMMA_INSTRUMENT_STATIC=true m HelloWorldHostTest Bug: 214313542 Change-Id: I47713542b4cf3bff64096c7350bec5d42957ed58 --- Android.bp | 1 + .../org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java | 2 +- org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java | 3 ++- .../jacoco/core/internal/instr/InterfaceFieldProbeArrayStrategy.java | 2 +- org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Android.bp b/Android.bp index aad52a34..25801a46 100644 --- a/Android.bp +++ b/Android.bp @@ -58,6 +58,7 @@ license { java_library { name: "jacocoagent", + host_supported: true, installable: true, apex_available: [ diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java index 7a54b6d8..3e26d1b4 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ClassFieldProbeArrayStrategy.java @@ -29,7 +29,7 @@ class ClassFieldProbeArrayStrategy implements IProbeArrayStrategy { * Frame stack with a single boolean array. */ private static final Object[] FRAME_STACK_ARRZ = new Object[] { - InstrSupport.DATAFIELD_DESC }; + InstrSupport.DATAFIELD_DESC_UNQUALIFIED }; /** * Empty frame locals. diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java index c125112d..a805e0ff 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/InstrSupport.java @@ -79,7 +79,8 @@ public final class InstrSupport { * boolean[]). */ // BEGIN android-change - public static final String DATAFIELD_DESC = "Lorg/jacoco/core/data/IExecutionData;"; + public static final String DATAFIELD_DESC_UNQUALIFIED = "org/jacoco/core/data/IExecutionData"; + public static final String DATAFIELD_DESC = "L" + DATAFIELD_DESC_UNQUALIFIED + ";"; // END android-change // === Init Method === diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/InterfaceFieldProbeArrayStrategy.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/InterfaceFieldProbeArrayStrategy.java index decd234c..9c36ba7a 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/InterfaceFieldProbeArrayStrategy.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/InterfaceFieldProbeArrayStrategy.java @@ -29,7 +29,7 @@ class InterfaceFieldProbeArrayStrategy implements IProbeArrayStrategy { * Frame stack with a single boolean array. */ private static final Object[] FRAME_STACK_ARRZ = new Object[] { - InstrSupport.DATAFIELD_DESC }; + InstrSupport.DATAFIELD_DESC_UNQUALIFIED }; /** * Empty frame locals. diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java index 20794f60..59dff4bf 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java @@ -154,7 +154,7 @@ class ProbeInserter extends MethodVisitor implements IProbeInserter { int pos = 0; // Current variable position while (idx < nLocal || pos <= variable) { if (pos == variable) { - newLocal[newIdx++] = InstrSupport.DATAFIELD_DESC; + newLocal[newIdx++] = InstrSupport.DATAFIELD_DESC_UNQUALIFIED; pos++; } else { if (idx < nLocal) { -- cgit v1.2.3 From c4a2546eb09899ca23b44b57522f57cfedfe1de2 Mon Sep 17 00:00:00 2001 From: Oliver Nguyen Date: Tue, 28 Jun 2022 11:38:52 -0700 Subject: Enable jacocoagent as a Java agent for host. Excludes some sources only for device builds to minimize dependency requirements. Set up manifest to properly load as a Java agent. Test: atest HelloWorldHostTest --coverage Bug: 228858566 Change-Id: Ie6b33724630780a0f57bf4bcb1dcc97f4af4c132 --- Android.bp | 17 +++++++++++------ org.jacoco.agent/src/MANIFEST.MF | 3 +++ .../src/org/jacoco/core/runtime/LoggerRuntime.java | 2 +- .../src/org/jacoco/core/runtime/RuntimeData.java | 2 +- 4 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 org.jacoco.agent/src/MANIFEST.MF diff --git a/Android.bp b/Android.bp index 25801a46..2211c6cc 100644 --- a/Android.bp +++ b/Android.bp @@ -60,6 +60,7 @@ java_library { name: "jacocoagent", host_supported: true, installable: true, + manifest: "org.jacoco.agent/src/MANIFEST.MF", apex_available: [ "//apex_available:anyapex", @@ -80,12 +81,16 @@ java_library { // system apps. // Note: we still may need to update the source code to cut dependencies in // mandatory jacoco classes. - exclude_srcs: [ - "org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java", - "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/PreMain.java", - "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java", - "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/JmxRegistration.java", - ], + target: { + android: { + exclude_srcs: [ + "org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java", + "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/PreMain.java", + "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java", + "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/JmxRegistration.java", + ], + }, + }, // In order to include Jacoco in core libraries, we cannot depend on // anything in the bootclasspath (or we would create dependency cycle). diff --git a/org.jacoco.agent/src/MANIFEST.MF b/org.jacoco.agent/src/MANIFEST.MF new file mode 100644 index 00000000..fb315f3d --- /dev/null +++ b/org.jacoco.agent/src/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Premain-Class: org.jacoco.agent.rt.internal.PreMain + diff --git a/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java b/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java index 1fc2b70f..f877b832 100644 --- a/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java +++ b/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java @@ -145,7 +145,7 @@ public class LoggerRuntime extends AbstractRuntime { mv.visitInsn(Opcodes.ICONST_0); mv.visitInsn(Opcodes.AALOAD); - mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC); + mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC_UNQUALIFIED); // Stack[0]: [Z diff --git a/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java b/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java index 00fb4b07..5be410fe 100644 --- a/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java +++ b/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java @@ -271,7 +271,7 @@ public class RuntimeData { // stack[0]: [Z - mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC); + mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC_UNQUALIFIED); } } -- cgit v1.2.3 From 01f81946ddc96ce797759395e984aa02d5cb5bdb Mon Sep 17 00:00:00 2001 From: Romain Jobredeaux Date: Tue, 6 Sep 2022 16:19:37 -0400 Subject: Split jacoco-cli java_library module into 3. This should be a no-op from a Soong perspective, but Bazel does not currently support multiple resource directories specified in a single java_library module. This change is to ease the translation of the module to Bazel. Test: added manual target to CI Bug: 226423379 Bug: 186462641 Change-Id: I626ba5386b7730e8f81a4a1a4fa5a082cc0f0148 --- Android.bp | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/Android.bp b/Android.bp index 2211c6cc..c4481f23 100644 --- a/Android.bp +++ b/Android.bp @@ -133,14 +133,31 @@ java_library_host { manifest: "org.jacoco.cli/src/MANIFEST.MF", srcs: [ - "org.jacoco.core/src/**/*.java", - "org.jacoco.report/src/**/*.java", "org.jacoco.cli/src/**/*.java", ], + static_libs: [ + "jacoco-report", + "jacoco-core", + ], + + dist: { + targets: [ + "dist_files", + "apps_only", + ], + }, +} + +java_library_host { + name: "jacoco-core", + + srcs: [ + "org.jacoco.core/src/**/*.java", + ], + java_resource_dirs: [ "org.jacoco.core/src", - "org.jacoco.report/src", ], static_libs: [ @@ -150,10 +167,20 @@ java_library_host { "args4j-2.0.28", ], - dist: { - targets: [ - "dist_files", - "apps_only", - ], - }, +} + +java_library_host { + name: "jacoco-report", + + srcs: [ + "org.jacoco.report/src/**/*.java", + ], + + java_resource_dirs: [ + "org.jacoco.report/src", + ], + + static_libs: [ + "jacoco-core", + ], } -- cgit v1.2.3 From 2269e9a67a76d15df8d7ad7c4fe66b0c585de5f1 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Sat, 15 Oct 2022 21:33:32 -0700 Subject: Fix errorprone warnings that should be errors This commit is part of a large scale change to fix errorprone errors that have been downgraded to warnings in the android source tree, so that they can be promoted to errors again. The full list of changes include the following, but not all will be present in any one individual commit: BadAnnotationImplementation BadShiftAmount BanJNDI BoxedPrimitiveEquality ComparableType ComplexBooleanConstant CollectionToArraySafeParameter ConditionalExpressionNumericPromotion DangerousLiteralNull DoubleBraceInitialization DurationFrom DurationTemporalUnit EmptyTopLevelDeclaration EqualsNull EqualsReference FormatString FromTemporalAccessor GetClassOnAnnotation GetClassOnClass HashtableContains IdentityBinaryExpression IdentityHashMapBoxing InstantTemporalUnit InvalidTimeZoneID InvalidZoneId IsInstanceIncompatibleType JUnitParameterMethodNotFound LockOnBoxedPrimitive MathRoundIntLong MislabeledAndroidString MisusedDayOfYear MissingSuperCall MisusedWeekYear ModifyingCollectionWithItself NoCanIgnoreReturnValueOnClasses NonRuntimeAnnotation NullableOnContainingClass NullTernary OverridesJavaxInjectableMethod ParcelableCreator PeriodFrom PreconditionsInvalidPlaceholder ProtoBuilderReturnValueIgnored ProtoFieldNullComparison RandomModInteger RectIntersectReturnValueIgnored ReturnValueIgnored SelfAssignment SelfComparison SelfEquals SizeGreaterThanOrEqualsZero StringBuilderInitWithChar TreeToString TryFailThrowable UnnecessaryCheckNotNull UnusedCollectionModifiedInPlace XorPower See https://errorprone.info/bugpatterns for more information on the checks. Bug: 253827323 Test: m RUN_ERROR_PRONE=true javac-check Change-Id: I366cb605eb539fb15750e245e498e768ff8b1ad8 --- Android.bp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Android.bp b/Android.bp index c4481f23..d7d6e33c 100644 --- a/Android.bp +++ b/Android.bp @@ -105,6 +105,12 @@ java_library { "asm-commons-9.2", "asm-tree-9.2", ], + errorprone: { + javacflags: [ + "-Xep:EqualsHashCode:WARN", + "-Xep:ReturnValueIgnored:WARN", + ], + }, } // Generates stubs containing the classes that will be referenced by instrumented bytecode. @@ -167,6 +173,12 @@ java_library_host { "args4j-2.0.28", ], + errorprone: { + javacflags: [ + "-Xep:EqualsHashCode:WARN", + "-Xep:ReturnValueIgnored:WARN", + ], + }, } java_library_host { -- cgit v1.2.3 From 2f006da09baeb6282cdc6d3e669bbd3ad4914b2c Mon Sep 17 00:00:00 2001 From: Sorin Basca Date: Sat, 4 Feb 2023 16:13:06 +0000 Subject: Pin tradefed dependencies to Java 11 Bug: 267831518 Test: TH Change-Id: I599c6c79230a0c7f4f2823259f4178dc01d24e2d --- Android.bp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Android.bp b/Android.bp index d7d6e33c..89e024a8 100644 --- a/Android.bp +++ b/Android.bp @@ -173,6 +173,9 @@ java_library_host { "args4j-2.0.28", ], + // b/267831518: Pin tradefed and dependencies to Java 11. + java_version: "11", + errorprone: { javacflags: [ "-Xep:EqualsHashCode:WARN", @@ -188,6 +191,9 @@ java_library_host { "org.jacoco.report/src/**/*.java", ], + // b/267831518: Pin tradefed and dependencies to Java 11. + java_version: "11", + java_resource_dirs: [ "org.jacoco.report/src", ], -- cgit v1.2.3 From 0bf0fc56a410c6ed85095b6ecc08c688036c9270 Mon Sep 17 00:00:00 2001 From: Frank Feng Date: Mon, 6 Mar 2023 08:27:10 -0800 Subject: Pin tradefed dependencies to Java 11 Bug: 267831518 Test: TH Change-Id: Ie379438e946ca86fa15a3c4dd8d04b1aaa9fd845 --- Android.bp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Android.bp b/Android.bp index 89e024a8..a35db82b 100644 --- a/Android.bp +++ b/Android.bp @@ -153,6 +153,9 @@ java_library_host { "apps_only", ], }, + + // b/267831518: Pin tradefed and dependencies to Java 11. + java_version: "11", } java_library_host { -- cgit v1.2.3 From 78b2693a92d9efe77b044bead1d48390c30b4831 Mon Sep 17 00:00:00 2001 From: Yiming Pan Date: Fri, 3 Mar 2023 02:19:31 +0000 Subject: Add jacocoagent.jar to build artifact. Bug: 269175352 Test: https://android-build.googleplex.com/builds/abtd/run/L89300000958962537 Change-Id: I2094e6f0eb11799fec2c56e2c80740e6b6f7d1ee --- Android.bp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Android.bp b/Android.bp index 89e024a8..8c8e3c69 100644 --- a/Android.bp +++ b/Android.bp @@ -90,6 +90,14 @@ java_library { "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/JmxRegistration.java", ], }, + host: { + dist: { + targets: [ + "dist_files", + "apps_only", + ], + }, + } }, // In order to include Jacoco in core libraries, we cannot depend on -- cgit v1.2.3