gpt4 book ai didi

android - 如何解决自定义 Lint 规则中context.report的重载分辨率歧义?

转载 作者:行者123 更新时间:2023-12-02 13:25:47 25 4
gpt4 key购买 nike

今天,我开始学习如何制作一些基本的lint规则,尝试为变量创建lint规则,以检查其名称的长度。

@Suppress("UnstableApiUsage")
class VariableLengthDetector : Detector(), Detector.UastScanner {

override fun getApplicableUastTypes() = listOf(UVariable::class.java)

override fun createUastHandler(context: JavaContext) =
VariableLengthHandler(context)


class VariableLengthHandler(private val context: JavaContext) :
UElementHandler() {

private val variableMinimumLength = 3

override fun visitVariable(node: UVariable) {

node.name?.let {
if (it.length < variableMinimumLength) {
context.report(
issue = variableLengthIssue,
scope = node,
location = context.getNameLocation(node),
message = "this variable can be better named"
)
}
}
}
}
}
由于此处引起的过载歧义,该代码无法编译:
context.report(issue = variableLengthIssue,
scope = node,
location = context.getNameLocation(node),
message = "this variable can be better named")
据我了解,这是因为context.report的重载可以是
public final fun report(issue: Issue, scope: PsiElement?,...
或者可以是
public final fun report(issue: Issue, scope: UElement?,...
但是我不确定如何使用我拥有的Uvariable元素定义这些元素?
我该如何解决这种过载歧义?

最佳答案

您可以将其转换为UElement

context.report(
issue = variableLengthIssue,
scope = node as UElement,
location = context.getNameLocation(node),
message = "this variable can be better named"
)

关于android - 如何解决自定义 Lint 规则中context.report的重载分辨率歧义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64052091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com