在 Visual Studio 中使用代码映射可视化和了解代码

官方地址:http://msdn.microsoft.com/zh-cn/library/jj739835.aspx


您可以将代码中的关系映射到 Visual Studio 旗舰版。 在您创建编码映射后,它们会显示在代码编辑器旁边。 这使你可以将精力集中在你的任务上,因为你可以在工作时查看你在代码中的位置。

代码映射 - 代码中的映射关系

代码图表明代码关系,其显示在代码编辑器的旁边。 绿色箭头显示代码中的光标位置。 您可以在映射中进行注释,就像在纸上记录一样。

代码图有助于防止您在大型代码库、不熟悉的代码或旧代码中感到迷惑。 例如,调试时可能必须查看跨许多文件和项目的代码。 代码图可帮助您在代码中导航,并查看代码间的关系。 您不必记住所有这些代码,跟踪文件或单独绘制纸质关系图。 如果必须中断您的工作,代码映射可帮助刷新您正在使用的代码有关的内存。

监视运行中的代码映射:使用 Code Map 理解复杂代码 (Channel 9)

要求

  • 此类版本之一:

  • 使用 Visual C# .NET 或 Visual Basic .NET 代码的解决方法

假定你正在处理的绘图程序中有 bug。 要重现 Bug,请打开 Visual Studio 旗舰版中的解决方案并按 F5 开始调试。

当您绘制了一条线并选择“撤消上次笔划操作”时,在您绘制下一条线前却什么也没有发生。

代码映射 - 重现 Bug

因此您开始通过搜索 Undo 方法进行调查。 您会在 PaintCanvas 类中发现它。

代码映射 - 查找代码

现在您开始映射 undo 方法及其关系。 从代码编辑器,可以添加 undo 方法及其引用到新代码映射的字段。 当您创建新映射时,可能需要一些时间来为代码编制索引。 这有助于加快后续操作的运行速度。

代码映射 - 显示方法和相关的字段
提示 提示

绿色突出显示代表添加到映射的最后一项。 绿色箭头显示代码中的光标位置。 项目之间的箭头表示不同的关系。 您可以通过检查相应的工具提示来详细了解映射上的项。

代码映射 - 显示工具提示

要查看每个字段的代码定义,请双击映射上的字段,或选择字段并按 F12。 绿色箭头在映射的各项间移动。 你的光标在代码编辑器中也会自动移动。

代码映射 - 检查字段定义

代码映射 - 检查字段定义
提示 提示

您还可以在代码编辑器中移动光标以在图上移动绿色箭头。

现在您想了解其他何种代码与 history 和 paintObjects 字段交互。 您可以将引用这些字段的所有方法添加到映射。 您可以通过映射或代码执行此操作。

代码映射 - 查找所有引用

更改布局以重新排列关系流并使映射更容易读取。 您还可以拖动项以在图中移动它们。

代码映射 - 更改布局
提示 提示

默认情况下,“增量布局”处于打开状态。 当你添加新的项时,这会尽可能少地重新排列映射。 要在你每次添加新项时重新排列整个映射,请关闭“增量布局”。

代码映射 - 更改布局

让我们检查这些方法。 在映射中,双击“PaintCanvas”方法,或选择此方法并按“F12”。 您将了解到此方法会以空列表的形式创建 history 和paintObjects

代码映射 - 检查方法定义

现在请重复相同的步骤检查 clear 方法定义。 您将了解到 clear 会通过 paintObjects 和 history 执行某些任务。 然后将调用 Repaint 方法。

代码映射 - 检查方法定义

现在请检查 addPaintObject 方法定义。 它还使用 history 和 paintObjects 执行某些任务。 它还调用 Repaint

代码映射 - 检查方法定义

似乎修改 history 和 paintObjects 的所有方法都调用 Repaint。 但即使 undo 修改了同一字段,undo 方法还是未调用 Repaint 因此您认为可以通过从 undo调用 Repaint 解决此问题。

代码映射 - 查找缺失的方法调用

如果您没有可显示此缺失调用的映射,要找到此问题或许更加困难,尤其是当具有复杂代码时。

在您或其他人修复此 Bug 之前,您可在映射上针对此问题和解决方法进行记录。

代码映射 - 注释并标记项以便进行追踪

例如,可以使用颜色将注释添加到映射和标记项。

代码映射 - 注释并标记的项

如果已安装 Microsoft Outlook,则可以将映射以电子邮件的形式发送给其他人。 您还可以将映射导出为图像或其他格式。

代码映射 - 共享、导出、发送邮件

要修复此 Bug,你需要将 Repaint 的调用添加到 undo

代码映射 - 添加缺失的方法调用

要确认你的修复,则重新启动你的调试会话并尝试重现 Bug。 现在,根据需要选择“撤消上次笔划操作”,并确定做出正确修复。

代码映射 - 确认代码修复

您可以更新映射以显示所做的修复。

代码映射 - 用缺失的方法调用更新映射

你的映射现在显示“撤消”和“重新绘制”之间的链接。

代码映射 - 用方法调用更新了映射
说明 说明

更新映射时,您可能会看到显示用于创建映射的代码索引已更新的消息。 这意味着有人更改了代码,使你的映射与当前代码不匹配。 这不会阻止你更新映射,但你可能需要重新创建映射以确认它与代码匹配。

现在您已完成调查。 你通过映射代码成功找到并解决了问题。 您还拥有可帮助您浏览代码的映射,请记住您所学的内容并借助您掌握的步骤解决问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值