13

プロジェクトにパッケージ間の不要な依存関係が含まれていないことを確認したい。たとえば、プロジェクトが階層構造になっていることを確認したいと考えています。つまり、モデルはすべての下にあり、ビジネス ロジックはモデルに依存し、ビューはビジネス ロジックとモデルに依存します。各レイヤーは、独自のパッケージに配置されます。

これらの制約を指定し、継続的インテグレーションの一部としてそれらをチェックできる、できればオープンソースのツールをお勧めできますか?

PS私はプロジェクトを別々のmavenモジュールに分けることができることを知っています。残念ながら、私の現実のケースは 3 層システムよりも複雑です。Maven モジュールを使用すると、非常に小さなモジュールが数十個になります。

4

6 に答える 6

6

レイヤーの依存関係違反でビルドの失敗を強制できるかどうかはわかりませんが、少なくともこれらのレイヤーをチェックして視覚化できるツールがあります:Sonar。Mavenやjenkinsのビルド、およびEclipse(およびおそらく他のIDE)と統合できます。

Sonarは、パッケージの相互依存関係を視覚化した依存関係マトリックスビューを備えています。

編集:違反によってトリガーされてビルドを強制的に失敗させるようにソナーを構成することは可能のようです:ビルドブレーカープラグイン

于 2012-11-19T18:20:07.943 に答える
4

多くのプロジェクトが Maven モジュールを介して依存関係を強制するため、これは非常に有効な質問です。これは、生産性と柔軟性を大幅に無駄にします。

このテーマについて多くの時間をかけて調査した結果、次の 2 つのツールをお勧めできます。

どちらのツールもここ数年あまり進化していませんが、うまく機能しています。Macker には XML ベースの構文がありますが、Classycle にはきちんとした DSL があります。Classycle は、より高度な専用ツールであり、レイヤーの概念があります。これらのツールを使用すると、パッケージと特定のクラス タイプの間に厳密なバリアを適用できます。このツールは、制約が発生するとすぐに失敗するようにビルド プロセスで構成する必要があります。

ここ ( http://innig.net/macker/example/layering/src/macker.xml ) とここ ( http://classycle.sourceforge.net/ddf.html#layer )のレイヤー化の例を確認してください。

ビルド ツールではなく IDE を使用しているときに、コンパイラにフックしてエラーを発生させる、優れたオープン ソース ツールのニッチがまだあります。Structure101ははるかに機能が豊富ですが、重く、Eclipse プラグインに依存しています。

アップデート

これらはJQAssistantでもあり、非常に強力ですが、学習とセットアップにかなりの時間がかかる場合があります。

于 2013-02-11T14:09:48.610 に答える
3

JDependはコードベースを分析し、探しているメトリックを提供します。あなたが探している3つの主要な測定基準は、求心性カップリング遠心性カップリング、およびパッケージ依存性サイクルです。

Architexaは、ここで役立つ可能性のあるもう1つのツールです。

于 2012-11-19T18:19:51.953 に答える
1

Checkstyleを使用して、「カスタマイズされたチェック」を実装できます。詳細については、こちらをご覧ください: http ://saturnnetwork.wordpress.com/2012/11/26/ultimate-architecture-enforcement-prevent-code-violations-at-code-commit-time/

自分で試したわけではありませんが、実装は難しくなく、無料だと思います。

于 2012-11-27T07:32:08.527 に答える
1

一般に、階層化されたアーキテクチャと依存関係の制限を適用するのに役立つツールがいくつかあります。これらのツールは言語固有です。Java を使用している場合は、checkstyle を使用してカスタム チェックを作成することをお勧めします。

Anton が参照したテキスト ( Ultimate Architecture Enforcement ) を作成しました。これは、私たち自身の成功体験に基づいています。カスタム チェックは、IDE (Eclipse など) に統合したり、継続的統合ツール (Jenkins など) に統合したりできます。また、違反を防止する最後の手段として、Subversion でのコミット前検証として自動的に実行することもできます。カスタム チェック自体は、checkstyle API を使用して Java で記述されています。

于 2013-03-22T14:32:55.380 に答える
0

Structure101を使用すると、物理コードにマップして適合性をチェックするアーキテクチャ図のセルとしてレイヤーを視覚的に定義できます。これらの図は開発者のIDEに表示され、階層化ルールに違反した場合に編集時間の警告を生成します。CI中にビルドを中断/報告することも可能です。SonarJLattixは、視覚的な依存関係を制御するための他のツールです。

于 2012-11-20T13:30:32.093 に答える