2012-11-14 14 views
5

Codenarcは、Groovyコードの欠陥、悪い習慣、不一致、スタイルの問題などを分析するフレームワークです。 MisorderedStaticImports Rule: 非静的インポートした後であってはなりません静的なインポート文のための非静的インポートの後であってはならない静的インポートステートメント

チェックし

この規則の理由があります。違反の

例:

import my.something.* 
import static foo.bar.* 

public class MyClass{} 

私は動機やこのルールの意味を理解していません。

+5

大会のみです。 Javaに関する限り、それは無関係です。 –

+2

IntelliJのフォーマッタは、標準インポート後に静的インポートをデフォルトで配置します。 –

+1

@PeterLawreyそうですね、理想があり、理にかなっています![例]を見てください(http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-depending-on-import-sequence-order) –

答えて

8

Marko Topolnikによれば、輸入の順序はプログラムの意味とは関係ありません。

私はその効果を明示的に述べるためにJLSを見てみましたが、見つけられませんでした。また、Javaチュートリアルでは、インポート順序については言及していません。しかし、importのセマンティクスは、違いはありません。輸入が輸入注文のために潜在的なあいまいさをもたらす場合、JLSはそれが編集エラーであると言います。

したがって、これは単なる文法的なものです。 (ルールを見れば確かに、それもあなたの最初の静的な輸入品を置くのオプションを提供します!)


UPDATE

@Eugene Stepanenkovが

このQ &を指摘しますOバージョンのあいまいバグがあった

f Java 8より前のOracle Javaコンパイラ。(最終的に)承認され、修正されました。

バグは、がCodenarc警告の動機の一部となっている可能性があります。しかし、ここには、バグの影響を受けるJavaコンパイラを使用していた場合、「間違った」順序でインポートしたコードがまったくコンパイルされず、Codenarcの警告が表示されます。

+0

[質問] (http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-depending-on-import-sequence-order) –

+0

良いキャッチ。私は以前にそのようなものを見つけたことはありません。 –

0

スタイルの問題。 2つの静的なインポートがありますが、関数名の導入のような理解容易性に大きな影響を与えます。したがって、それらを上部に置くと(読むために)良いスタイルと見なされるかもしれません。 IDEが崩壊する "[+]"サポートも考慮されている可能性があります。

静的インポートを他の静的インポートと区別したいと思っています。

0

インポートの順序(静的および非静的)を選択すると、exampleのようなエッジの場合に問題が発生する可能性があります。

関連する問題