binary-compatibility-validator
binary-compatibility-validator copied to clipboard
Public API management tool
Kind of an edge case but something like this: ```kotlin // -foo.kt internal fun doStuff() {} ``` will show up in apiDump: ``` public final class -fooKt { } ```...
`allprojects` is considered a bad practice in Gradle and it will break future features like project isolation. Should be great if one of these options was available before the final...
``` FAILURE: Build failed with an exception. * What went wrong: Configuration cache problems found in this build. 10 problems were found storing the configuration cache. - Task `:detekt-api:apiDump` of...
Binary compatibility plugin configures necessary tasks like 'apiDump' and 'apiCheck' only if `kotlin`, `kotlin-android` or `kotlin-multiplatform` plugins are applied as can be seen [here](https://github.com/Kotlin/binary-compatibility-validator/blob/89ad35ec75dcbb6ede9b72f7185416783828db02/src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt#L112) Although it can be used for...
``` apiValidation { nonPublicMarkers += ["com.example.InternalApi"] } ``` ```kotlin package com.example @InternalApi class Example { class Nested { fun foo() {} } } ``` produces following dump: ``` public final...
The following: ```kotlin @Target(AnnotationTarget.PROPERTY) annotation class HiddenProperty public class Foo { companion object { @HiddenProperty const val bar = "barValue" } } ``` Generates the following pseudo Java code: ```java...
I'm using kotlin 1.5.31 with compose 1.0.5. My api dump contains a lot of following classes ``` public final class cloud/jablotron/apps/lib/auth/oauth2/ui/screens/login/ComposableSingletons$LoginScreenKt { public static final field INSTANCE Lcloud/jablotron/apps/lib/auth/oauth2/ui/screens/login/ComposableSingletons$LoginScreenKt; public static...
The following code: ```kotlin class FooBar private constructor(val id: String) { class Builder { fun build() = FooBar("") } } ``` dumps the following API: ``` public final class com/apollographql/apollo3/api/FooBar...
This check is always false https://github.com/Kotlin/binary-compatibility-validator/blob/master/src/main/kotlin/BinaryCompatibilityValidatorPlugin.kt#L87 for Android project. This is because source files are located in `src/main/java` or `src/main/kotlin` by convention, but `sourceSets` list points only to `src/release/kotlin` and...