Visual Studio 2010中UML浏览器详解 - Go语言中文社区

Visual Studio 2010中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

是你增加到你图表的一些额外的元数据: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

【责任编辑:彭凡 TEL:(010)68476606】

点赞 0
版权声明:本文来源51CTO,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:http://developer.51cto.com/art/201001/180014.htm
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 08:28:47
  • 阅读 ( 1397 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢