我一直在尝试使用 Pinterest ktlint库创建一个规则集,但我无法删除子参数列表的一部分。
https://github.com/pinterest/ktlint/issues/709
由于 Kotlin 更新以支持“尾随逗号”,这打破了我所有的静态代码分析(SonarQube Gradle 插件 2.8)。所以我决定创建一个 RuleSetProvider 来从代码中删除这个烦人的逗号 ',' 在项目中找到的所有参数列表的末尾。
class NoTrailingCommaRule : Rule("no-trailing-comma") {
override fun visit(
node: ASTNode,
autoCorrect: Boolean,
emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit
) {
if (node.elementType == ElementType.COMMA) {
node.parents().forEach {
if (it.elementType == ElementType.VALUE_PARAMETER_LIST) {
if (it.text.contains("pepe")) {
println("############# IS PEPE ###############")
println("ParamList-> " + it.text)
println("-------------------------------------")
if (it is PsiParameterList) {
it.parameters.forEach { param ->
println(" -> ${param.text}")
// if (next.elementType == ElementType.COMMA)
// println(" -> comma,")
println("---==---")
}
println("#####################################")
}
}
}
}
}
}
}
/// Sample class to lint
data class PEPE(
val pepe: String,
var pepe1: List<String> = emptyList(), //<- This is the kind of comma I want to remove
)
那是我当前尝试获取逗号并替换的尝试,但是当我能够打印参数行时,逗号不存在。