jApiCmp exclusions (#4746)
* Demonstrate failing japicmp * Exclude allowable compatiblity changes * Rollback temp change to MetricExporter
This commit is contained in:
parent
d069e1b473
commit
1697130f0a
|
|
@ -22,7 +22,7 @@ dependencies {
|
||||||
implementation("com.squareup.wire:wire-gradle-plugin:4.3.0")
|
implementation("com.squareup.wire:wire-gradle-plugin:4.3.0")
|
||||||
implementation("gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.18")
|
implementation("gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.18")
|
||||||
implementation("gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.9.0")
|
implementation("gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.9.0")
|
||||||
implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.0")
|
implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.1")
|
||||||
implementation("me.champeau.jmh:jmh-gradle-plugin:0.6.6")
|
implementation("me.champeau.jmh:jmh-gradle-plugin:0.6.6")
|
||||||
implementation("net.ltgt.gradle:gradle-errorprone-plugin:2.0.2")
|
implementation("net.ltgt.gradle:gradle-errorprone-plugin:2.0.2")
|
||||||
implementation("net.ltgt.gradle:gradle-nullaway-plugin:1.3.0")
|
implementation("net.ltgt.gradle:gradle-nullaway-plugin:1.3.0")
|
||||||
|
|
|
||||||
|
|
@ -35,17 +35,6 @@ val latestReleasedVersion: String by lazy {
|
||||||
class AllowDefaultMethodRule : AbstractRecordingSeenMembers() {
|
class AllowDefaultMethodRule : AbstractRecordingSeenMembers() {
|
||||||
override fun maybeAddViolation(member: JApiCompatibility): Violation? {
|
override fun maybeAddViolation(member: JApiCompatibility): Violation? {
|
||||||
for (change in member.compatibilityChanges) {
|
for (change in member.compatibilityChanges) {
|
||||||
if (change == JApiCompatibilityChange.METHOD_NEW_DEFAULT) {
|
|
||||||
// JApiCmp treats this as incompatible for the situation where an existing subclass may have
|
|
||||||
// a method with the same name and different signature. We accept this corner case for
|
|
||||||
// semver.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (change == JApiCompatibilityChange.METHOD_ABSTRACT_NOW_DEFAULT) {
|
|
||||||
// Adding default implementations to interface methods previously abstract is not a breaking
|
|
||||||
// change.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if (isAbstractMethodOnAutoValue(member, change)) {
|
if (isAbstractMethodOnAutoValue(member, change)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -125,9 +114,10 @@ if (!project.hasProperty("otel.release") && !project.name.startsWith("bom")) {
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reproduce defaults from https://github.com/melix/japicmp-gradle-plugin/blob/09f52739ef1fccda6b4310cf3f4b19dc97377024/src/main/java/me/champeau/gradle/japicmp/report/ViolationsGenerator.java#L130
|
// Reproduce defaults from https://github.com/melix/japicmp-gradle-plugin/blob/09f52739ef1fccda6b4310cf3f4b19dc97377024/src/main/java/me/champeau/gradle/japicmp/report/ViolationsGenerator.java#L130
|
||||||
// only changing the BinaryIncompatibleRule to our custom one that allows new default methods
|
// but allow new default methods on interfaces, adding default implementations to
|
||||||
// on interfaces, and adding default implementations to interface methods previously
|
// interface methods previously abstract, and select additional customizations defined in
|
||||||
// abstract.
|
// AllowDefaultMethodRule.
|
||||||
|
compatibilityChangeExcludes.set(listOf("METHOD_NEW_DEFAULT", "METHOD_ABSTRACT_NOW_DEFAULT"))
|
||||||
richReport {
|
richReport {
|
||||||
addSetupRule(RecordSeenMembersSetup::class.java)
|
addSetupRule(RecordSeenMembersSetup::class.java)
|
||||||
addRule(JApiChangeStatus.NEW, SourceCompatibleRule::class.java)
|
addRule(JApiChangeStatus.NEW, SourceCompatibleRule::class.java)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue