2012-01-25 5 views
3

NDependは、コード解析、特に依存グラフの視覚化のための優れたツールと思われるので、コピーを購入しました。 私は、ソリューション全体に名前空間依存グラフが必要です。私が得ることができるのはアセンブリグラフだけです。NDependのソリューション全体の名前空間依存グラフ

そして、私はそれを必要とする理由です:

我々はaccross層の境界は常にコンポーネントのインターフェイスを指す必要があります依存関係の建築のルールを持っています。インタフェースコンポーネントは、アセンブラ名とネームスペースの両方に接尾辞 "Interface"を持ちます。

層情報がアセンブリ名からは見えないが、名前空間から、名前空間依存性グラフはこの種の分析のためにのみ有用グラフであろうので、我々は

Company.Product.Layer.Component 

の形式で名前空間を有します。

私の質問は、上記のアーキテクチャルールがどのように検証できますか?あなたは実際に依存グラフを得る方法を知っていますか?あなたはルールを検証する別の可能性を知っていますか?

答えて

2

らほら... ...ちょうど次のメニューを使用して、VSのソリューションに

Reset Graph to application namespaces only

をアプリケーションの名前空間のグラフを取得するには! Code Rule over LINQ Query (CQLinq)機能へ

Graph of application namespaces assemblies

おかげで、以下CQLinqルールは、あなたが必要な正確なルールを得るためにそれを磨くための良いスタートすることができます

warnif count > 0 

// Namespaces with suffix Interface 
let interfacesNamespaces = 
    Application.Namespaces.WithNameLike("Interface$").ToHashSet() 

// Match namespaces that are using something else than interfacesNamespaces 
from n in Application.Namespaces 
let nonInterfacesNamespacesUsed = n.NamespacesUsed.Except(interfacesNamespaces) 
where nonInterfacesNamespacesUsed.Count() > 0 
select new { n, nonInterfacesNamespacesUsed } 
+0

は、私は知りませんでした、ありがとうございました「グラフへのエクスポート」機能それはトリックでした!あなたが言及している今後の機能は確かに歓迎される改善だろう。 – theDmi

関連する問題