gpt4 book ai didi

java - Sonar Qube。为 Java 创建自定义规则

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

任何人都可以帮我解决这个案子。

我有下一个测试文件:

AWSCredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
AmazonWebServiceClient client = new AmazonS3Client(provider); // Noncompliant

当我探索构造函数 AmazonS3Client 的参数时,有没有办法从变量 provider 中提取接口(interface)的特定实现?现在我只能提取此变量的 AWSCredentialsProvider。

最佳答案

由于它不是那么明确,我猜测您正在尝试检索用于初始化 provider 变量的实现类型,这将是 EnvironmentVariableCredientialsProvider

目前没有简单直接的方法来实现这一目标。最好的方法是按以下步骤进行:

  • provider IdentifierTree 中,使用语义 API 获取相应的符号。
  • provider 符号跳转到声明树(如果在另一个文件中声明标识符,则声明树将为空)。
  • 声明中,如果树是VariableTree,则查找初始值设定项表达式。
  • ExpressionTree 中获取符号 Type 的类型,这将为您提供实现类型。

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

关于java - Sonar Qube。为 Java 创建自定义规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43092663/

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