簡體   English   中英

SonarQube。 為Java創建自定義規則

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM