打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Visual Assist 特性和技巧

Visual Assist 多年来始终是 Visual Studio 开发环境下的一款难以逾越的经典辅助插件。难得的是,这些年来它的重心一直围绕着 C 程序的编写辅助和增强。近年来,逐渐开放的微软加快了 Visual Studio 的演进速度,持续地吸收了不少 VA 的特性,但多年的积累使得 VA 的对应实现仍有着很强的竞争力。就拿代码重构里最基本的“重命名”来说,VA Rename 就比 VS Rename 步骤更少,速度更快,也更为方便和顺手一些。

在上个月偶然间了解到新加的静态分析功能之后,我这两天下载了最新版本的 VA,发现比自己用了好一阵的老版本多了不少新东西,就想试着集中梳理一下。这篇文章里,那些经典功能如符号查找 (Find Symbols / Find References),函数列表 (List Methods in File),代码片段 (VA Snippets) 我就不再多说了,只是对相对较新的特性和技巧做了整理。

特性和功能

Code Inspection 静态分析和快速修正

VA 开始支持基于 LLVM/Clang 的代码静态分析了。与 VS 原生的 Code Analysis 不同的是,VA 支持直接一键修复提示的问题。

可以在汇总窗口里查看所有静态分析时找到的问题。

并选中关心的项目,右键 “Apply Quick Fixes” 修复。

对那些不关心的项目,也可以在选项里关掉单条提示类型,或是调整它们所在的 Level (就像 Warning Level 那样)。

Debugging - VA Step Filter

可以显式指定调试的时候自动跳过的函数 (比如标准库的函数 std::sort()),比 VS 自带的 autoexp.dat 好用很多

  • 可随时把当前函数添加到过滤列表,并即时生效

  • 可随时开启关闭任意一个指定的函数 (就像开启关闭一个或多个断点)

Debugging - Address Resolver

当 callstack 仅包含地址信息时,可以用这个工具来还原堆栈。

关于定位 pdb,基址设置等方面更多的技巧在这里

Debugging - Pdb Explorer

这个工具可以查看,搜索和定位 pdb 内的符号。

在调试的时候,可以直接把特定的符号拖到 Disassembly 窗口,非常方便。

此工具更多的信息在这里

Debugging - Memory View

用来调试 Dump 的内存查看窗口,可以显示特定的地址处的情形,通常配合 Disassembly 窗口和 Memory 窗口使用。

此工具更多的信息在这里

快捷键设定窗口

这个全新设计的面板列出了 VA 的所有快捷键及作用域,并可以跳转到 VS 的设置面板上去修改。

但是我实际上很少更改默认的快捷键设置,因为工作需要,会需要在不熟悉的机器上的 VS 内工作,如果自己的快捷键是定制的,就常常会遇到肌肉记忆不断失败的情况。总是用默认的快捷键位就可以避免这一点。

技巧

开启 Ctrl 鼠标滚轮对 Smart Select 的支持

在新版的 VA 的选项 Options | Mouse 中找到下面两项并按照下图中的方式选择

我们知道 Ctrl 鼠标滚轮本来是用来即时调整字体大小的,但实际上很少会如此频繁地去放大和缩小代码的字体,有时候还容易造成误操作。换成 Smart Select 之后就可以非常快捷地选择光标所在的代码块了,比如说你的光标在下面的代码段里注释所在的地方:

那么按下 Ctrl 后,随着滚动鼠标滚轮,你会选中 if 的所有代码,继续滚动的话,接下来是 for 的所有代码,然后逐级向上,DoSomething,Bar,Foo,最后是整个文件。(选中顺序与图中左侧折叠代码块的 Outlining Bar 保持一致)而反向滚动则会逐级退回。熟练以后你会发现这个功能非常好使,会很少再需要手动去掐头去尾,选中一段代码了。

VA Hashtags 增强注释——可跳转可聚合的代码内书签

比书签 Bookmark 更好的是,hashtags 是代码的一部分,所有人共享并签入版本库,可跳转,相同的 tag 自动聚合到一起。

可以快速标出某个常用代码的位置 (如 main() 函数的位置):

可以交叉引用并跳转:

可以在窗口内管理,搜索,分组和隐藏:

这个功能特别灵活,它本质上是对一堆信息做最小组织 (minimal-structuring) 的过程,特点是即使数据量再大也始终能保持最小的维护负担

其实我们日常信息处理时,有很多分组/分目录都不合适的情况——比如发过的所有的朋友圈,只需要在单条记录内任意位置打上 #旅行 / #摘抄 / #笔记 等等… 假如朋友圈支持按照 hashtags 聚合,就可以一键找到所有的相关项。

我的日常日志也依赖这类标记,比如 #电影 #2016 就可以一下找到我 2016 年看的所有电影。

总的来说我现在非常偏爱这一类平坦组织结构,无需额外的抽象 (abstract) 和层次 (hierarchy),不用成天纠结分组/分类等问题,比树状的类文件夹系统实用和轻便很多。

Flat is better than nested.

VA Outline 大纲视图的快捷操作

这个视图浓缩了当前文件的大纲,便于随时跳转和审视整体结构。

可以直接在这个视图上拖拽来挪动代码块。

也可以直接在这个视图上选中一个或多个 block,右键执行各类重构命令,或者整体注释。

这个窗口本质上是把单个的代码块原子化了,简化了操作步骤,也避免了很多误操作。

更多的小技巧

  • Goto Related 跳转到相关的各类符号 (声明/类型/使用地点) 是 Goto Implementation 的增强版

  • Clone Find References Results 可以将查找结果复制到独立窗口,这一过程可重复产生多个窗口,不像 Find in Files 只允许两个结果窗口

  • 一些用起来很顺手的文件操作相关的重构

    • Rename Files... 一键重命名同名的 .h/.cpp

    • Move Selection to New File... 一键把选中的代码挪入新文件

    • Move Implementation to Source File / Header File 太常用不解释了

  • 大项目会产生若干 GB 级别的缓存文件,可以使用 Options | Clear 来清理这些磁盘空间

  • 有时在代码库里做了较大的更新之后,会出现新版本的代码下缓存失效没有及时更新,导致一些功能不起作用的情况。这时使用 Options | Rebuild 可以重建符号数据库(注意,上面的 Clear 不会影响符号数据库

能看到这里说明你一定是真·VA粉了,如果你有什么独门技巧,欢迎在留言里与大家分享~ [抱拳]

(完)



本文转自:开发者头条

微信号:IdeaofSE


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
实时可视化Debug:VS Code 开源新工具,一键解析代码结构
10 个你可能还不知道 VS Code 使用技巧
Visual C .NET编程讲座之三(6)
Win10开发入门:UWP通用应用程序项目结构分析
带你玩转Visual Studio——VS2015的新功能和特性
Visual Studio 2005中的快捷键与小技巧整理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服