Lint 修复 UClass 中的添加方法
Lint Fix add method inside a UClass
我目前正在为我创建的库编写自定义 lint,并且我已经实现了大部分内容。
困扰我的是如何创建 quickDataFix
以在 UClass
.
中添加方法
例如:我有以下代码,其中将应用 LintFix
。
class TestClass {
}
应用修复后,它应该变成
class TestClass {
fun method1() { }
}
到目前为止,我一直在尝试这条规则。
val fix = LintFix.create()
.replace()
.name("Add method")
.pattern("TestClass(.*)")
.with("TestClass {\nfun method1() { }\n")
.shortenNames()
.range(context.getLocation(clazz.scope)) // 'context' is JavaContext & 'clazz' is UClass
.build()
但似乎没有任何效果,我尝试使用谷歌搜索并查找具有 lint 检查的项目,以便我可以阅读源代码并尝试解决我的问题,但没有成功。
任何帮助将不胜感激。
经过大量的试错方法终于成功了。我知道怎么做了。
好吧,与 UMethod 不同,UClass 提供上下文直到它成为 className。所以我们需要修改它的范围,使整个 class 范围都可用。这可以通过 JavaContext.getRangeLocation()
轻松完成
val fix = LintFix.create()
.replace()
.name("Add method")
.pattern("TestClass(.*)")
.with("TestClass {\nfun method1() { }\n")
.shortenNames()
.range(context.getRangeLocation(clazz.navigationElement, 0, clazz.asSourceString().length))
.build()
这里 fromDelta
是 0 & toDelta 是整个 class 文本的长度。
我目前正在为我创建的库编写自定义 lint,并且我已经实现了大部分内容。
困扰我的是如何创建 quickDataFix
以在 UClass
.
例如:我有以下代码,其中将应用 LintFix
。
class TestClass {
}
应用修复后,它应该变成
class TestClass {
fun method1() { }
}
到目前为止,我一直在尝试这条规则。
val fix = LintFix.create()
.replace()
.name("Add method")
.pattern("TestClass(.*)")
.with("TestClass {\nfun method1() { }\n")
.shortenNames()
.range(context.getLocation(clazz.scope)) // 'context' is JavaContext & 'clazz' is UClass
.build()
但似乎没有任何效果,我尝试使用谷歌搜索并查找具有 lint 检查的项目,以便我可以阅读源代码并尝试解决我的问题,但没有成功。
任何帮助将不胜感激。
经过大量的试错方法终于成功了。我知道怎么做了。
好吧,与 UMethod 不同,UClass 提供上下文直到它成为 className。所以我们需要修改它的范围,使整个 class 范围都可用。这可以通过 JavaContext.getRangeLocation()
val fix = LintFix.create()
.replace()
.name("Add method")
.pattern("TestClass(.*)")
.with("TestClass {\nfun method1() { }\n")
.shortenNames()
.range(context.getRangeLocation(clazz.navigationElement, 0, clazz.asSourceString().length))
.build()
这里 fromDelta
是 0 & toDelta 是整个 class 文本的长度。