Public API 检查 Kotlin 库

Public API check for Kotlin libraries

我现在正在编写一个小型 Kotlin 库,想知道是否有一种方法可以验证哪些 classes 和函数 publicly 公开。

我主要是想确保库不会暴露任何不属于 public API.

的实现细节

截至目前,每当库用户不应该能够访问给定的 class / 函数时,我将所有内容都表示为 internal。 这种方法的问题是我可能会忘记将某些内容声明为 internal,从而将某些内容暴露给用户。

当我无意公开 class / 方法时,我希望在构建时收到警告/错误。

非常感谢有关如何实现此目标或最佳实践的任何提示!

Kotlin 1.4-M2 引入了 explicit API mode,感觉就像您要找的东西。显式 API 模式要求您将 public 可见性修饰符添加到所有 public API 并显式指定 return 类型。您可以将 Gradle 插件配置为警告您显式 API 模式违规,甚至使构建失败。

此功能自 Kotlin 1.4 后可用。

该功能仅在Kotlin 1.4中可用,目前处于RC阶段,但您可以使用1.4版本的Kotlin Gradle插件和1.3.x 版本的 stdlib,既受益于新的 Gradle 插件功能,又确保您的库不依赖于不稳定的第 3 方代码。

Kotlin DSL 示例 (build.gradle.kts):

kotlin {   
   explicitApi() // for strict mode
   // or
   explicitApiWarning() // for warning mode
}

使用 Groovy DSL (build.gradle) 的示例:

kotlin {   
   explicitApi = 'strict'
   // or
   explicitApi = 'warning'
}