[英]SonarQube. Create custom rule for Java
任何人都可以幫助我解決這個問題。
我有下一個測試文件:
AWSCredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
AmazonWebServiceClient client = new AmazonS3Client(provider); // Noncompliant
探索構造函數AmazonS3Client的參數時,是否可以從變量提供程序中提取接口的特定實現? 現在,我只能提取此變量的AWSCredentialsProvider。
由於不是那么明確,我猜您正在嘗試檢索用於初始化provider
變量的實現類型,該類型將為EnvironmentVariableCredientialsProvider
。
當前,沒有簡單,直接的方法來實現這一目標。 最好的方法如下:
provider
IdentifierTree
,使用語義API來獲取相應的符號。 provider
符號中跳到聲明樹(如果標識符在另一個文件中聲明,則該樹將為null)。 declaration
,如果樹是VariableTree
,則查找初始化器表達式。 ExpressionTree
,獲取符號Type的類型,這將為您提供實現類型。 這是第一步,應該可以幫助您進一步發展。 當然,接下來您可能需要處理在沒有初始化程序的情況下聲明變量,然后將其分配到其他地方的情況。 要檢索這些表達式,請查看符號用法,而不是聲明,然后遍歷樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.