利用sourceinsight宏(Quicker.em)提高编码效率和质量
Marco是sourceinsight软件一个强大的功能,用户可以通过编写宏来实现自定义功能。这里有个比较流行的宏文件quicker.em,原作者貌似是原Huawei公司的员工编写整理的,基本功能比较全,可以满足一般的需求,个人也可以根据这个为基础进行更个性化的改写。

通过如下配置:
1.运行SI,打开Base工程,将Quicker.em加入到工程中;
2.安装触发热键和菜单,打开SI的Options的Key Assignments菜单,在Command窗口中选择Macro: AutoExpand然后对其赋一个热键,例如Ctrl Enter。
附下quicker.em的功能说明:
1 标准C语言扩展
1.1 /* 自动生成/* */
该命令自动生成C语言的注释,它能自动换行对齐,在把文档中一长串注释拷贝 过来时特别管用,不用自己去对齐了。还能自动识别中文和英文单词,对于中文不会把一个字分开,对于英文单词分开时会自动添加连字符,下面是一个注释的例子 abcdefghijk = abcd + cdefg + hijk /*该命令自动生成C语言的注释,它能自 动 换行对齐,在把文档中一长串注释拷 贝 过来时特别管用,不用自己去对齐了。*/ 
1.2 { 自动生成 } 
1.3 while (wh) 自动生成While语句
while ( # )
{
#
}

1.4 if 自动生成if语句
if 生成if结构的语句
ife 对应生成if else结构的语句
ifs 对应生成if elseif else结构的f语句
if ( # )
{
#

1.5 for 自动生成for语句,支持块命令插入
该命令自动生成如下格式
for ( #; #; # )
{
#
}
1.5.1 fo 自动生成for语句与前一条命令相比它直接会定义循环变量
UINT32 ulI = 0;

for ( ulI = 0; ulI < #; ulI++ )
{
#
}

1.6 do 自动生成 do while语句
该命令自动生成如下格式
do
{
#
} while ( # ); 
1.7 #ifd 自动生成 #ifdef 命令
该命令生成如下格式 
#ifdef UMSC
#endif /* UMSC */ 
1.8 #ifn 自动生成 #ifndef 命令
该命令生成如下格式
#ifndef UMSC
#endif /* UMSC */ 
1.9 #if 自动生成 #if 命令
该命令生成如下格式
#if ( UMSC == 1)
#endif /*if ( UMSC == 1) */ 
1.10 cpp 自动生成适用于c++的c原型说明定义
该命令生成如下格式
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */

1.11 switch (sw) 自动生成switch语句
该命令将提示输入case的个数,生成如下格式
switch ( # )
{
case #:
#
break;
default:
#
}

1.12 case (ca)自动生成case语句
支持块命令输入
该命令生成如下格式,用它可以避免遗漏break
case #:
#
break;

1.13 struct (st) 自动生成结构类型
该命令自动生成如下结构定义,它提示输入结构名,会自动转换成大写形式,并且自动在其后添加_STRU作为结构类型
typedef struct HELLO_TEST
{

}HELLO_TEST_STRU;

1.14 enum (en) 自动生成枚举类型
该命令自动生成如下结构定义,它提示输入结构名,会自动转换成大写形式,并且自动在其后添加_STRU作为结构类型
typedef enum HELLO_TEST
{

}HELLO_TEST_ENUM;

2 标准说明生成
2.1 config (co) 配置用户名和标题的说明语种
用户名就是前面自动生成的作者,修改者的名字,语种

2.2 file (fi) 生成标准的文件头
自动生成如下格式,它能自动取得文件名,作者名,时间,以及函数列表

2.3 func (fu) 生成标准的函数头说明
其 自动生成如下函数头,该函数必须在该函数的前一行执行,它能自动取得函数名,能够自动取得函数的输入、输出参数,并且排列好,同时生成日期和作者。能够 提示输入功能描述,输入的内容能够自动换行对齐,这样既可以避免遗漏说明,而且一般在详细设计中对每个函数的主要功能都有详细的描述,只要把这些描述 拷贝过来即可,它能自动排列好, 非常方便。 (因为SI的宏功能有限,没能自动加入调用函数和被调函数的功能)
如果不是在已存在的函数前执行则提示输入函数名,提示输入函数描述,提示输入返回值类型,提示输入函数入口参数,输完后按Esc退出

2.4 hi 增加修改历史列表
自动在该行增加修改历史列表,用于文件头和函数头说明中的历史记录更新,其添加形式如下

2.5 hd 自动生成函数头文件
该命令能够自动生成但前C文件的头文件定义,包括常用的宏定义,还有全部的函数原型定义。

2.6 Hdn 生成新的有文件
该命令能够自动生成指定的的头文件定义,包括常用的宏定义,提示输入函数原型的类型。

3 代码修改注释
3.1 pn 添加问题单号
在进行问题单修改时都要求在修改的地方注明问题单号和修改人以及修改时间,大部分一个问题单的修改都会涉及到几个地方,本功能提供自动取问题单号的功能,下面的几个命令所生成的问题单号就是有它提供,如果输入为#则不显示问题单号
3.2 ap 添加问题单修改说明
该命令提示输入问题单号和修改原因,生成如下格式的说明

3.3 ab 添加开始说明
它能自动生成如下说明:
1.有问题单号的情况,其中问题单号是由ap命令加入的。
/*BEGIN: Added by lushengwen, 2002/5/13 问题单号:D02556*/
2.没有问题单号的情况,
/*BEGIN: Added by lushengwen, 2002/5/13*/

3.4 ae 添加结束命令
该命令是as的对应命令,表示结束添加
支持块命令操作

3.5 abg 插入添加开始和结束说明
该命令是前两个命令的组合
支持块命令操作

3.6 db 删除开始命令
它能自动生成如下说明:
1.有问题单号的情况,其中问题单号是由ap命令加入的。
/*BEGIN: Deleted by lushengwen, 2002/5/13 问题单号:D02556*/
2.没有问题单号的情况,
/*BEGIN: Deleted by lushengwen, 2002/5/13 */

3.7 de 删除结束命令
该命令是ds的对应命令,表示删除结束

3.8 dbg 插入删除开始和结束说明
该命令是前两个命令的组合
支持块命令操作

3.9 mb 修改开始命令
它能自动生成如下说明:
1.有问题单号的情况,其中问题单号是由ap命令加入的。
/*BEGIN: Modified by lushengwen, 2002/5/13 问题单号:D02556*/
2.没有问题单号的情况,
/*BEGIN: Modified by lushengwen, 2002/5/13 */

3.10 me 修改结束命令
该命令是ms的对应命令,表示删除结束

3.11 mbg 插入修改开始和结束说明
该命令是前两个命令的组合
支持块命令操作

4      其余几个常用宏

4.1     将从C++的 // 注释改为标准的C /* */注释

ComentCPPtoC()  文件中的//注释自动修改为/* */注释,因为很多C编译器不能很好的处理C++风格的 // 注释,用该命令可以方便的将选中区域内的//注释进行修改,建议将该宏定义在菜单中。

4.2     能自动将Tab转换成空格(mstp_out.c)

ReplaceBufTab()  自动将单前文件中的Tab转换成空格

ReplaceTabInProj()  自动将工程中的文件中的Tab转换成空格

因为不同的编辑器对tab的长度定义不一至,造成代码格式紊乱,编程规范是不允许用tab键的,可以用该宏来将整个文件的tab进行替换,非常方便,建议将该宏定义在菜单中

4.3     插入当前的函数名

InsertFuncName ()  能自动的插入本函数名,现在的函数名一般较长,特别是在调试打印代码中为了显示出出错的函数经常需要输入本函数名,该宏能带来极大方便。建议定义为一个热键 ctrl 1

4.4     自动在函数入口、出口插入、删除打印函数

注意使用本功能时一定要求所有的语句符合公司编程规范,要求一条语句一行,因为各种编码情况很复杂,特别是老代码和有大量条件编译的情况下很难覆盖各种情况,最好在执行完后再检查一遍。不推荐使用工程内的插入和删除。

InsertTraceInfo()  能够自动在函数的出、入口首尾加入打印代码,即在光标处加入一个进入函数的打印,在函数的返回处加入一个出函数的打印,用于调试跟踪时很方便,建议定义为热键 Ctrl t

AutoInsertTraceInfoInBuf()能够在当前文件的函数出入口加入打印信息,定义菜单

AutoInsertTraceInfoInPrj()能够在当前工程的函数出入口加入打印信息,定义为菜单

RemoveTraceInfo() 删除InsertTraceInfo()添加的打印信息,定义为菜单

RemoveCurBufTraceInfo()删除文件中全部的InsertTraceInfo()添加的打印信息,定义为菜单

RemovePrjTraceInfo()删除但前工程中全部的InsertTraceInfo()添加的打印信息,定义为菜单

4.5     自动格式当前行

FormatLine()  能够自动将一行长的文字分成多行,并且从第二行开始,起始列为关标所在列,该宏是为了弥补因为对话框只能处理256个字符而编写的,当需要输入超过256个字符的说明时,就可以先把它拷贝到第一行,然后执行本宏,进行分行对齐。

4.6     更新函数列表

UpdateFunctionList() 能够自动在光标所在行重新生成函数列表,用于函数头说明的函数列表更新。

4.7     复合语句删除

DelCompoundStatement()能自动删除复合语句,定义热键 Ctrl D

对于如下语句,如果我想删除条件 ulCount  > 0,只需将光标放在if语句这一行(蓝色行),执行 Ctrl D 即可

stSubsystemRec.hwRBSubSystemCpuAveUsageLimit = CPU_RESTORE_THRESHOLD;

if( ulCount > 0 )

{

stSubsystemRec.hwRBSubSystemAdminStatus = ADSTATUS_DOWN;

stSubsystemRec.hwRBSubSystemCpuMaxUsageLimit = CPU_ALARM;

stSubsystemRec.hwRBSubSystemDSPAveUsageLimit = DSP_ALARM;

stSubsystemRec.hwRBSubSystemDSPMaxUsageLimit = DSP_RESTORE;

stSubsystemRec.hwRBSubSystemOperStatus = OPSTATUS_OTHER;

}

stSubsystemRec.hwRBSubSystemIndex = 0;

stSubsystemRec.hwRBSubSystemIpAddress = ulIpAddr;

执行结果

stSubsystemRec.hwRBSubSystemCpuAveUsageLimit = CPU_RESTORE_THRESHOLD;

stSubsystemRec.hwRBSubSystemAdminStatus = ADSTATUS_DOWN;

stSubsystemRec.hwRBSubSystemCpuMaxUsageLimit = CPU_ALARM;

stSubsystemRec.hwRBSubSystemDSPAveUsageLimit = DSP_ALARM;

stSubsystemRec.hwRBSubSystemDSPMaxUsageLimit = DSP_RESTORE;

stSubsystemRec.hwRBSubSystemOperStatus = OPSTATUS_OTHER;

stSubsystemRec.hwRBSubSystemIndex = 0;

stSubsystemRec.hwRBSubSystemIpAddress = ulIpAddr;

4.8      注释掉多行

AddComment 能够将多行代码注释掉

DelComment 可以解除AddComment的注释

4.9     其它跟扩展命令对应的宏

下面宏可以根据需要定义为热键

ClearPrombleNo    清除问题单   Alt Del

ExpandBraceLarge  加入{}  /*支持块输入*/  Ctrl ]

ExpandBraceLittle   加入() /*支持块输入*/  Ctrl  Shift  9

ExpandBraceMid     加入[] /*支持块输入*/  Alt [

FileHeaderCreate    生成文件头说明           Ctrl Shift i

FunctionHeaderCreate  生成函数头说明     Ctrl Shift u

HeaderFileCreate     生成头文件                  Ctrl  Shift d

InsertCase                 插入case语句  Ctrl Alt c

InsertDo                      插入do语句  /*支持块输入*/  Ctrl Alt d

InsertElse                  插入else语句  /*支持块输入*/  Ctrl Alt e

InsertFor                   插入for语句  /*支持块输入*/  Ctrl Alt  f

InsertIf                       插入if语句  /*支持块输入*/      Ctrl Alt I

InsertSwitch              插入switch语句                           Ctrl Alt s

InsertWhile               插入while语句  /*支持块输入*/   Ctrl Alt w

InsIfdef                     插入#ifdef语句   /*支持块输入*/      Ctrl  3

PredefIfStr                  插入#if语句    /*支持块输入*/         Alt  3

InsertReviseAdd        插入添加说明   /*支持块输入*/         Ctrl  Shift  a

InsertReviseDel         插入删除说明  /*支持块输入*/         Ctrl  Shift  r

InsertReviseMod       插入修改说明  /*支持块输入*/         Ctrl  Shift  m

利用sourceinsight宏(Quicker.em)提高编码效率和质量的更多相关文章

  1. quicker+.em SourceInsight 宏加强版制作

    这两天苦于新建的文件每次都要手动添加文件头,新建的函数每次都要手动添加函数说明,连.h也要手动生成.于是乎,上网搜了搜,发现了lushengwen写的一个神器:quicker.em .好家伙,有了这个 ...

  2. source insight之quicker.em宏的使用

    source insight有很多宏可以用,这里介绍的宏是quicker.em这个宏,它是华为的一个员工写的,很实用. 1.安装quicker.em宏 一.打开base这个工程Project-> ...

  3. SourceInsight宏插件2(非常好用,强力推荐)

    Quicker宏在SI中的使用方法(下载地址:链接:https://pan.baidu.com/s/1VrDxlPhft7RPUCCOKxsGIg  提取码:2d4u) Quicker宏的添加到SI中 ...

  4. 17款提高编码效率的CSS工具

    摘要:作为WEB前端开发人员,你的工作可能很大一部分都在编写CSS代码,为了提高前端开发人员编写CSS代码的效率,编程文库从 网上搜集了17款可以提高你CSS代码效率的CSS工具,它们可以帮助你快速生 ...

  5. 在LaTeX中利用preview宏包和tikz宏包生成单图pdf

    有时候我们利用tikz宏包画出的图片后,只想生成一个单图pdf,而且pdf的页面大小与图片相同,以便于以后再次用latex插入. 可以与preview宏包进行搭配,页面大小由图像大小决定,可以通过改变 ...

  6. 程序猿(媛)的葵花宝典-- 必备idea 插件plugins 提高编码效率

    最近发现了几个非常好用   提高编码效率 的idea 插件 跟大家分享一下,,,不用谢我!!!!!!!!!!!!! 因为idea自带的插件下载可能连接不上服务器而导致插件下载失败,所以这里推荐使用引入 ...

  7. 利用VBA宏批量解决Word中图片大小、居中设置

    需求:经常阅读网上的研报(没钱买排版漂亮的高质量研报),有些需要保存的复制下来到word里,图片很大都超出word的边界了,也没有居中,手工一张张调整不现实,上百页的研报,几十张图片. 解决方案:利用 ...

  8. 使用lombok提高编码效率-----不用写get set

    使用lombok提高编码效率-----不用写get    set https://blog.csdn.net/v2sking/article/details/73431364

  9. 必备idea 插件plugins 提高编码效率

    最近发现了几个非常好用   提高编码效率 的idea 插件 跟大家分享一下 因为idea自带的插件下载可能连接不上服务器而导致插件下载失败,所以这里推荐使用引入外部插件的方式 插件包也给你们准备好了( ...

随机推荐

  1. 洛谷 P1191 矩形 题解

    P1191 矩形 题目描述 给出一个 \(n \times n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量 输入格式 第一行,一个整数\(n\),表示矩形的大 ...

  2. 数据结构Java版之红黑树(八)

    红黑树是一种自动平衡的二叉查找树,因为存在红黑规则,所以有效的防止了二叉树退化成了链表,且查找和删除的速度都很快,时间复杂度为log(n). 什么是红黑规则? 1.根节点必须是黑色的. 2.节点颜色要 ...

  3. centos6安装vim插件youcompleteme问题及解决

    首先clone vim8代码库 git clone https://github.com/vim/vim.git 然后编译 注意下自己的python2.7config在哪儿 ./configure - ...

  4. QTextToSpeech Win7奔溃

    在linux下,它是调用speech-dispatcher.在其它不同的平台上,调用各自平台的TTS引擎.所以在使用的时候,要确保本地的TTS引擎是可用的. 本地TTS引擎不可用可能会在声明QText ...

  5. Oracle数据库安装以及使用脚本创建数据库授权

    安装数据库 事实上Oracle安装 1.安装准备 Oracle的安装包下载以后是两个压缩包,同时选中两个压缩包右击进行解压 2.解压完成如下图所示 3.双击 setup.exe 文件进行安装,会弹出以 ...

  6. win10创建Ubuntu16.04子系统,安装常用软件以及图形界面(包括win10远程桌面连接Ubuntu)

    一.开启win10子系统 [ Windows Subsystem for Linux(WSL)] 二.基本配置 三.安装常用的软件 安装配置zsh 使用 bash 客户端软件 cmder(其实是win ...

  7. 004 DOM01

    一:说明 1.Js的三个部分 ECMAScripts标准:JS的基本语法 DOM:文档对象模型,操作页面的元素的 BOM:浏览器对象模型,操作浏览器 2.术语 文档:一个页面就是一个文档 元素:页面中 ...

  8. mkimage工具的用法

    1. mkimage都支持哪些压缩格式 none, gzip, bzip2等 2. 参考资料 这里

  9. flutter 中文件工具类

    添加依赖: path_provider: ^0.5.0+1 import 'dart:convert'; import 'dart:io'; import 'package:path_provider ...

  10. Flutter ListView 列表组件

    列表常见的情况: 1.垂直列表 2.垂直图文列表 3.横向列表 4.动态列表 名称 类型 说明 scrollDirection Axis Axis.horizontal 横向列表 Axis.verti ...