Record Error Prone initialization time
PiperOrigin-RevId: 498571979
Change-Id: I62ff6eb716e06bd363cba8b5aca3df896eb1f40e
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java
index 156398c..ef5bb9c 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.buildjar.javac.plugins.errorprone;
-
import com.google.common.base.Stopwatch;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.buildjar.InvalidCommandLineException;
@@ -39,6 +38,7 @@
import java.time.Duration;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
/**
* A plugin that performs Error Prone analysis. Error Prone is a static analysis framework that we
@@ -135,9 +135,22 @@
@Override
public void finish() {
statisticsBuilder.totalErrorProneTime(elapsed.elapsed());
+ initializationTime(timings).ifPresent(statisticsBuilder::errorProneInitializationTime);
timings.timings().entrySet().stream()
.sorted(Map.Entry.<String, Duration>comparingByValue().reversed())
.limit(10) // best-effort to stay under the action metric size limit
.forEachOrdered(e -> statisticsBuilder.addBugpatternTiming(e.getKey(), e.getValue()));
}
+
+ // TODO(cushon): remove once ErrorProneTimings#initializationTime makes it into an EP release
+ private static Optional<Duration> initializationTime(ErrorProneTimings timings) {
+ try {
+ return Optional.of(
+ (Duration) ErrorProneTimings.class.getMethod("initializationTime").invoke(timings));
+ } catch (NoSuchMethodException e) {
+ return Optional.empty();
+ } catch (ReflectiveOperationException e) {
+ throw new LinkageError(e.getMessage(), e);
+ }
+ }
}
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java
index 1949005..6c42616 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/statistics/BlazeJavacStatistics.java
@@ -63,6 +63,8 @@
public abstract Optional<Duration> totalErrorProneTime();
+ public abstract Optional<Duration> errorProneInitializationTime();
+
public abstract ImmutableMap<String, Duration> bugpatternTiming();
public abstract Optional<Duration> totalProcessorTime();
@@ -104,6 +106,8 @@
public abstract Builder totalErrorProneTime(Duration totalErrorProneTime);
+ public abstract Builder errorProneInitializationTime(Duration errorProneInitializationTime);
+
public abstract Builder totalProcessorTime(Duration totalProcessorTime);
abstract ImmutableMap.Builder<String, Duration> bugpatternTimingBuilder();