Visual Studio 2010中UML浏览器详解

原创
开发 后端
本文将为大家讨论的是Visual Studio 2010中的UML浏览器,这一功能能让架构师的UML更加清晰明了。

【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
 

责任编辑:彭凡 来源: 51CTO
相关推荐

2009-07-01 16:52:47

增加浏览器Visual Stud

2011-01-24 07:24:48

Visual Stud

2010-04-15 08:40:00

UML建模Visual Stud

2010-04-09 12:59:45

Visual Stud

2009-11-24 09:00:02

Visual Stud

2010-03-19 16:43:37

Visual Stud

2009-11-18 09:14:49

Visual Stud

2010-01-14 14:12:14

Visual Stud

2010-02-23 09:02:00

Visual Stud

2010-12-16 10:00:20

QtVisual Stud

2012-09-05 15:20:51

Visual Stud

2012-09-24 13:23:30

Visual Stud

2010-01-12 09:11:18

Visual StudVisual Stud

2010-07-29 09:41:23

Visual Stud

2010-07-27 09:40:01

敏捷Visual Stud

2010-03-11 14:37:47

Visual StudScrum

2010-02-05 09:06:17

Visual Stud

2010-04-01 15:10:06

Visual Stud

2009-12-02 09:43:38

Visual Stud

2009-12-15 09:36:32

Visual Stud
点赞
收藏

51CTO技术栈公众号