任何人都可以帮我办案。
我有下一个测试文件:
AWSCredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
AmazonWebServiceClient client = new AmazonS3Client(provider); // Noncompliant 当我研究构造函数AmazonS3Client的参数时,有没有方法从变量提供程序中提取接口的特定实现?现在,我只能为这个变量提取AWSCredentialsProvider。
发布于 2017-03-29 12:21:28
由于没有那么明确,我猜您正在尝试检索用于初始化provider变量(即EnvironmentVariableCredientialsProvider )的实现类型。
目前没有一种简单而直接的方法来实现这一点。最好的办法是按以下方式进行:
provider IdentifierTree中,使用语义API获取相应的符号。provider符号跳到声明树(如果标识符在另一个文件中声明,则为null )。declaration中,如果树是VariableTree,则查找初始化器表达式。ExpressionTree中获取符号类型的类型,这将给出实现类型。这是第一步,应该能帮助你走得更远。当然,接下来您可能需要处理这样的情况:变量是在没有初始化器的情况下声明的,然后被分配到其他地方。要检索这些表达式,请查看符号用法,而不是声明,然后遍历树。
https://stackoverflow.com/questions/43092663
复制相似问题