2017-03-29 24 views
0

誰もがこのケースで私を助けることができます。SonarQube。 Javaのカスタムルールを作成する

私は次のテストファイルを持っている:

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

は、私はコンストラクタAmazonS3Clientの引数を探索する際、変数プロバイダからインタフェースの特定の実装を抽出する方法はありますか?これで、この変数に対してのみAWSCredentialsProviderを抽出できます。それは、明示的ではないとして

答えて

1

、私はあなたがEnvironmentVariableCredientialsProviderだろうprovider変数、番目初期化するために使用される実装タイプを取得しようとしていることを推測しています。

これを達成するための方法は現在簡単ではありません。

  • providerIdentifierTreeから、対応するシンボルを取得するセマンティックAPIを使用します。最良の方法は、以下のように進行するだろう。
  • providerシンボルから、宣言ツリーにジャンプします(識別子が別のファイルで宣言されている場合はnullになります)。
  • declarationより、ツリーがVariableTreeの場合は、初期化式を探します。
  • ExpressionTreeから、シンボルTypeのタイプを取得します。このタイプは実装タイプを示します。

これは、さらに進化するのに役立つ最初のステップです。もちろん、次に変数がイニシャライザなしで宣言され、次に別の場所に代入されるケースを処理する必要があります。これらの式を取得するには、宣言ではなくシンボルの使用法を見て、ツリーを歩いてください。

+0

ありがとうございました。 –

関連する問題