アプリケーションがリモートシステムに照会する必要がある場合、「リモート」パッケージを作成します。情報を取得します。これらのクラスは、リモートパッケージから漏れてはなりません。リモートパッケージ外のremote.entitiesの不正なインポートを確認する
x.y.remote.entitiesをx.y.remoteパッケージの外部にインポートするためのチェックルールがありますか?
アプリケーションがリモートシステムに照会する必要がある場合、「リモート」パッケージを作成します。情報を取得します。これらのクラスは、リモートパッケージから漏れてはなりません。リモートパッケージ外のremote.entitiesの不正なインポートを確認する
x.y.remote.entitiesをx.y.remoteパッケージの外部にインポートするためのチェックルールがありますか?
質問タグからは、Checkstyleベースのソリューションも役立つことがわかります。 ImportControlのチェックは必要なだけのものでなければなりません。 Checkstyleには、それが必要な場合はSonarQube pluginがあります。
もちろん、ImportControlルールは禁止されたクラスの使用をチェックするのに役立ちます。しかし、このルールは、x.y.remoteパッケージ内で使用されるx.y.remote.entitiesに対しても違反を投げます。 x.y.remoteパッケージの外側でのみ使用するかどうかを調べるためにこのルールをどのように設定するかについてのアイデア。 – Coc
S3688がSonarJava 4.4で追加され、特定のクラスの使用を完全に禁止しました。その面では、あなたがを実行すると動作しませんは、いくつかのパッケージでこれらのクラスの使用を許可したいと考えています。 Issue Exclusionsがでてくるところです。
あなたはその後、x.y.remote
で何に上げ、そのルールから問題を無視する除外を設定する(普遍的)x.y.remote.entities
の使用を禁止するルールを設定します。
このルールはさらに調査するのが面白そうです。しかし、どのバージョンのJavaからこのルールを利用できるのか。私たちはJava 3.9を使用していますが、私はこのルールを見つけることができません。 – Coc
私の編集@Cocを参照してください。あなたは本当にアップグレードを検討する必要があります。 3.9歳は1歳以上です。それ以来多くの改善がなされています。現在のバージョンは4.8です。 –
PMDの主な強みの1つは、単純なXPath式を記述することで、このプロジェクトと同様に特定のプロジェクト/チームに固有のカスタムルールを簡単に作成できることです。あなたはおそらく、このルールに反復することができusing the designer
<rule name="Remote entities used outside remote package"
message="The remote entities should not be imported outside the remote package"
class="net.sourceforge.pmd.lang.rule.XPathRule"
language="java">
<description>
Remote entities should not be imported outside the remote package
</description>
<priority>3</priority>
<properties>
<property name="xpath">
<value>
//ImportDeclaration/Name[contains(@Image, '.entities') and //PackageDeclaration/Name[not(contains(@Image, '.remote'))]]
</value>
</property>
</properties>
</rule>
お知らせそれはすべてのエンティティは、任意のリモートパッケージからインポートされることを可能立ってルールを、しかし:ルールセットのXMLファイルで
は、単に次のようにカスタムルールを追加します必要に応じてそれを絞り込んでください。シナリオを実装するためのルールを書くのが簡単ではないと思います。私はそれを試して、必要に応じて説明のためにあなたに戻ってきます。答えにもう一度感謝します。 – Coc
Sonarqubeの以前のバージョンの依存行列の表示はこれで良い助けになりましたが、残念ながらこの機能は最近のバージョンでは削除されました – Coc