Visual Studio 2010中UML浏览器详解

【经典译文】Visual Studio 2010新的可视化技术DGML已经可以提供直观的图表,类似于两个类之间的依赖图,继承图和自定义图表,你都可以直观地展示你想要的任何关系。编辑向您推荐《Visual Studio 2010应用与开发详解》专题。

图 1 类依赖图

现在你可以分析这些图表,在下面的图中你可以看到分析器。

循环引用 — 中心 — 未引用的。

紫色的类是未引用的,可能是死代码,也可能是应用程序的入口,蓝色的节点是中心,这些是最重要的,经常被使用的类,在这里没有强连接类。

图 2 分析器

制作你自己的分析器

你也可以制作你自己的分析器,如代码覆盖或命名约定,或其它你可以想到的,在下面的示例中,我创建了一个分析器,它使用字符串“Clemens”标记了绿色节点。

图 3 使用字符串“Clemens”标记的绿色节点

Ok,这个分析器可能没多大意思,更有趣的是创建…在/PrivateAssemblies/Providers文件夹下,已经有多个创建好的分析器,上面提到的就是其中一个。

图 4 /PrivateAssemblies/Providers文件夹下的分析器

所有分析器都使用的是IProvider接口和ProviderAttribute,如下图所示,经过一些探索后,你会发现prgroesion.common程序集有一个ProviderDiscovery方法,它查找provider目录下的类。

图 5所有分析器都使用的是IProvider接口和ProviderAttribute

因此,使用下面的代码制作一个程序集是一个良好的开端:

 
 
 
 
  1. [Provider(Name = "ClemensAnalyzer")]   
  2. public class TestAnalyzer : IProvider 

在void Initialize(IServiceProvider serviceProvider);中,你必须初始化你的provider,注册行为和行为处理程序(action.ActionHandlers.Add(new ActionHandler(this.OnAnalyzeTests));)…它调用你的分析…

 
 
 
 
  1. foreach (Node node in this._graph.VisibleNodes)   
  2.     {   
  3.        if (node.Label.Contains("Clemens"))   
  4.            {   
  5.                   node[HasClemens] = true;   
  6.                   outputObjects.Add(node);   
  7.                   this.ThrowIfCancelled();   
  8.            }   
  9.     }  
  10. node[HasClemens] = true; 

#T#

是你增加到你图表的一些额外的元数据:private static GraphProperty HasClemens = GraphProperty.Register("HasClemens", typeof(bool), new GraphMetadata("Clemens","This one contains Clemens",null,GraphMetadataFlags.Default), typeof(TestAnalyzer));
所有这一切及其结果都会反应到你的分析器中。

图 6 显示分析结果

现在让我们开始做一个有用的人:-)

原文出处:http://www.clemensreijnen.nl/post/2010/01/18/VS2010-Architecture-Explorer-Analyzers.aspx

原文名:VS2010 Architecture Explorer Analyzers

作者:ClemensReijnen

网页名称:Visual Studio 2010中UML浏览器详解
浏览路径:http://www.shufengxianlan.com/qtweb/news46/372996.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联