Codenarc は、Groovy コードの欠陥、悪い慣行、矛盾、スタイルの問題などを分析するフレームワークです。
このルールには理由がありますか: MisorderedStaticImports ルール:
非静的インポートの後にあるべきではない静的インポート ステートメントをチェックします。
違反の例:
import my.something.* import static foo.bar.* public class MyClass{}
このルールの動機や意味がわかりません。
Marko Topolnik が言うように、インポートの順序はプログラムの意味には関係ありません。
その趣旨の明示的な声明について JLS を調べてみましたが、見つかりませんでした。また、Java チュートリアルでは、インポートの順序についても言及されていません。ただし、のセマンティクスはimport
違いがないようなものです。インポートの順序が原因でインポートの結果があいまいになる可能性がある場合、JLS はそれがコンパイル エラーであると言います。
したがって、これは文体上の規則にすぎません。(実際、ルールを見ると、静的インポートを最初に置くオプションさえあります!)
アップデート
@Eugene Stepanenkov はこの Q&A を指摘しています
これは、Java 8 より前のバージョンの Oracle Java コンパイラのあいまいなバグが原因でした。(最終的に) バグとして認識され、修正されました。
つまり、このバグがCodenarc の警告の動機の一部だった可能性があるということです。ただし、バグの影響を受ける Java コンパイラを使用している場合、「間違った」順序でインポートされたコードはまったくコンパイルされず、Codenarc の警告が無意味になります。
インポートの順序 (静的および非静的) を選択すると、例のようなエッジ ケースで問題が発生する可能性があります。
スタイルの問題。静的インポートは 1 つまたは 2 つだけですが、関数名の導入などの理解に大きな影響を与えます。したがって、それらを(読み取り用に)上部に配置することは、良いスタイルと見なされる場合があります。IDE 折りたたみ "[+]" サポートも考慮されている可能性があります。
彼らは静的インポートを他のものから分離したかったと思います。