Skip to content

Commit 2ab70ff

Browse files
authored
Upgrade Errorprone to 2.31.0 (#35684)
* Upgrade errorprone to 2.31.0
1 parent 17d5039 commit 2ab70ff

135 files changed

Lines changed: 350 additions & 337 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

buildSrc/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ dependencies {
5353
runtimeOnly("gradle.plugin.com.dorongold.plugins:task-tree:1.5") // Adds a 'taskTree' task to print task dependency tree
5454
runtimeOnly("net.linguica.gradle:maven-settings-plugin:0.5")
5555
runtimeOnly("gradle.plugin.io.pry.gradle.offline_dependencies:gradle-offline-dependencies-plugin:0.5.0") // Enable creating an offline repository
56-
runtimeOnly("net.ltgt.gradle:gradle-errorprone-plugin:3.1.0") // Enable errorprone Java static analysis
56+
runtimeOnly("net.ltgt.gradle:gradle-errorprone-plugin:4.2.0") // Enable errorprone Java static analysis
5757
runtimeOnly("org.ajoberstar.grgit:grgit-gradle:5.3.2") // Enable website git publish to asf-site branch
5858
runtimeOnly("com.avast.gradle:gradle-docker-compose-plugin:0.16.12") // Enable docker compose tasks
5959
runtimeOnly("ca.cutterslade.gradle:gradle-dependency-analyze:1.8.3") // Enable dep analysis

buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy

Lines changed: 87 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ class BeamModulePlugin implements Plugin<Project> {
604604
def checkerframework_version = "3.42.0"
605605
def classgraph_version = "4.8.162"
606606
def dbcp2_version = "2.9.0"
607-
def errorprone_version = "2.10.0"
607+
def errorprone_version = "2.31.0"
608608
// [bomupgrader] determined by: com.google.api:gax, consistent with: google_cloud_platform_libraries_bom
609609
def gax_version = "2.68.2"
610610
def google_ads_version = "33.0.0"
@@ -1497,7 +1497,7 @@ class BeamModulePlugin implements Plugin<Project> {
14971497

14981498
project.dependencies {
14991499
errorprone("com.google.errorprone:error_prone_core:$errorprone_version")
1500-
errorprone("jp.skypencil.errorprone.slf4j:errorprone-slf4j:0.1.2")
1500+
errorprone("jp.skypencil.errorprone.slf4j:errorprone-slf4j:0.1.28")
15011501
}
15021502

15031503
project.configurations.errorprone { resolutionStrategy.force "com.google.errorprone:error_prone_core:$errorprone_version" }
@@ -1514,56 +1514,91 @@ class BeamModulePlugin implements Plugin<Project> {
15141514
options.fork = true
15151515
options.forkOptions.jvmArgs += errorProneAddModuleOpts
15161516
}
1517-
1518-
// TODO(https://github.com/apache/beam/issues/20955): Enable errorprone checks
1519-
options.errorprone.errorproneArgs.add("-Xep:AutoValueImmutableFields:OFF")
1520-
options.errorprone.errorproneArgs.add("-Xep:AutoValueSubclassLeaked:OFF")
1521-
options.errorprone.errorproneArgs.add("-Xep:BadImport:OFF")
1522-
options.errorprone.errorproneArgs.add("-Xep:BadInstanceof:OFF")
1523-
options.errorprone.errorproneArgs.add("-Xep:BigDecimalEquals:OFF")
1524-
options.errorprone.errorproneArgs.add("-Xep:ComparableType:OFF")
1525-
options.errorprone.errorproneArgs.add("-Xep:DoNotMockAutoValue:OFF")
1526-
options.errorprone.errorproneArgs.add("-Xep:EmptyBlockTag:OFF")
1527-
options.errorprone.errorproneArgs.add("-Xep:EmptyCatch:OFF")
1528-
options.errorprone.errorproneArgs.add("-Xep:EqualsGetClass:OFF")
1529-
options.errorprone.errorproneArgs.add("-Xep:EqualsUnsafeCast:OFF")
1530-
options.errorprone.errorproneArgs.add("-Xep:EscapedEntity:OFF")
1531-
options.errorprone.errorproneArgs.add("-Xep:ExtendsAutoValue:OFF")
1532-
options.errorprone.errorproneArgs.add("-Xep:InlineFormatString:OFF")
1533-
options.errorprone.errorproneArgs.add("-Xep:InlineMeSuggester:OFF")
1534-
options.errorprone.errorproneArgs.add("-Xep:InvalidBlockTag:OFF")
1535-
options.errorprone.errorproneArgs.add("-Xep:InvalidInlineTag:OFF")
1536-
options.errorprone.errorproneArgs.add("-Xep:InvalidLink:OFF")
1537-
options.errorprone.errorproneArgs.add("-Xep:InvalidParam:OFF")
1538-
options.errorprone.errorproneArgs.add("-Xep:InvalidThrows:OFF")
1539-
options.errorprone.errorproneArgs.add("-Xep:JavaTimeDefaultTimeZone:OFF")
1540-
options.errorprone.errorproneArgs.add("-Xep:JavaUtilDate:OFF")
1541-
options.errorprone.errorproneArgs.add("-Xep:JodaConstructors:OFF")
1542-
options.errorprone.errorproneArgs.add("-Xep:MalformedInlineTag:OFF")
1543-
options.errorprone.errorproneArgs.add("-Xep:MissingSummary:OFF")
1544-
options.errorprone.errorproneArgs.add("-Xep:MixedMutabilityReturnType:OFF")
1545-
options.errorprone.errorproneArgs.add("-Xep:PreferJavaTimeOverload:OFF")
1546-
options.errorprone.errorproneArgs.add("-Xep:MutablePublicArray:OFF")
1547-
options.errorprone.errorproneArgs.add("-Xep:NonCanonicalType:OFF")
1548-
options.errorprone.errorproneArgs.add("-Xep:ProtectedMembersInFinalClass:OFF")
1549-
options.errorprone.errorproneArgs.add("-Xep:Slf4jFormatShouldBeConst:OFF")
1550-
options.errorprone.errorproneArgs.add("-Xep:Slf4jSignOnlyFormat:OFF")
1551-
options.errorprone.errorproneArgs.add("-Xep:StaticAssignmentInConstructor:OFF")
1552-
options.errorprone.errorproneArgs.add("-Xep:ThreadPriorityCheck:OFF")
1553-
options.errorprone.errorproneArgs.add("-Xep:TimeUnitConversionChecker:OFF")
1554-
options.errorprone.errorproneArgs.add("-Xep:UndefinedEquals:OFF")
1555-
options.errorprone.errorproneArgs.add("-Xep:UnescapedEntity:OFF")
1556-
options.errorprone.errorproneArgs.add("-Xep:UnnecessaryLambda:OFF")
1557-
options.errorprone.errorproneArgs.add("-Xep:UnnecessaryMethodReference:OFF")
1558-
options.errorprone.errorproneArgs.add("-Xep:UnnecessaryParentheses:OFF")
1559-
options.errorprone.errorproneArgs.add("-Xep:UnrecognisedJavadocTag:OFF")
1560-
options.errorprone.errorproneArgs.add("-Xep:UnsafeReflectiveConstructionCast:OFF")
1561-
options.errorprone.errorproneArgs.add("-Xep:UseCorrectAssertInTests:OFF")
1562-
1563-
// Sometimes a static logger is preferred, which is the convention
1564-
// currently used in beam. See docs:
1565-
// https://github.com/KengoTODA/findbugs-slf4j#slf4j_logger_should_be_non_static
1566-
options.errorprone.errorproneArgs.add("-Xep:Slf4jLoggerShouldBeNonStatic:OFF")
1517+
def disabledChecks = [
1518+
// TODO(https://github.com/apache/beam/issues/20955): Enable errorprone checks
1519+
"AutoValueImmutableFields",
1520+
"AutoValueImmutableFields",
1521+
"AutoValueSubclassLeaked",
1522+
"BadImport",
1523+
"BadInstanceof",
1524+
"BigDecimalEquals",
1525+
"ComparableType",
1526+
"DoNotMockAutoValue",
1527+
"EmptyBlockTag",
1528+
"EmptyCatch",
1529+
"EqualsGetClass",
1530+
"EqualsUnsafeCast",
1531+
"EscapedEntity",
1532+
"ExtendsAutoValue",
1533+
"InlineFormatString",
1534+
"InlineMeSuggester",
1535+
"InvalidBlockTag",
1536+
"InvalidInlineTag",
1537+
"InvalidLink",
1538+
"InvalidParam",
1539+
"InvalidThrows",
1540+
"JavaTimeDefaultTimeZone",
1541+
"JavaUtilDate",
1542+
"JodaConstructors",
1543+
"MalformedInlineTag",
1544+
"MissingSummary",
1545+
"MixedMutabilityReturnType",
1546+
"PreferJavaTimeOverload",
1547+
"MutablePublicArray",
1548+
"NonCanonicalType",
1549+
"ProtectedMembersInFinalClass",
1550+
"Slf4jFormatShouldBeConst",
1551+
"Slf4jSignOnlyFormat",
1552+
"StaticAssignmentInConstructor",
1553+
"ThreadPriorityCheck",
1554+
"TimeUnitConversionChecker",
1555+
"UndefinedEquals",
1556+
"UnescapedEntity",
1557+
"UnnecessaryLambda",
1558+
"UnnecessaryMethodReference",
1559+
"UnnecessaryParentheses",
1560+
"UnrecognisedJavadocTag",
1561+
"UnsafeReflectiveConstructionCast",
1562+
"UseCorrectAssertInTests",
1563+
// errorprone 3.2.0+ checks
1564+
"DirectInvocationOnMock",
1565+
"Finalize",
1566+
"JUnitIncompatibleType",
1567+
"LongDoubleConversion",
1568+
"MockNotUsedInProduction",
1569+
"NarrowCalculation",
1570+
"NullableTypeParameter",
1571+
"NullableWildcard",
1572+
"StringCharset",
1573+
"SuperCallToObjectMethod",
1574+
"UnnecessaryLongToIntConversion",
1575+
"UnusedVariable",
1576+
// intended suppressions emerged in newer protobuf versions
1577+
"AutoValueBoxedValues",
1578+
// For backward compatibility. Public method checked in before this check impl
1579+
// Possible use in interface subclasses
1580+
"ClassInitializationDeadlock",
1581+
// for encoding efficiency and backward compatibility
1582+
"EnumOrdinal",
1583+
// widely used in non-public methods
1584+
"NotJavadoc",
1585+
// return values used for assignments widely, and for backward compatibility.
1586+
"NonApiType",
1587+
// Used to test self equal
1588+
"SelfAssertion",
1589+
// Sometimes a static logger is preferred, which is the convention currently used in beam. See docs:
1590+
// https://github.com/KengoTODA/findbugs-slf4j#slf4j_logger_should_be_non_static
1591+
"Slf4jLoggerShouldBeNonStatic",
1592+
// allow implicit Locale.Default
1593+
"StringCaseLocaleUsage",
1594+
// DoFn methods are executed reflectively at pipeline runtime
1595+
"UnusedMethod",
1596+
// Void is a valid element type of DoFn elements
1597+
"VoidUsed",
1598+
]
1599+
disabledChecks.each {
1600+
options.errorprone.errorproneArgs.add("-Xep:${it}:OFF")
1601+
}
15671602
}
15681603
}
15691604

examples/java/src/main/java/org/apache/beam/examples/complete/StreamingWordExtract.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,11 @@ public static void main(String[] args) throws IOException {
123123
Pipeline pipeline = Pipeline.create(options);
124124

125125
String tableSpec =
126-
new StringBuilder()
127-
.append(options.getProject())
128-
.append(":")
129-
.append(options.getBigQueryDataset())
130-
.append(".")
131-
.append(options.getBigQueryTable())
132-
.toString();
126+
options.getProject()
127+
+ ":"
128+
+ options.getBigQueryDataset()
129+
+ "."
130+
+ options.getBigQueryTable();
133131
pipeline
134132
.apply("ReadLines", TextIO.read().from(options.getInputFile()))
135133
.apply(ParDo.of(new ExtractWords()))

examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/SchemasUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ private void validateSchemaTypes(TableSchema bigQuerySchema) {
9595
try {
9696
beamSchema = fromTableSchema(bigQuerySchema);
9797
} catch (UnsupportedOperationException exception) {
98-
LOG.error("Check json schema, {}", exception.getMessage());
98+
LOG.error("Check json schema", exception);
9999
} catch (Exception e) {
100100
LOG.error("Missing schema keywords, please check what all required fields presented");
101101
}

it/common/src/main/java/org/apache/beam/it/common/utils/ResourceManagerUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,7 @@ public static void cleanResources(boolean failOnCleanup, ResourceManager... mana
175175
throw new RuntimeException("Error cleaning up resources", bubbleException);
176176
} else if (bubbleException != null) {
177177
LOG.warn(
178-
"Error cleaning up resources. This is not configured to fail the test: {}",
179-
bubbleException.getMessage());
178+
"Error cleaning up resources. This is not configured to fail the test", bubbleException);
180179
}
181180
}
182181

it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/IOLoadTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ protected void exportMetrics(
121121
try {
122122
metrics = getMetrics(launchInfo, metricsConfig);
123123
} catch (Exception e) {
124-
LOG.warn("Unable to get metrics due to error: {}", e.getMessage());
124+
LOG.warn("Unable to get metrics due to error", e);
125125
return;
126126
}
127127
String testId = UUID.randomUUID().toString();

it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactsSubject.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void hasFiles() {
7272
*
7373
* @param expectedFiles Expected files
7474
*/
75+
@SuppressWarnings("LenientFormatStringValidation")
7576
public void hasFiles(int expectedFiles) {
7677
check("there are %d files", expectedFiles).that(actual.size()).isEqualTo(expectedFiles);
7778
}

it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryStreamingLT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public void setUpTest() {
132132
String expectedTable =
133133
TestProperties.getProperty("expectedTable", "", TestProperties.Type.PROPERTY);
134134
if (!Strings.isNullOrEmpty(expectedTable)) {
135-
config.toBuilder().setExpectedTable(expectedTable).build();
135+
config = config.toBuilder().setExpectedTable(expectedTable).build();
136136
}
137137

138138
crashIntervalSeconds =
@@ -396,7 +396,7 @@ public void runTest(BigQueryIO.Write.Method writeMethod)
396396
} catch (Exception e) {
397397
// Just log the error. Don't re-throw because we have accuracy checks that are more
398398
// important below
399-
LOG.error("Encountered an error while exporting metrics to BigQuery:\n{}", e);
399+
LOG.error("Encountered an error while exporting metrics to BigQuery:", e);
400400
}
401401
}
402402
// If we're not publishing metrics, just run the pipeline normally

runners/core-java/src/main/java/org/apache/beam/runners/core/PaneInfoTracker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void storeCurrentPaneInfo(ReduceFn<?, ?, ?, ?>.Context context, PaneInfo
9393
context.state().access(PANE_INFO_TAG).write(currentPane);
9494
}
9595

96-
private <W> PaneInfo describePane(
96+
private PaneInfo describePane(
9797
Object key, Instant windowMaxTimestamp, PaneInfo previousPane, boolean isFinal) {
9898
boolean isFirst = previousPane == null;
9999
Timing previousTiming = isFirst ? null : previousPane.getTiming();

runners/core-java/src/main/java/org/apache/beam/runners/core/SplittableParDoViaKeyedWorkItems.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.apache.beam.sdk.transforms.splittabledofn.RestrictionTracker;
4343
import org.apache.beam.sdk.transforms.splittabledofn.WatermarkEstimator;
4444
import org.apache.beam.sdk.transforms.windowing.BoundedWindow;
45-
import org.apache.beam.sdk.transforms.windowing.GlobalWindow;
4645
import org.apache.beam.sdk.transforms.windowing.PaneInfo;
4746
import org.apache.beam.sdk.transforms.windowing.TimestampCombiner;
4847
import org.apache.beam.sdk.util.construction.PTransformReplacements;
@@ -250,7 +249,7 @@ public static class ProcessFn<InputT, OutputT, RestrictionT, PositionT, Watermar
250249
*/
251250
private static final StateTag<WatermarkHoldState> watermarkHoldTag =
252251
StateTags.makeSystemTagInternal(
253-
StateTags.<GlobalWindow>watermarkStateInternal("hold", TimestampCombiner.LATEST));
252+
StateTags.watermarkStateInternal("hold", TimestampCombiner.LATEST));
254253

255254
/**
256255
* The state cell containing a copy of the element. Written during the first {@link

0 commit comments

Comments
 (0)