Visual Studio 2010中UML浏览器详解
创始人
2024-06-21 15:01:10
0

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

UML图

图 1 类依赖图

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

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

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

Visual Studio 2010中的UML

图 2 分析器

制作你自己的分析器

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

使用字符

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

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

PrivateAssemblies/Providers文件夹下的分析器

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

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

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

图 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
 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...