利用sourceinsight宏(Quicker.em)提高编码效率和质量
利用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)提高编码效率和质量的更多相关文章
- quicker+.em SourceInsight 宏加强版制作
这两天苦于新建的文件每次都要手动添加文件头,新建的函数每次都要手动添加函数说明,连.h也要手动生成.于是乎,上网搜了搜,发现了lushengwen写的一个神器:quicker.em .好家伙,有了这个 ...
- source insight之quicker.em宏的使用
source insight有很多宏可以用,这里介绍的宏是quicker.em这个宏,它是华为的一个员工写的,很实用. 1.安装quicker.em宏 一.打开base这个工程Project-> ...
- SourceInsight宏插件2(非常好用,强力推荐)
Quicker宏在SI中的使用方法(下载地址:链接:https://pan.baidu.com/s/1VrDxlPhft7RPUCCOKxsGIg 提取码:2d4u) Quicker宏的添加到SI中 ...
- 17款提高编码效率的CSS工具
摘要:作为WEB前端开发人员,你的工作可能很大一部分都在编写CSS代码,为了提高前端开发人员编写CSS代码的效率,编程文库从 网上搜集了17款可以提高你CSS代码效率的CSS工具,它们可以帮助你快速生 ...
- 在LaTeX中利用preview宏包和tikz宏包生成单图pdf
有时候我们利用tikz宏包画出的图片后,只想生成一个单图pdf,而且pdf的页面大小与图片相同,以便于以后再次用latex插入. 可以与preview宏包进行搭配,页面大小由图像大小决定,可以通过改变 ...
- 程序猿(媛)的葵花宝典-- 必备idea 插件plugins 提高编码效率
最近发现了几个非常好用 提高编码效率 的idea 插件 跟大家分享一下,,,不用谢我!!!!!!!!!!!!! 因为idea自带的插件下载可能连接不上服务器而导致插件下载失败,所以这里推荐使用引入 ...
- 利用VBA宏批量解决Word中图片大小、居中设置
需求:经常阅读网上的研报(没钱买排版漂亮的高质量研报),有些需要保存的复制下来到word里,图片很大都超出word的边界了,也没有居中,手工一张张调整不现实,上百页的研报,几十张图片. 解决方案:利用 ...
- 使用lombok提高编码效率-----不用写get set
使用lombok提高编码效率-----不用写get set https://blog.csdn.net/v2sking/article/details/73431364
- 必备idea 插件plugins 提高编码效率
最近发现了几个非常好用 提高编码效率 的idea 插件 跟大家分享一下 因为idea自带的插件下载可能连接不上服务器而导致插件下载失败,所以这里推荐使用引入外部插件的方式 插件包也给你们准备好了( ...
随机推荐
- 洛谷 P4058 [Code+#1]木材 题解
P4058 [Code+#1]木材 题目描述 有 \(n\) 棵树,初始时每棵树的高度为 \(H_i\),第 \(i\) 棵树每月都会长高 \(A_i\).现在有个木料长度总量为 $ S$ 的订单, ...
- Processing中和值域相关的函数
今天在群里有人问了个问题:请教下啊,群里能有高手讲讲norm(), lerp(), map()么,英文的实在是没看懂呀?鉴于很多人初学Processing都没弄明白这3个函数的用法,我这里简单介绍一下 ...
- Day11:Flex布局
参考: 来源:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 网页布局是css的一个重点. 盒子模型 display属性 positi ...
- golang 常见变成问题01
Golang常见编程问题 --语言简单 func CopyFile (dst, src string) (w int64, err error) { srcFile, err := os.Open ( ...
- 在linux中设置优先使用ipv4,而不是ipv6
背景: 有时候更新源的时候默认使用ipv6,而ipv6下载数据时候总出现问题. 所有想默认出口的时候优先使用ipv4出口访问,而不是ipv6. 要使用ipv4 连接优先而不必禁用ipv6,需要修改ga ...
- PHP is_numeric() 函数
is_numeric() 函数用于检测变量是否为数字或数字字符串. 例子 <?php $var_name1=; $var_name2="a678"; $var_name3=& ...
- 树莓派 pip 手动安装 和使用阿里云源
在 /etc/pip.conf 添加如下内容,启用源 [global] extra-index-url=https://www.piwheels.org/simple 下载后 pip install ...
- 笔记 - DBSherlock: A Performance Diagnostic Tool for Transactional Databases
OLTP系统的问题很难排查和定位,这就是为什么要花那么多钱去请DBA 因为TP系统的请求很多都是毫秒级别,而且同时有大量的并发,所以由于资源,或随机的原因导致的问题,很难去定位根因 哪怕数据库系统尤其 ...
- CMU Database Systems - Parallel Execution
并发执行,主要为了增大吞吐,降低延迟,提高数据库的可用性 先区分一组概念,parallel和distributed的区别 总的来说,parallel是指在物理上很近的节点,比如本机的多个线程或进程,不 ...
- Java回调机制在RPC框架中的应用示例
完整源码: https://gitee.com/shiyanjun/x-callback-demo 应用场景描述: 服务提供者在项目启动时,创建并启动一个TCP服务器,然后将自己提供的所有服务注册到注 ...