m_k*_*kis 6 code-generation kotlin kotlinpoet
有什么方法可以省略public通过 KotlinPoetTypeSpec.Builder和PropertySpec.Builder分别生成的类型和属性中的冗余修饰符吗?
叶戈尔上面的答案是正确的。在 KotlinPoet 中无法省略多余的public修饰符,这是有充分理由的。
然而,所有这些(对我来说是不必要的)警告都让我心烦意乱,我必须找到一些方法来摆脱它们。我最终想到的是将它们抑制在 KotlinPoet 生成的文件中。
这是一个扩展,使FileSpec.Builder您能够抑制特定生成文件的警告。
internal fun FileSpec.Builder.suppressWarningTypes(vararg types: String) {
if (types.isEmpty()) {
return
}
val format = "%S,".repeat(types.count()).trimEnd(',')
addAnnotation(
AnnotationSpec.builder(ClassName("", "Suppress"))
.addMember(format, *types)
.build()
)
}
Run Code Online (Sandbox Code Playgroud)
下面是如何使用它来消除生成文件中冗余可见性修饰符警告的示例:
val fileBuilder = FileSpec.builder(myPackageName, myClassName)
fileBuilder.suppressWarningTypes("RedundantVisibilityModifier")
Run Code Online (Sandbox Code Playgroud)
该扩展还支持抑制多种警告类型:
fileBuilder.suppressWarningTypes("RedundantVisibilityModifier", "USELESS_CAST")
Run Code Online (Sandbox Code Playgroud)
请注意,我绝不建议您消除生成代码中所有困扰您的警告!请谨慎使用此代码!
不,也没有计划支持此类功能。如果您的用例不具有显式public修饰符很重要,那么一个好的解决方案是使用删除它们的脚本对输出进行后处理。
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |