Javaプロジェクトがコード内で完全修飾名を使用している場合、checkstyleでチェックすることは可能ですか?Javaコードで完全修飾名を使用しないようにする方法
if (org.apache.commons.lang3.StringUtils.isBlank(name)) {
....
....
}
のようなコードを防止し、その代わりにパッケージをインポートするようにしたいとします。
私たちがそれを達成するのに役立つ他のツールがありますか?
Javaプロジェクトがコード内で完全修飾名を使用している場合、checkstyleでチェックすることは可能ですか?Javaコードで完全修飾名を使用しないようにする方法
if (org.apache.commons.lang3.StringUtils.isBlank(name)) {
....
....
}
のようなコードを防止し、その代わりにパッケージをインポートするようにしたいとします。
私たちがそれを達成するのに役立つ他のツールがありますか?
私が知る限り、Checkstyleはこれを行うことはできません。しかし、一見価値があるかもしれないUnnecessaryFullyQualifiedNameと呼ばれるPMDルールがあります。 PMD用IntelliJプラグインが存在します。たとえば、QAPlug PMDなどがあり、ダウンロードは無料です。
しかし、多くの偽陽性が見られるように準備してください。たとえば、同じ単純名を共有する2つのクラスは、完全修飾クラス名なしでは参照できません(例:foo.A
およびbar.A
)。 PMDが実際にこのケースをチェックしているかもしれませんが、試してみる価値があります。
PMDチェックでは、インポートされたクラスのフォームが既に存在する場合のみ警告が表示されます(コード内のインポートと完全修飾名を比較していると思います)。誤認はあまりありませんが、完全修飾クラスがisnまだ輸入品には載っていない。 [az] + [。] [az] + [。] [AZ]のような大文字と小文字を区別する正規表現検索では、インポートされていないものを捕まえるのに役立ちますが、間違いなく間違いがあります:) – HairyFotr
FTR私はちょうどこれをCheckstyleにいくつか追加する可能性についてhttps://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/462を提出しました。 ;-)
I'd upvote mariadb Javaラッパーの作成者によって何か:) –
クラス名の競合がある場合は、ツールから何を期待しますか? – varevarao
インポート制御ルールでチェックすることができます。どんな違反でもビルドを許可しないように、Maven Checkstyleプラグインを設定します...? – Codexer
興味深い質問。しかし、これを有効にしたいと思いますか?私は従来のコードを扱っているときに完全修飾名を使用する必要があり、誰かが* custom * 'StringUtils'クラスを使用していました。そのクラスの不十分さを考えると、そのクラスでApache Commons 'StringUtils'を使用することになりますが、インポートはカスタム' StringUtils'ですでに使用されています。 – entpnerd