0
public void visitToken(DetailAST aAST) {}

カスタム checkstyle ルールを作成しようとしています。TokenTypes.STRING_LITERAL に興味があります。このアプローチの問題は、文字列が連結された文字列、StringBuffer、StringBuilder であるか、メソッド内にある可能性があることです。

私は Checkstyle コーディングの初心者なので、ご容赦ください。

  1. 連結されている場合、完全な文字列を取得するにはどうすればよいですか。aAST は、それらを個々の文字列リテラルとして吐き出しているようです。

  2. 完全な文字列を取得する別の方法はありますか?

任意のポインタ、大歓迎です。

4

1 に答える 1

0

Checkstyle は純粋に AST で動作するため、Checkstyle でこれを行うのは困難です。コンパイラではないため、実行時の型や構文上の意味についてはわかりません。

したがって、Checkstyle を使用してこれを行うには、AST を手動で分析し、連結された文字列を手動で作成する必要があります。String の一部が、たとえば静的メソッドによって、または StringBuilder/StringBuffer を使用して生成される場合、AST 分析によって完全な String を見つけるタスクは事実上不可能になると言えます。

代わりに、自分のタスクにより適した他の静的コード分析ツールを検討することをお勧めします。たとえば、FindBugsはコンパイルされたコードで機能し、通常は非常に高度なチェックを実行できます。ただし、実行には Checkstyle よりも多くのリソースが必要であり、古いマシンでは、IDE での保存時に FindBugs を自動的に実行できない場合があります。

于 2013-01-30T22:29:56.573 に答える