Visual Studio 2010中UML瀏覽器詳解
原創(chuàng)【51CTO經(jīng)典譯文】Visual Studio 2010新的可視化技術(shù)DGML已經(jīng)可以提供直觀的圖表,類似于兩個類之間的依賴圖,繼承圖和自定義圖表,你都可以直觀地展示你想要的任何關(guān)系。51CTO編輯向您推薦《Visual Studio 2010應(yīng)用與開發(fā)詳解》專題。
圖 1 類依賴圖
現(xiàn)在你可以分析這些圖表,在下面的圖中你可以看到分析器。
循環(huán)引用 — 中心 — 未引用的。
紫色的類是未引用的,可能是死代碼,也可能是應(yīng)用程序的入口,藍(lán)色的節(jié)點是中心,這些是最重要的,經(jīng)常被使用的類,在這里沒有強連接類。
圖 2 分析器
制作你自己的分析器
你也可以制作你自己的分析器,如代碼覆蓋或命名約定,或其它你可以想到的,在下面的示例中,我創(chuàng)建了一個分析器,它使用字符串“Clemens”標(biāo)記了綠色節(jié)點。
圖 3 使用字符串“Clemens”標(biāo)記的綠色節(jié)點
Ok,這個分析器可能沒多大意思,更有趣的是創(chuàng)建…在/PrivateAssemblies/Providers文件夾下,已經(jīng)有多個創(chuàng)建好的分析器,上面提到的就是其中一個。
圖 4 /PrivateAssemblies/Providers文件夾下的分析器
所有分析器都使用的是IProvider接口和ProviderAttribute,如下圖所示,經(jīng)過一些探索后,你會發(fā)現(xiàn)prgroesion.common程序集有一個ProviderDiscovery方法,它查找provider目錄下的類。
圖 5所有分析器都使用的是IProvider接口和ProviderAttribute
因此,使用下面的代碼制作一個程序集是一個良好的開端:
- [Provider(Name = "ClemensAnalyzer")]
- public class TestAnalyzer : IProvider
在void Initialize(IServiceProvider serviceProvider);中,你必須初始化你的provider,注冊行為和行為處理程序(action.ActionHandlers.Add(new ActionHandler(this.OnAnalyzeTests));)…它調(diào)用你的分析…
- foreach (Node node in this._graph.VisibleNodes)
- {
- if (node.Label.Contains("Clemens"))
- {
- node[HasClemens] = true;
- outputObjects.Add(node);
- this.ThrowIfCancelled();
- }
- }
- node[HasClemens] = true;
#T#
是你增加到你圖表的一些額外的元數(shù)據(jù):private static GraphProperty HasClemens = GraphProperty.Register("HasClemens", typeof(bool), new GraphMetadata("Clemens","This one contains Clemens",null,GraphMetadataFlags.Default), typeof(TestAnalyzer));
所有這一切及其結(jié)果都會反應(yīng)到你的分析器中。
圖 6 顯示分析結(jié)果
現(xiàn)在讓我們開始做一個有用的人:-)
原文出處:http://www.clemensreijnen.nl/post/2010/01/18/VS2010-Architecture-Explorer-Analyzers.aspx
原文名:VS2010 Architecture Explorer Analyzers
作者:ClemensReijnen