索纳库贝。为Java创建自定义规则

索纳库贝。为Java创建自定义规则,java,sonarqube,Java,Sonarqube,任何人都可以帮我处理这个案子 我有下一个测试文件: AWSCredentialsProvider provider = new EnvironmentVariableCredentialsProvider(); AmazonWebServiceClient client = new AmazonS3Client(provider); // Noncompliant 当我研究构造函数AmazonS3Client的参数时,有没有办法从变量提供程序中提取接口的特定实现?现在,我只能为此变量提取AW

任何人都可以帮我处理这个案子

我有下一个测试文件:

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

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

因为它没有那么明确,我猜您正在尝试检索用于初始化th
提供程序
变量的实现类型,即
环境变量CredientialsProvider

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

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

这是第一步,应该可以帮助你走得更远。当然,您接下来可能需要处理在没有初始值设定项的情况下声明变量,然后在其他地方赋值的情况。要检索这些表达式,请查看符号用法,而不是声明,然后在树上漫游。

非常感谢。