首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarQube。为Java创建自定义规则

SonarQube。为Java创建自定义规则
EN

Stack Overflow用户
提问于 2017-03-29 11:49:05
回答 1查看 80关注 0票数 0

任何人都可以帮我办案。

我有下一个测试文件:

代码语言:javascript
复制
AWSCredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
AmazonWebServiceClient client = new AmazonS3Client(provider); // Noncompliant 

当我研究构造函数AmazonS3Client的参数时,有没有方法从变量提供程序中提取接口的特定实现?现在,我只能为这个变量提取AWSCredentialsProvider。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-29 12:21:28

由于没有那么明确,我猜您正在尝试检索用于初始化provider变量(即EnvironmentVariableCredientialsProvider )的实现类型。

目前没有一种简单而直接的方法来实现这一点。最好的办法是按以下方式进行:

  • provider IdentifierTree中,使用语义API获取相应的符号。
  • provider符号跳到声明树(如果标识符在另一个文件中声明,则为null )。
  • declaration中,如果树是VariableTree,则查找初始化器表达式。
  • ExpressionTree中获取符号类型的类型,这将给出实现类型。

这是第一步,应该能帮助你走得更远。当然,接下来您可能需要处理这样的情况:变量是在没有初始化器的情况下声明的,然后被分配到其他地方。要检索这些表达式,请查看符号用法,而不是声明,然后遍历树。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43092663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档