2016-01-12 18 views
6

Javaプロジェクトがコード内で完全修飾名を使用している場合、checkstyleでチェックすることは可能ですか?Javaコードで完全修飾名を使用しないようにする方法

if (org.apache.commons.lang3.StringUtils.isBlank(name)) { 
.... 
.... 
} 

のようなコードを防止し、その代わりにパッケージをインポートするようにしたいとします。

私たちがそれを達成するのに役立つ他のツールがありますか?

+4

クラス名の競合がある場合は、ツールから何を期待しますか? – varevarao

+0

インポート制御ルールでチェックすることができます。どんな違反でもビルドを許可しないように、Maven Checkstyleプラグインを設定します...? – Codexer

+1

興味深い質問。しかし、これを有効にしたいと思いますか?私は従来のコードを扱っているときに完全修飾名を使用する必要があり、誰かが* custom * 'StringUtils'クラスを使用していました。そのクラスの不十分さを考えると、そのクラスでApache Commons 'StringUtils'を使用することになりますが、インポートはカスタム' StringUtils'ですでに使用されています。 – entpnerd

答えて

2

私が知る限り、Checkstyleはこれを行うことはできません。しかし、一見価値があるかもしれないUnnecessaryFullyQualifiedNameと呼ばれるPMDルールがあります。 PMD用IntelliJプラグインが存在します。たとえば、QAPlug PMDなどがあり、ダウンロードは無料です。

しかし、多くの偽陽性が見られるように準備してください。たとえば、同じ単純名を共有する2つのクラスは、完全修飾クラス名なしでは参照できません(例:foo.Aおよびbar.A)。 PMDが実際にこのケースをチェックしているかもしれませんが、試してみる価値があります。

+0

PMDチェックでは、インポートされたクラスのフォームが既に存在する場合のみ警告が表示されます(コード内のインポートと完全修飾名を比較していると思います)。誤認はあまりありませんが、完全修飾クラスがisnまだ輸入品には載っていない。 [az] + [。] [az] + [。] [AZ]のような大文字と小文字を区別する正規表現検索では、インポートされていないものを捕まえるのに役立ちますが、間違いなく間違いがあります:) – HairyFotr

関連する問題