AWSCredentialsProvider

AWSCredentialsProvider

任何人都可以帮助我解决这个问题。

我有下一个测试文件:

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


探索构造函数AmazonS3Client的参数时,是否可以从变量提供程序中提取接口的特定实现?现在,我只能提取此变量的AWSCredentialsProvider。

最佳答案

由于不是很明确,我猜您正在尝试检索用于初始化provider变量的实现类型,该类型将为EnvironmentVariableCredientialsProvider

当前没有实现此目的的简便方法。最好的方法如下:


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


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

08-07 07:35