From 27c18805ee54a0d2cde523d897ce60de9b801f7d Mon Sep 17 00:00:00 2001 From: Nikita Tkachenko Date: Fri, 7 Mar 2025 10:57:14 +0100 Subject: [PATCH 1/2] Fix NPE when calculating code coverage for Gradle projects with non-standard directory layout --- .../coverage/percentage/CoverageCalculator.java | 2 +- .../coverage/percentage/JacocoCoverageCalculator.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/CoverageCalculator.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/CoverageCalculator.java index 9ecc448c86b..c7fcaa3668d 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/CoverageCalculator.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/CoverageCalculator.java @@ -14,7 +14,7 @@ interface Factory { T moduleCoverage( long moduleId, - BuildModuleLayout moduleLayout, + @Nullable BuildModuleLayout moduleLayout, ExecutionSettings executionSettings, T sessionCoverage); } diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/JacocoCoverageCalculator.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/JacocoCoverageCalculator.java index 2fd4096c07d..b957575718e 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/JacocoCoverageCalculator.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/percentage/JacocoCoverageCalculator.java @@ -77,7 +77,7 @@ public JacocoCoverageCalculator sessionCoverage(long sessionId) { @Override public JacocoCoverageCalculator moduleCoverage( long moduleId, - BuildModuleLayout moduleLayout, + @Nullable BuildModuleLayout moduleLayout, ExecutionSettings executionSettings, JacocoCoverageCalculator sessionCoverage) { return new JacocoCoverageCalculator( @@ -130,7 +130,7 @@ private JacocoCoverageCalculator( ExecutionSettings executionSettings, String repoRoot, long moduleId, - BuildModuleLayout moduleLayout, + @Nullable BuildModuleLayout moduleLayout, ModuleSignalRouter moduleSignalRouter, @Nonnull JacocoCoverageCalculator parent) { this.parent = parent; @@ -149,7 +149,11 @@ private JacocoCoverageCalculator( moduleId, SignalType.MODULE_COVERAGE_DATA_JACOCO, this::addCoverageData); } - private void addModuleLayout(BuildModuleLayout moduleLayout) { + private void addModuleLayout(@Nullable BuildModuleLayout moduleLayout) { + if (moduleLayout == null) { + LOGGER.debug("Received null module layout, will not be able to calculate coverage"); + return; + } synchronized (coverageDataLock) { for (SourceSet sourceSet : moduleLayout.getSourceSets()) { if (sourceSet.getType() == SourceSet.Type.TEST) { From 0e4df360551e653d347ac6f13159612831557a65 Mon Sep 17 00:00:00 2001 From: Nikita Tkachenko Date: Fri, 7 Mar 2025 17:32:58 +0100 Subject: [PATCH 2/2] Fix another Gradle instrumentation error --- .../trace/instrumentation/gradle/AndroidGradleUtils.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/gradle-8.3/src/main/groovy/datadog/trace/instrumentation/gradle/AndroidGradleUtils.groovy b/dd-java-agent/instrumentation/gradle-8.3/src/main/groovy/datadog/trace/instrumentation/gradle/AndroidGradleUtils.groovy index 77e918d25f4..e5064f0d071 100644 --- a/dd-java-agent/instrumentation/gradle-8.3/src/main/groovy/datadog/trace/instrumentation/gradle/AndroidGradleUtils.groovy +++ b/dd-java-agent/instrumentation/gradle-8.3/src/main/groovy/datadog/trace/instrumentation/gradle/AndroidGradleUtils.groovy @@ -92,7 +92,7 @@ class AndroidGradleUtils { destinationsTree = javaTree } - LOGGER.debug("Using destination tree: {}", destinationsTree.sourceTrees) + LOGGER.debug("Using destination tree: {}", destinationsTree.files) return destinationsTree.files }