gpt4 book ai didi

java - 在编写 Sonar 插件规则时,如何获取另一个java源文件中定义的Tree.Kind.VARIABLE的类型?

转载 作者:行者123 更新时间:2023-12-01 22:03:38 26 4
gpt4 key购买 nike

我正在编写 Sonar 插件规则,如何获得在另一个java源文件中定义的Tree.Kind.VARIABLE的类型?

//Cursor.java:
public interface Cursor extends Closeable {
// TODO.
};

//Engine.java:
public class Engine extends HandlerThread {
private Cursor mCursor;
public List<Suggestion> getSuggestions(){
Cursor photoCursor = contentResolver.query();
// TODO.
}
}

Sonar 插件规则分析Engine.java时,如何获取mCursor的类型?和 photoCursor 的类型?

我的代码是:

public class VarCheck extends IssuableSubscriptionVisitor
{

@Override
public List<Tree.Kind> nodesToVisit()
{
return ImmutableList.of(Tree.Kind.VARIABLE);
}

@Override
public void visitNode(Tree tree)
{
if (tree.is(Tree.Kind.VARIABLE))
{
VariableTree vart = (VariableTree)tree;
System.out.println("visitNode 02: " + vart.symbol().name() +" "+ vart.symbol().type().name());

if (vart.symbol().isVariableSymbol())
{
VariableSymbol varSymbol = (VariableSymbol)vart.symbol();
System.out.println("visitNode 03: " + varSymbol.name()
+" "+ varSymbol.type().name()
+" "+ varSymbol.type().isSubtypeOf("java.io.Closeable"));
// Why varSymbol.type().name() is unknownSymbol?
}

// vart.accept(visitor);

}
}
}

最佳答案

订阅Tree.Kind.VARIABLE,将节点转换为VariableTree,访问该VariableTree的symbol().type()。

关于java - 在编写 Sonar 插件规则时,如何获取另一个java源文件中定义的Tree.Kind.VARIABLE的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231820/

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