Visual Studio 高级调试-企业版三大特性

  • Post author:
  • Post category:其他


前言

前面两篇博客主要介绍了

Visual Studio 高级调试-代码调试



Visual Studio 高级调试-Dump分析

这几篇博客的目的都是为了帮助大家更好的认识和使用Visual Studio,Visual Studio企业版订阅价格为每月250美元,很多同学想知道企业版有哪些特别的功能,这次我们一起简单认识下Visual Studio企业版特有的三大技术:代码图,IntelliTrace,以及特有测试工具。

  1. 体系架构-代码图

开启该功能需要在Visual studio Enterprise Installer 组件库中勾选安装:

代码图,(可选)实时依赖项验证

Visual Studio Enterprise提供了代码可视化和建模工具,可以帮助项目负责人更直观的了解代码结构、类、项目之间的映射关系,更方便的评估当前代码是否符合设计或者存在潜在的风险。




解决方案代码图



这里我们以.NET经典的微服务项目

dotnet-architecture/eShopOnContainers

为例。

使用Visual Studio为该解决方案一键生成代码架构图,我们可以对代码图进行展开,编辑,更改布局方式等。

我们还可以使用代码图分析功能,查找项目中的循环引用,中心,以及未被引用的元素。下面是一张开启了分析功能的代码图:

使用代码图读懂DDD项目

假如你希望了解一个DDD项目,最好的方式就是去查看它的Domian定义,我们可以新建一个空白的代码图,然后将eshop项目中的Ordering.Domian拖到上面,查看领域层的设计。

  • 我们可以看到eshop有两个聚合根:Order和Buyer;鼠标分别点击代码图上Order和Buyer两个类。

  • Order生命周期中会有Started,Cancelled,Shipped三种事件发出;

  • Order状态会有StcokConfirmed, AwaitingValidation, OrderPaid等事件

  • Buyer会有PaymentValidation领域事件发出。

我们可以很直观的通过代码图了解项目的主要业务逻辑,如果想了解的更细致,还可以继续选择展开代码图元素。

★ 通常DDD项目中领域实体只能通过聚合根来访问,通过代码图我们也可以看到IRepository只能访问Order和Buyer两个聚合,这一功能在Review代码时非常有价值。


体系架构验证

可以使用架构关系图对代码执行架构验证,在最新版本中,Visual Studio 采用 Roslyn 分析器提供的强大分析功能,可以实时进行依赖项验证。

比如下面,我创建了一个依赖项验证设计图,然后在Ordering.SignalrHub项目中引用Ordering.Domain中的类时,因为依赖验证图中没有Ordering.SignalrHub对Ordering.Domain的直接引用,所以编译器将会提示错误:

错误DV0001“属性”“Order”不应直接或间接引用“Order”,因为层“Ordering.SignalrHub.dll”在层“Ordering.Domain.dll”上没有依赖项

★ 项目负责人可以通过设置依赖验证图,以此来保证开发人员编写代码时是完全符合设计原则的,以此提高项目质量。

  1. ★IntelliTrace★

我们可以在Visual Studio中使用IntelliTrace记录和跟踪代码的执行历史记录,可缩短调试应用程序所用的时间。 还可以在部署后使用IntelliTrace收集器,来做问题诊断。

事件快照

IntelliTrace会为调试期间的事件生成快照,Visual Studio支持以下事件快照。

例如文件事件,当程序读写或者删除文件等操作时,IntelliTrace会记录下来;还有

ADO.NET

事件,当你的程序执行数据库操作时,IntelliTrace会自动记录下执行时的环境信息,以及SQL语句等。

另外它还会自动保存断点命中、异常、Http请求等事件发生时的快照。

历史调试

当你怀疑代码某个地方有Bug,通常会在它附近设置断点,然后调试,如果不起作用,则需要在代码的其他位置尝试设置一个断点,然后重新运行调试器,反复执行测试步骤,直到找到问题。

使用 IntelliTrace 和历史调试,无需再频繁的设置断点、重新启动调试、重复测试步骤。因为你可以回到任意事件发生时的位置,查看当时的信息。

比如下图接口代码随机生成一个0-10的数字,当随机值小于5时会抛出异常。

★ 点击

激活历史调试

,Visual Studio会恢复到异常发生时的状态,我们可以查看此时的线程堆栈信息。

  1. 测试工具

Live Unit Testing

单元测试是非常重要的,当我们在对代码进行修改或者新增功能时,首先可以通过单元测试来验证逻辑的正确性。

Visual Stduio Enterprise除了常规的测试工具之外还提供了Live Unit Testing,它可以实时运行单元测试,并在编辑窗口的右侧给予提示,我们可以非常直观的看到当前修改是否通过单元测试校验,或者当前代码行是否被单元测试所覆盖。


代码覆盖率

我们还可以在Visual Stduio中查看代码覆盖率,它将显示在各个程序集、类和过程中运行的代码的百分比。 源编辑器突出显示测试的代码。

代码覆盖率将以块为单位计数。 块是恰好有一个入口点和出口点的一段代码。 在测试运行期间,如果程序的控制流通过某个块,则将该块计为“已覆盖”。 块的使用次数对结果没有影响。

开发团队通常以大约 80% 的代码覆盖率为目标。 在某些情况下,较低的覆盖率是可接受的。 例如,当某代码是从标准模板生成时,可接受较低的覆盖率。

总结

好了,Visual Stduio的介绍就到这里,企业版还有一些其他的特性,因为我不常用就不多做介绍了。

另外,因为Visual Stduio用户体验优化的非常好,所以上面介绍的这些功能看起来都很简单,假如能够熟练应用这些功能,大家在开发过程中会如虎添翼。



版权声明:本文为qq_40404477原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。