现在的位置: 首页 > 综合 > 正文

调测工具VcTester攻略–使用快捷编辑功能

2013年10月06日 ⁄ 综合 ⁄ 共 4023字 ⁄ 字号 评论关闭

调测工具VcTester攻略之

使用快捷编辑功能

作者:网际游民,成稿于20101

 

关于本系列文章

本系列文章罗列如下:

《调测工具VcTester攻略之:搭建敏捷开发环境》

《调测工具VcTester攻略之:使用快捷编辑功能》

《调测工具VcTester攻略之:快速定位问题》

《调测工具VcTester攻略之:敏捷开发方式下调测组织过程》

《调测工具VcTester攻略之:脚本驱动API测试》

《调测工具VcTester攻略之:使用脚本桩构造数据驱动测试》

撰写本系列文章时得到ezTester技术专家Sundy多次帮助,在此谨表感谢!

 

跳转功能

本文介绍VcTester IDE环境的编辑功能,与绝大多数IDE开发环境类似,VcTester也提供诸如工程化管理、多文档编辑器、语法高亮显示、查找、替换等功能。本文着重介绍VcTester编辑器的特色功能,一般功能略去不讲。

VcTester的跳转做得比较有特色,非常符合开发人员的使用习惯,下面扼要举例常用的几项跳转功能,《VcSmith使用手册》基础篇中第4章有更详细介绍。

日常编码时,可将IDE界面置为上图状态,左侧显示当前C/C++文件中的符号定义,右上方显示当前函数的调用树,当前函数的调用者及被当前函数调用的子函数都直观显示出来。用鼠标双击左侧符号中相关函数节点,右侧就自动跳转到该函数的定义位置。

编辑源码过程中,将编辑光标移到某个函数名之上,再按“Alt + 上移键”,编辑光标随即跳转到指定函数的定义位置,若按“Alt + 左移键”就跳转回来,接光标挪到某个单词上,再按“Alt + 下移键”,系统即自动在全工程范围查找指定的单词,查找结果在Search列表中列出,如下图是快速查询“compare”函数都在工程中哪些地方调用了。

 

再次强调一下这3项快捷操作:Alt+上移键、Alt+右移键、Alt+下移键,如果使用VcTester集成环境不会这3个操作,证明你还远没理解VcTester的特色,为什么这样说,后面提到编辑器风格时我们再讲。

将编辑光标挪到某个函数的任意空白位置(前后不挨着字符即可),然后按“Alt + 上移键”,光标随即跳转到该函数首部,再按“Alt + 左移键”跳转回来。这个热键也比较常用,编程中,我们常查阅当前函数原型,或查阅在函数首部申明的变量名称或类型,快速看一下马上跳回来。将编辑光标挪到“)”或“]”或“}”之后,再按“Alt + 上移键”,编辑光标立即跳到其前与之匹配的“(”或“[”或“{”字符位置,同样,如果在“(”或“[”或“{”字符之后按“Alt + 上移键”则自动跳转到其后与之匹配的“)”或“]”或“}”字符位置。

 

几个不能不掌握的热键

编码是持久的、机械的、天天重复的工作,熟练的工程师编程时很少用鼠标,而尽可能多用热键,除了上面介绍的快捷键,在VcTesterIDE界面,如下几个热键也非常有用:

1.         选中CSE脚本执行,编写一段CSE调测脚本,用“Ctrl + A”热键自动选中当前定义体,按“Ctrl + E”执行选中的文本,如果连接两次“Ctrl + A”则选中当前全部文本。不多说了,这一项是VcTester最最最基本的操作,如果不会,意味着日常编程中你将丧失10%的工作效率。

2.         片断代码生成,比如键入“if”后按“Ctrl + J”热键生成如下代码:

if ()
{
}

键入“ife”后按“Ctrl + J”生成:

if ()
{
}
else
{
}

键入“ifei”后按“Ctrl + J”生成:

if ()
{
}
else if ()
{
}

上面举例3if/else的代码片断生成,你可以打开安装目录的CseWinC.dci文件了解更多的生成规则。当然你还可以添加自己的规则,我本人就添加了一条规则,生成“if (orOK != OpResult) { ... }”,因为这句判断程序中到处用,纳入“片断代码生成”后就省事多了。

3.         选中一段代码,按“Ctrl + I”热键将当前代码缩进一个TAB位置,如果按“Ctrl + U”热键,去缩进一个TAB位置。

4.         选中一段代码后,按“Ctrl + M”热键自动注释这段代码,若再按一次,取消注释。

5.         设置标签,将编辑光标挪到某一行,按“Ctrl + Shift + 1”设置1号标签(重复一次刚才操作取消标签),然后在本源文件其它任意位置按“Ctrl + 1”就跳转到刚才设定的标签位置,按“Alt + 左移键”跳回。VcTester支持从0910个标签热键,这意味着每个源文件你最多可设置10个快捷位置,够用了,多了也记不住哪个对应哪位置。根据本人使用经验,我建议给若干标签赋予特定含义,比如,按“Ctrl + 0”跳到当前工作位置,按“Ctrl + 9”跳到全局数据初始化位置,这样,工作起来更加清晰有序。

6.         前向跳转按“Alt + 右移键”,与之相对应的是后向跳转“Alt + 左移键”。

7.         按“Ctrl + .”热键可召唤全局的提示输入,此项在编写CSE脚本时比较有用,尤其在你记不确切某个CSEAPI时。编辑C/C++代码因为有步随提示,这个热键倒是用得不多。

以上选择重要的简单作介绍,其它的如查找、替换等,与多数编辑器相同,不多说了,更多热键请自行参考VcSmithVcTester手册。

 

随时知道你现在到哪儿了

针对C/C++项目,在实施敏捷开发前后工作方式会有不少变化,其中之一是你更关注编程步骤分解了,因为每一次迭代都要求你的工作产出是可验证的、易验证的,这样,测试才可能随时跟进。未实施敏捷之前,功能开发是一锅烩,哪管先做什么后做什么,一股脑把代码写完了再合起来跑。

此项变化引发一个需求,随时随地你都很清楚接下来要做什么?已完成的、刚完成的是什么?接下来做什么?即,前次迭代、当次迭代、下次迭代都是清晰的,在这一风格之下,你接触代码行应比以往更清楚的知道它所处的位置,知道前因后果,明了上下文关联关系。

借助VcTester集成环境,我们把相关功能再强化一下,在符号导航树弹出右键菜单,将如下图的“Show Macro”选项置上,让宏定义也显示在符号树中。

之后我们在源码中添加如下宏开关:

#ifdef USING_MACRO_SPLIT
#define ___CONFIG_SYS___
#endif

界面显示如下:

 

大家猜出我想说什么了吗?上面定义___CONFIG_SYS___宏只用作分隔标记,在左侧符号树中将一堆函数列表分隔开来,让你更清晰知道你当前工作在哪个模块的哪段功能实现上。

“功能段”也是采用敏捷开发模式后大家会自然而然形成的工作风格,敏捷开发是由一段一段可应用、可展示的功能开发驱动着前进,划分C/C++模块(指*.c*.cpp文件)时更多由应用来主导,而非事先设计(高层设计、低层设计等)为主导,两者思路很不相同,前者模块间耦合将大幅降低,extern申明会少用,由OBJ链接的符号许多要改用注册回调方式,另外还经常编写大模块,一个模块会集中定义多个class类定义。而后者,非敏捷方式,以事先设计为主导,以设计的眼光看待一切,通常一个CPP文件就定义一个class类。总而言之,在敏捷开发模式下,模块独立性要更强一些,有点像java包,import进来就能用,一个包就代表一种独立应用。(引伸一句,成功的敏捷开发实践集中于javaC#领域,与这两门语言的组织特点有关,C/C++敏捷实践想获得成功,编程风格也得向那边靠)。

了解敏捷开发经常要与大模块打交道后,应能理解使用上述分隔标记的必要性了吧?另外,如上图,编写每一行代码,当前函数都被谁调用(即caller),当前函数又调用哪些子函数(即callee),都在(源码上方的)函数调用树上显示,你随时清楚当前工作到哪儿了。这时,如果想看看caller函数的代码是怎么写的,按住Ctrl再用鼠标双击caller函数,源码就跳过去了,看完后,按“Alt + 左移键”跳回。

 

有关编辑器风格

尽管编辑器功能有强弱、易用不易用之分,但网上大家争论哪个编辑器好用,哪个不好用,经常陷于个人喜好,用惯了就说好,用不习惯就一顿板砖。本文不评价常见C语言编辑器的好坏,而尝试从应用风格上作比较,也会渗杂一点个人好恶的主观想法,但尽量公正的去评述,请大家看完之后再考虑是否要补上一砖(手下留情喔J )。

风格之一,显眼一点,还是整洁一点?且看下面SourceInsight编辑器例子。

 

有多种字体,颜色斑驳陆离,又是下划线,又是斜体、粗体,字号大小不一,场面很丰富,够显眼吧?当然,也可以用一字概括:乱!乱是主观受,是相对的,如果你习惯Delphi编辑器,肯定受不了上面风格,VcTesterDelphi风格一致,源码只一种字体,大小一种字号,各行高度统一。如果你习惯SourceInsight,可能会抱怨在VcTester编辑器找特定标识不够直接,如上图括号嵌套关系,一眼看得真真切切。

风格之二,是否受控?在多数源码编辑器中,编辑光标不能落在不存在字符的位置,上下移动编辑焦点时,光标会左右跳跃,而在VcTester编辑器,光标可在行尾任意位置停放,上下移动编辑焦点,光标将垂直移动,用鼠标点行尾任意位置光标也直接挪到指定位置。在VC编辑器中,键入“{”或“}”,编辑器自动帮你调整缩进位置,键入单词后加冒号,编辑器自动把它调整到行首,VcTester没这些自动调整功能。整体而言,VcTester追随Delphi编辑器风格:简洁,让你自主控制所有输入。

风格之三,Microsoft风格还是Borland风格?网上已有人对这两种风格作过总结,Microsoft风格是随意设计,但提供强大二次定制功能,Borland风格是精心设计,但自由定制与扩展能力较弱。比如VC的调试热键:F5运行,F9设断点,F10单步,F11跟入,DelphiF5设断点,F8单步,-->

作者:

抱歉!评论已关闭.