Skip to content

Commit 305dafe

Browse files
committed
build: Add Java 8 API compatibility checks
Apply Animal Sniffer to Java 8 JVM SDK modules and check them against the Codehaus Java 8 runtime signature. This catches references to newer JDK APIs while keeping the existing Android signature checks in place where they already apply. Refs GH-5741
1 parent 65f7853 commit 305dafe

37 files changed

Lines changed: 144 additions & 0 deletions

File tree

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ coroutines = "1.6.1"
1111
espresso = "3.7.0"
1212
feign = "11.6"
1313
gummyBears = "0.12.0"
14+
java18Signature = "1.0"
1415
jackson = "2.18.3"
1516
jetbrainsCompose = "1.6.11"
1617
kotlin = "2.2.0"

sentry-apache-http-client-5/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
33

44
plugins {
55
`java-library`
6+
alias(libs.plugins.animalsniffer)
67
id("io.sentry.javadoc")
78
alias(libs.plugins.kotlin.jvm)
89
alias(libs.plugins.errorprone)
@@ -25,6 +26,8 @@ dependencies {
2526
errorprone(libs.nopen.checker)
2627
errorprone(libs.nullaway)
2728

29+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
30+
2831
// tests
2932
testImplementation(libs.apache.httpclient)
3033
testImplementation(projects.sentryTestSupport)
@@ -33,6 +36,8 @@ dependencies {
3336
testImplementation(libs.mockito.kotlin)
3437
}
3538

39+
tasks { check { dependsOn(animalsnifferMain) } }
40+
3641
tasks.withType<JavaCompile>().configureEach {
3742
options.errorprone {
3843
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)

sentry-apollo-3/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ dependencies {
4040

4141
val gummyBearsModule = libs.gummy.bears.api21.get().module
4242
signature("${gummyBearsModule}:${libs.versions.gummyBears.get()}@signature")
43+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
4344
}
4445

4546
tasks { check { dependsOn(animalsnifferMain) } }

sentry-apollo-4/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dependencies {
4242

4343
val gummyBearsModule = libs.gummy.bears.api21.get().module
4444
signature("${gummyBearsModule}:${libs.versions.gummyBears.get()}@signature")
45+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
4546
}
4647

4748
tasks { check { dependsOn(animalsnifferMain) } }

sentry-apollo/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ dependencies {
4141

4242
val gummyBearsModule = libs.gummy.bears.api21.get().module
4343
signature("${gummyBearsModule}:${libs.versions.gummyBears.get()}@signature")
44+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
4445
}
4546

4647
tasks { check { dependsOn(animalsnifferMain) } }

sentry-async-profiler/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.errorprone)
99
alias(libs.plugins.gradle.versions)
1010
alias(libs.plugins.buildconfig)
11+
alias(libs.plugins.animalsniffer)
1112
}
1213

1314
tasks.withType<KotlinCompile>().configureEach {
@@ -28,6 +29,8 @@ dependencies {
2829
errorprone(libs.nopen.checker)
2930
errorprone(libs.nullaway)
3031

32+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
33+
3134
// tests
3235
testImplementation(kotlin(Config.kotlinStdLib))
3336
testImplementation(projects.sentryTestSupport)
@@ -36,6 +39,8 @@ dependencies {
3639
testImplementation(libs.mockito.inline)
3740
}
3841

42+
tasks { check { dependsOn(animalsnifferMain) } }
43+
3944
tasks.withType<JavaCompile>().configureEach {
4045
options.errorprone {
4146
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)

sentry-graphql-22/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.errorprone)
99
alias(libs.plugins.gradle.versions)
1010
alias(libs.plugins.buildconfig)
11+
alias(libs.plugins.animalsniffer)
1112
}
1213

1314
tasks.withType<KotlinCompile>().configureEach {
@@ -27,6 +28,8 @@ dependencies {
2728
errorprone(libs.nopen.checker)
2829
errorprone(libs.nullaway)
2930

31+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
32+
3033
// tests
3134
testImplementation(projects.sentry)
3235
testImplementation(projects.sentryTestSupport)
@@ -41,6 +44,8 @@ dependencies {
4144
testImplementation("com.netflix.graphql.dgs:graphql-error-types:4.9.2")
4245
}
4346

47+
tasks { check { dependsOn(animalsnifferMain) } }
48+
4449
tasks.withType<JavaCompile>().configureEach {
4550
options.errorprone {
4651
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)

sentry-graphql-core/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.errorprone)
99
alias(libs.plugins.gradle.versions)
1010
alias(libs.plugins.buildconfig)
11+
alias(libs.plugins.animalsniffer)
1112
}
1213

1314
tasks.withType<KotlinCompile>().configureEach {
@@ -26,6 +27,8 @@ dependencies {
2627
errorprone(libs.nopen.checker)
2728
errorprone(libs.nullaway)
2829

30+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
31+
2932
// tests
3033
testImplementation(projects.sentry)
3134
testImplementation(projects.sentryTestSupport)
@@ -40,6 +43,8 @@ dependencies {
4043
testImplementation("com.netflix.graphql.dgs:graphql-error-types:4.9.2")
4144
}
4245

46+
tasks { check { dependsOn(animalsnifferMain) } }
47+
4348
tasks.withType<JavaCompile>().configureEach {
4449
options.errorprone {
4550
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)

sentry-graphql/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.errorprone)
99
alias(libs.plugins.gradle.versions)
1010
alias(libs.plugins.buildconfig)
11+
alias(libs.plugins.animalsniffer)
1112
}
1213

1314
tasks.withType<KotlinCompile>().configureEach {
@@ -27,6 +28,8 @@ dependencies {
2728
errorprone(libs.nopen.checker)
2829
errorprone(libs.nullaway)
2930

31+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
32+
3033
// tests
3134
testImplementation(projects.sentry)
3235
testImplementation(projects.sentryTestSupport)
@@ -41,6 +44,8 @@ dependencies {
4144
testImplementation("com.netflix.graphql.dgs:graphql-error-types:4.9.2")
4245
}
4346

47+
tasks { check { dependsOn(animalsnifferMain) } }
48+
4449
tasks.withType<JavaCompile>().configureEach {
4550
options.errorprone {
4651
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)

sentry-jcache/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.errorprone)
99
alias(libs.plugins.gradle.versions)
1010
alias(libs.plugins.buildconfig)
11+
alias(libs.plugins.animalsniffer)
1112
}
1213

1314
tasks.withType<KotlinCompile>().configureEach {
@@ -26,6 +27,8 @@ dependencies {
2627
errorprone(libs.nopen.checker)
2728
errorprone(libs.nullaway)
2829

30+
signature("org.codehaus.mojo.signature:java18:${libs.versions.java18Signature.get()}@signature")
31+
2932
// tests
3033
testImplementation(projects.sentry)
3134
testImplementation(projects.sentryTestSupport)
@@ -36,6 +39,8 @@ dependencies {
3639
testImplementation(libs.mockito.inline)
3740
}
3841

42+
tasks { check { dependsOn(animalsnifferMain) } }
43+
3944
tasks.withType<JavaCompile>().configureEach {
4045
options.errorprone {
4146
check("NullAway", net.ltgt.gradle.errorprone.CheckSeverity.ERROR)

0 commit comments

Comments
 (0)