ソースを参照

Update errorprone (#5776)

* Update errorprone

* Fix errorprone on java 17

* Fix oshi test

* Spot

* Fix merge
Anuraag Agrawal 2 年 前
コミット
980746ae44
17 ファイル変更54 行追加31 行削除
  1. 7 3
      conventions/src/main/kotlin/otel.errorprone-conventions.gradle.kts
  2. 5 0
      conventions/src/main/kotlin/otel.java-conventions.gradle.kts
  3. 1 0
      custom-checks/build.gradle.kts
  4. 2 3
      custom-checks/src/main/java/io/opentelemetry/javaagent/customchecks/OtelInternalJavadoc.java
  5. 2 2
      custom-checks/src/test/java/io/opentelemetry/javaagent/customchecks/OtelInternalJavadocTest.java
  6. 1 1
      dependencyManagement/build.gradle.kts
  7. 18 15
      instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequest.java
  8. 2 2
      instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java
  9. 2 2
      instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java
  10. 1 0
      instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java
  11. 2 0
      instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryTimer.java
  12. 2 0
      instrumentation/opentelemetry-annotations-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/otelannotations/AbstractTraced.java
  13. 1 0
      instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/ProcessMetrics.java
  14. 1 1
      instrumentation/oshi/testing/src/main/java/io/opentelemetry/instrumentation/oshi/AbstractProcessMetricsTest.java
  15. 2 1
      muzzle/src/test/java/io/opentelemetry/instrumentation/TestHelperClasses.java
  16. 3 1
      muzzle/src/test/java/io/opentelemetry/test/AnotherTestInterface.java
  17. 2 0
      smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java

+ 7 - 3
conventions/src/main/kotlin/otel.errorprone-conventions.gradle.kts

@@ -25,6 +25,13 @@ tasks {
 
         excludedPaths.set(".*/build/generated/.*|.*/concurrentlinkedhashmap/.*")
 
+        // Still Java 8
+        disable("Varifier")
+
+        // We often override a method returning Iterable which this makes tedious
+        // for questionable value.
+        disable("PreferredInterfaceType")
+
         // it's very convenient to debug stuff in the javaagent using System.out.println
         // and we don't want to conditionally only check this in CI
         // because then the remote gradle cache won't work for local builds
@@ -79,9 +86,6 @@ tasks {
         disable("JdkObsolete")
         disable("JavaUtilDate")
 
-        // Limits API possibilities
-        disable("NoFunctionalReturnType")
-
         // Storing into a variable in onEnter triggers this unfortunately.
         // TODO(anuraaga): Only disable for auto instrumentation project.
         disable("UnusedVariable")

+ 5 - 0
conventions/src/main/kotlin/otel.java-conventions.gradle.kts

@@ -213,6 +213,11 @@ tasks {
     isPreserveFileTimestamps = false
     isReproducibleFileOrder = true
   }
+
+  // Convenient when updating errorprone
+  register("compileAllJava") {
+    dependsOn(withType<JavaCompile>())
+  }
 }
 
 normalization {

+ 1 - 0
custom-checks/build.gradle.kts

@@ -50,6 +50,7 @@ tasks.withType<Test>().configureEach {
   jvmArgs("--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED")
   jvmArgs("--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED")
   jvmArgs("--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED")
+  jvmArgs("--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED")
   jvmArgs("--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED")
   jvmArgs("--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED")
   jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")

+ 2 - 3
custom-checks/src/main/java/io/opentelemetry/javaagent/customchecks/InternalJavadoc.java → custom-checks/src/main/java/io/opentelemetry/javaagent/customchecks/OtelInternalJavadoc.java

@@ -22,13 +22,12 @@ import javax.lang.model.element.Modifier;
 
 @AutoService(BugChecker.class)
 @BugPattern(
-    name = "OtelInternalJavadoc",
     summary =
         "This public internal class doesn't end with the javadoc disclaimer: \""
-            + InternalJavadoc.EXPECTED_INTERNAL_COMMENT
+            + OtelInternalJavadoc.EXPECTED_INTERNAL_COMMENT
             + "\"",
     severity = WARNING)
-public class InternalJavadoc extends BugChecker implements BugChecker.ClassTreeMatcher {
+public class OtelInternalJavadoc extends BugChecker implements BugChecker.ClassTreeMatcher {
 
   private static final long serialVersionUID = 1L;
 

+ 2 - 2
custom-checks/src/test/java/io/opentelemetry/javaagent/customchecks/InternalJavadocTest.java → custom-checks/src/test/java/io/opentelemetry/javaagent/customchecks/OtelInternalJavadocTest.java

@@ -8,7 +8,7 @@ package io.opentelemetry.javaagent.customchecks;
 import com.google.errorprone.CompilationTestHelper;
 import org.junit.jupiter.api.Test;
 
-class InternalJavadocTest {
+class OtelInternalJavadocTest {
 
   @Test
   void test() {
@@ -17,7 +17,7 @@ class InternalJavadocTest {
   }
 
   private static void doTest(String path) {
-    CompilationTestHelper.newInstance(InternalJavadoc.class, InternalJavadocTest.class)
+    CompilationTestHelper.newInstance(OtelInternalJavadoc.class, OtelInternalJavadocTest.class)
         .addSourceFile(path)
         .doTest();
   }

+ 1 - 1
dependencyManagement/build.gradle.kts

@@ -51,7 +51,7 @@ val DEPENDENCY_SETS = listOf(
   ),
   DependencySet(
     "com.google.errorprone",
-    "2.10.0",
+    "2.12.1",
     listOf("error_prone_annotations", "error_prone_core", "error_prone_test_helpers")
   ),
   DependencySet(

+ 18 - 15
instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequest.java

@@ -5,8 +5,8 @@
 
 package io.opentelemetry.instrumentation.awssdk.v2_2;
 
-import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.DynamoDB;
-import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.Kinesis;
+import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.DYNAMODB;
+import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.KINESIS;
 import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.S3;
 import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.SQS;
 import static io.opentelemetry.instrumentation.awssdk.v2_2.FieldMapping.request;
@@ -23,26 +23,29 @@ import software.amazon.awssdk.core.SdkRequest;
  * SDK automatically
  * (https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2291).
  */
+// We match the actual name in the AWS SDK for better consistency with it and possible future
+// autogeneration.
+@SuppressWarnings("MemberName")
 enum AwsSdkRequest {
   // generic requests
-  DynamoDbRequest(DynamoDB, "DynamoDbRequest"),
+  DynamoDbRequest(DYNAMODB, "DynamoDbRequest"),
   S3Request(S3, "S3Request"),
   SqsRequest(SQS, "SqsRequest"),
-  KinesisRequest(Kinesis, "KinesisRequest"),
+  KinesisRequest(KINESIS, "KinesisRequest"),
   // specific requests
   BatchGetItem(
-      DynamoDB,
+      DYNAMODB,
       "BatchGetItemRequest",
       request("aws.dynamodb.table_names", "RequestItems"),
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity")),
   BatchWriteItem(
-      DynamoDB,
+      DYNAMODB,
       "BatchWriteItemRequest",
       request("aws.dynamodb.table_names", "RequestItems"),
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity"),
       response("aws.dynamodb.item_collection_metrics", "ItemCollectionMetrics")),
   CreateTable(
-      DynamoDB,
+      DYNAMODB,
       "CreateTableRequest",
       request("aws.dynamodb.global_secondary_indexes", "GlobalSecondaryIndexes"),
       request("aws.dynamodb.local_secondary_indexes", "LocalSecondaryIndexes"),
@@ -53,29 +56,29 @@ enum AwsSdkRequest {
           "aws.dynamodb.provisioned_throughput.write_capacity_units",
           "ProvisionedThroughput.WriteCapacityUnits")),
   DeleteItem(
-      DynamoDB,
+      DYNAMODB,
       "DeleteItemRequest",
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity"),
       response("aws.dynamodb.item_collection_metrics", "ItemCollectionMetrics")),
   GetItem(
-      DynamoDB,
+      DYNAMODB,
       "GetItemRequest",
       request("aws.dynamodb.projection_expression", "ProjectionExpression"),
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity"),
       request("aws.dynamodb.consistent_read", "ConsistentRead")),
   ListTables(
-      DynamoDB,
+      DYNAMODB,
       "ListTablesRequest",
       request("aws.dynamodb.exclusive_start_table_name", "ExclusiveStartTableName"),
       response("aws.dynamodb.table_count", "TableNames"),
       request("aws.dynamodb.limit", "Limit")),
   PutItem(
-      DynamoDB,
+      DYNAMODB,
       "PutItemRequest",
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity"),
       response("aws.dynamodb.item_collection_metrics", "ItemCollectionMetrics")),
   Query(
-      DynamoDB,
+      DYNAMODB,
       "QueryRequest",
       request("aws.dynamodb.attributes_to_get", "AttributesToGet"),
       request("aws.dynamodb.consistent_read", "ConsistentRead"),
@@ -86,7 +89,7 @@ enum AwsSdkRequest {
       request("aws.dynamodb.select", "Select"),
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity")),
   Scan(
-      DynamoDB,
+      DYNAMODB,
       "ScanRequest",
       request("aws.dynamodb.attributes_to_get", "AttributesToGet"),
       request("aws.dynamodb.consistent_read", "ConsistentRead"),
@@ -100,12 +103,12 @@ enum AwsSdkRequest {
       response("aws.dynamodb.count", "Count"),
       response("aws.dynamodb.scanned_count", "ScannedCount")),
   UpdateItem(
-      DynamoDB,
+      DYNAMODB,
       "UpdateItemRequest",
       response("aws.dynamodb.consumed_capacity", "ConsumedCapacity"),
       response("aws.dynamodb.item_collection_metrics", "ItemCollectionMetrics")),
   UpdateTable(
-      DynamoDB,
+      DYNAMODB,
       "UpdateTableRequest",
       request("aws.dynamodb.attribute_definitions", "AttributeDefinitions"),
       request("aws.dynamodb.global_secondary_index_updates", "GlobalSecondaryIndexUpdates"),

+ 2 - 2
instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AwsSdkRequestType.java

@@ -14,8 +14,8 @@ import java.util.Map;
 enum AwsSdkRequestType {
   S3(request("aws.bucket.name", "Bucket")),
   SQS(request("aws.queue.url", "QueueUrl"), request("aws.queue.name", "QueueName")),
-  Kinesis(request("aws.stream.name", "StreamName")),
-  DynamoDB(request("aws.table.name", "TableName"));
+  KINESIS(request("aws.stream.name", "StreamName")),
+  DYNAMODB(request("aws.table.name", "TableName"));
 
   // Wrapping in unmodifiableMap
   @SuppressWarnings("ImmutableEnumChecker")

+ 2 - 2
instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/TracingExecutionInterceptor.java

@@ -5,7 +5,7 @@
 
 package io.opentelemetry.instrumentation.awssdk.v2_2;
 
-import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.DynamoDB;
+import static io.opentelemetry.instrumentation.awssdk.v2_2.AwsSdkRequestType.DYNAMODB;
 
 import io.opentelemetry.api.trace.Span;
 import io.opentelemetry.context.Scope;
@@ -113,7 +113,7 @@ final class TracingExecutionInterceptor implements ExecutionInterceptor {
 
     fieldMapper.mapToAttributes(sdkRequest, awsSdkRequest, span);
 
-    if (awsSdkRequest.type() == DynamoDB) {
+    if (awsSdkRequest.type() == DYNAMODB) {
       span.setAttribute(SemanticAttributes.DB_SYSTEM, "dynamodb");
       String operation = attributes.getAttribute(SdkExecutionAttribute.OPERATION_NAME);
       if (operation != null) {

+ 1 - 0
instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/OpenTelemetryTracing.java

@@ -211,6 +211,7 @@ final class OpenTelemetryTracing implements Tracing {
 
     // Added and called in 6.0+
     // @Override
+    @SuppressWarnings("UnusedMethod")
     public synchronized Tracer.Span start(RedisCommand<?, ?, ?> command) {
       start();
 

+ 2 - 0
instrumentation/micrometer/micrometer-1.5/library/src/main/java/io/opentelemetry/instrumentation/micrometer/v1_5/OpenTelemetryTimer.java

@@ -27,6 +27,8 @@ import java.util.Collections;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.LongAdder;
 
+// Will be deleted
+@SuppressWarnings("LongDoubleConversion")
 final class OpenTelemetryTimer extends AbstractTimer implements RemovableMeter {
 
   private final Measurements measurements;

+ 2 - 0
instrumentation/opentelemetry-annotations-1.0/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/otelannotations/AbstractTraced.java

@@ -9,6 +9,8 @@ public abstract class AbstractTraced<T extends U, U> {
 
   protected static final String SUCCESS_VALUE = "Value";
 
+  // Not important for sake of testing
+  @SuppressWarnings("StaticAssignmentOfThrowable")
   protected static final IllegalArgumentException FAILURE = new IllegalArgumentException("Boom");
 
   protected AbstractTraced() {

+ 1 - 0
instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/ProcessMetrics.java

@@ -51,6 +51,7 @@ public class ProcessMetrics {
         .gaugeBuilder("runtime.java.cpu_time")
         .setDescription("Runtime Java CPU time")
         .setUnit("ms")
+        .ofLongs()
         .buildWithCallback(
             r -> {
               processInfo.updateAttributes();

+ 1 - 1
instrumentation/oshi/testing/src/main/java/io/opentelemetry/instrumentation/oshi/AbstractProcessMetricsTest.java

@@ -43,7 +43,7 @@ public abstract class AbstractProcessMetricsTest {
                     metric ->
                         assertThat(metric)
                             .hasUnit("ms")
-                            .hasDoubleGauge()
+                            .hasLongGauge()
                             .points()
                             .anySatisfy(point -> assertThat(point.getValue()).isPositive())));
   }

+ 2 - 1
muzzle/src/test/java/io/opentelemetry/instrumentation/TestHelperClasses.java

@@ -7,6 +7,7 @@ package io.opentelemetry.instrumentation;
 
 import java.util.ArrayList;
 import java.util.List;
+import javax.annotation.Nullable;
 
 public class TestHelperClasses {
   public static class Helper extends HelperSuperClass implements HelperInterface {
@@ -39,7 +40,7 @@ public class TestHelperClasses {
     int hashCode();
 
     @Override
-    boolean equals(Object other);
+    boolean equals(@Nullable Object other);
 
     Object clone();
 

+ 3 - 1
muzzle/src/test/java/io/opentelemetry/test/AnotherTestInterface.java

@@ -5,6 +5,8 @@
 
 package io.opentelemetry.test;
 
+import javax.annotation.Nullable;
+
 public interface AnotherTestInterface extends TestInterface {
   void bar();
 
@@ -12,7 +14,7 @@ public interface AnotherTestInterface extends TestInterface {
   int hashCode();
 
   @Override
-  boolean equals(Object other);
+  boolean equals(@Nullable Object other);
 
   Object clone();
 

+ 2 - 0
smoke-tests/src/test/java/io/opentelemetry/smoketest/windows/WindowsTestContainerManager.java

@@ -342,6 +342,8 @@ public class WindowsTestContainerManager extends AbstractTestContainerManager {
     }
   }
 
+  // https://github.com/google/error-prone/issues/3090
+  @SuppressWarnings("MethodCanBeStatic")
   private interface Waiter {
     default void configureLogger(ContainerLogHandler logHandler) {}