VAssistX使用小窍门

日常使用中的一些VAssistX使用小窍门,简单总结下

一,修改VAssistX默认缓存文件路径,防止默认C盘被占用空间过大

1、  打开注册表HKCU\Software\Whole Tomato,新建UserDataDir,数值为要修改的路径,如下图:

 

2、  C:\Users\{用户名称}\AppData\Roaming\VisualAssist\ 为AutoText目录,拷贝到新目录下

3、  C:\Users\{用户名称}\AppData\Local\VisualAssist\为符号表目录,拷不拷贝无所谓

4、  删除旧的AutoText和符号表目录,会发现C盘瞬间多了好几个G

 

 二,利用Visual AssistX的特性快速适应C++代码规范

Visual AssistX是一款功能非常强大的VC、VS插件,可以非常便利用其自动完成和着色的功能,让代码的输入速度和可读性大大的增强。在实际的开发过程当中,很多人只利用到了它的这两个功能,在下面我将介绍下,利用Visual AssistX实现按代码规范要求的文件头注释,函数注释,以及查找代码,代码重构的相功能。

快速的加入文件头注释:

例如有如下c++编程规范的要求,源文件头部应该进行注释,列出版权说明,文件名,修改日志等。具体示例如下:

[示例]:

/**   @file file.h

 *     @note XXX Technology Co., Ltd. All Right Reserved.

 *     @brief 这里填写本文件的摘要。

 *

*     @author           xxx

 *     @date               2004/02/14

 *

*     @note 下面的note和warning为可选项目

 *     @note 这里填写本文件的详细功能描述和注解

 *     @note 历史记录:

 *     @note V2.0.0  添加了一个导出接口

*

 *     @warning 这里填写本文件相关的警告信息

 */

 

 Visual AssistX自带的文件头注释和我们公司要求的格式有所不同,所以我们首先修改它的格式,在Viusal Studio的VAssistX菜单(前提是已经安装过这个软件)中,选择tools项中的Edit VA Snippets…项,如下图:

 

将弹出如下对话框:

 

左侧的树上如#d,#u代表着一些常用的快捷输入,比如输入#d就会自动弹出#define的候选输入,然后敲击回车便会自动补全相应的功能,我们就是加入我们的文件头的注释。

首先为代码头加入快捷输入前几个字符,我这里为了不和其实的有所冲突,便以“/***”做为快捷输入的字符,也就是说当输入“/***”时,就会弹出我们自定义的文件头注释。

  1. 点击工具栏的新建按钮 。
  2. 在右侧输入如下:                    

其中Title是这个Snippet的标题,这里写的是“File header detailed”,Shortcut就是你设置的快捷键,这里设置的是“/***”,Despcription就是你自已经对这个Snippet的详细描述。

  1. 在内容里输入如下:
    /**  @file        $FILE_BASE$.$FILE_EXT$

    *   @note  XXX Technology Co., Ltd. All Right Reserved.

    *   @brief   $Breif$

 *

    *   @author  $Author$

    *   @date    $YEAR$/$MONTH$/$DAY$

    *

 *   @note   detailed functional description of this document and comments

    *   @note   History

    *

    *   @warning warning message related to this document 

*/

大部分内容可以看的明白,有几处“$FILE_BASE$”,“$FILE_EXIT$等是Visual AssistX的保留字,$FILE_BASE$是不包括扩展名的文件头,$FILE_EXIT$是文件扩展名,当我们插入这些内容里,Visual AssistX会自动替换为文件名,$YEAR$/$MONTH$/$DAY$是如“2011/5/20” 的方式插入日期。你也可以自定义保留字,像此处$Breif$,$Author$是我们自己定义的,看英文的意思是文件简介和文件的作者,作用是,当你输入/***时,敲回车会弹出一个对话框,让你手动输入Breif和Author,看下图:

当输入/***时弹出你自定义的这个Snippets的标题,

 

直接敲回车:

 

Brief和Autor就是你自定义的保留字,你在这里边输入到你编写的这个C++文件的简介和作者,敲回车,就会自动加入文件头。如下图:

 

由于我把注释的颜色设置成灰色了,所以看不太清,实际如下:

/**  @file  WarnDlg.h

 *   @note  XXX Technology Co., Ltd. *            All Right Reserved.

 *   @brief  警告框

 *

 *   @author jiangxf

 *   @date   2011/5/27

 *

 *   @note   detailed functional description of this document *   @note   History

 *

 *   @warning warning message related to this document 

*/

以后每次就可以通过输入/***加入文件头了,避免每次都自己复制,一劳永逸。

 

加入函数注释:

我们的规范如下:

/**   @fn const char *TestClass::func1(char c,int n)

 *     @brief      <这里填写函数的摘要>

 *     @param c 参数描述.

 *     @param n 参数描述.

 *     @return  返回描述

 */

这个在Visual AssistX中已经有了,但是只是格式不同,我们首先在Viusal Studio的VAssistX菜单(前提是已经安装过这个软件)中,选择tools项中的Edit VA Snippets…项,在左侧找到Refactor Document Method。

 

然后在左侧的内容里输入

 

注意Title和Shortcut里的内容不要修改。使用函数注释按下面的方法:

在CPP的文件里找到你要加入注释的函数,将光标移到函数处,右键,选择Refactor菜单项里的Document Method,如下图:

 

因为我们定义注释里有个自定义的保留字$Brief$,所以在点击完Document Method时,会弹出对话框让你输入函数的概要。输入完点确定即可。

 

在Breif处输入函数简介。

 

/** @fn       CMutiroleDialog::ShowDialog

 *  @brief    显示对话框

 *  @param    QWidget * parent

 *  @param    QString & strTitle

 *  @return   void

 */

点击回车后生成上面的注释,其中$MethodArgs$会给你列出所有的函数参数,这当然也是自动生成的,你在每个参数后面加入参数的注释内容即可,这个当然不能自动完成,因为它也猜不出函数参数的意思~。

 

查找某个函数的功能:

Visual Studio的查找功能有些不太好用的地方,我现在介绍下这个插件的查找功能。

假如你要找一个函数在哪里被引用到,这个就非常方便了。

首先将鼠标移动到函数名称上,会出现一个倒三角号,

 

如果选择Find References,就可以显示在这个解决方案中,所以引用到这个函数的地方,如果选择Find Reference in File,它只用显示这个函数在当前的文件当中引用到的地方,查找的结果在:

 

会详细的显示出在哪个文件里,哪一行,还有哪个函数里引用到了这个函数,而且可以使用代码着色的功能显示,非常直观。

在上面的菜单当中,还可以直接选择重命名,这样就可以重命名所有引用到地方一起改变名称,这个可以自己试下。

 

自动加入函数实现的功能:

当你在头文件里写了一个函数时,每次都得到CPP文件中补上函数的实现,其实你可以在头文件的函数处,右键,选择Refactor,Create Implements的,这样,就会在C++中自加入函数的实现,而不用手动再去写。

 

如上图。

这个Refactor中,可以实现好多功能

  1. 可以加入类的成员变量
  2. 加入相似的函数
  3. 如果你先在CPP写好了函数,可以直接在.h中加入声明
  4. 如果一些函数和变量是其他头文件中的,而你还没有include,还可以自动include进来
  5. 改变名称
  6. 选中一块代码,可以把这块代码抽象成一个函数(就是加一个函数体将这块选中的代码包起来,使之成为一个独立的函数)
  7. 实现接口,如果你继承的父类有虚拟函数,他们的直接实现这些接口,并分别加入到头文件和CPP文件中。

 

包围功能

 

包围功能是这样的,当你选中一块代码,可以直接用{}或()包围起来,也可以在这块代码中加入if包起来。可以加的包围功能,如上图所示。它会直接在你选中的代码外面,加入你选择的东西。

转载于:https://www.cnblogs.com/widget90/p/6128590.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react 交互_如何在React应用程序中跟踪用户交互

react 交互by Faouzi Oudouh通过Faouzi Oudouh 如何在React应用程序中跟踪用户交互 (How to track user interactions in your React app) Worry not about which Analytics provider you need to gather user interaction within your app.不必担心需要哪个Analytics(分析)提…

shell python比较_shell中的条件判断以及与python中的对比

shell中比如比较字符串、判断文件是否存在及是否可读等&#xff0c;通常用"[]"来表示条件测试。注意&#xff1a;这里的空格很重要。要确保方括号的空格。if ....; then python中的条件判断&#xff1a; if ....: (此处是冒号&#xff0c;不同…

服务器麒麟系统能设置mtu吗,麒麟操作系统安装标准手册-20210405220006.docx-原创力文档...

精品文档精品文档PAGEPAGE47精品文档PAGE.银河麒麟V3操作系统安装手册V1.2编制&#xff1a;王帅校核&#xff1a;朱本亮审定&#xff1a;周俊...文档更新日志&#xff1a;序号修订时间修订内容修改人审定人012017-04-12发布文档V1.0王帅周俊022017-05-11增加启动安装时蓝屏错误…

多个 gradle 文件夹 \.gradle\wrapper\dists\ 设置gradle不是每次都下载

韩梦飞沙 韩亚飞 313134555qq.com yue31313 han_meng_fei_sha 设置gradle不是每次都下载 \.gradle\wrapper\dists\ 在你导入项目的时候&#xff0c;有个选项的&#xff1a; 你要是选了Use default gradle mapper就会下载一次&#xff0c;Use local gradle distribution就会…

docker使用方式

docker使用方式安装&#xff1a;1.安装依赖 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 2添加yum源 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 3.安装 yum install docker-ce docker-ce-cli contain…

使用AxiosJavaScript中的简单HTTP请求

Interested in learning JavaScript? Get my ebook at jshandbook.com有兴趣学习JavaScript吗&#xff1f; 在jshandbook.com上获取我的电子书 介绍 (Introduction) Axios is a very popular JavaScript library you can use to perform HTTP requests. It works in both Brow…

Linux中通过命令直接删除文件中最后一行

何谓Sed(Stream EDitor):Sed原为UNIX系统上的非交谈式文字编辑器(non-interactive stream editor)。当Sed读入待编辑文件&#xff0c;会依编辑命令来进行文件的编辑工作。sed -i $d file如同其它UNIX的指令一般&#xff0c;Sed亦是由标准输入(standard input)读入欲编辑的文件&…

vb获取数组长度_如何实现数组的二分查找

二分查找是一种极其高效、简练的查找算法&#xff0c;它不仅简单&#xff0c;易用&#xff0c;而且还非常的高效。相对于顺序查找&#xff0c;二分查找在效率是呈现指数性提升&#xff0c;数据量越大&#xff0c;越能体现出二分查找法的优势。二分查找的查找过程是&#xff1a;…

400错误返回了服务器信息,使用Spring MVC,接受JSON错误的POST请求会导致返回默认的400错误代码服务器页面...

我正在使用RESTAPI。接收到带有错误JSON的POST消息(例如{sdfasdfasdf})会使Spring返回默认服务器页面&#xff0c;以显示400错误请求错误。我不想返回页面&#xff0c;我想返回自定义JSON错误对象。当使用ExceptionHandler引发异常时&#xff0c;可以执行此操作。因此&#xff…

【Python】list和tuple 区别比较

列表 List classmates [Michael, Bob, Tracy] 元组 Tuple tuple一旦初始化就不能修改&#xff0c;比如同样是列出同学的名字&#xff1a; >>> classmates (Michael, Bob, Tracy) 现在&#xff0c;classmates这个tuple不能变了&#xff0c;它也没有append()&#xff…

leetcode315. 计算右侧小于当前元素的个数(树状数组解法)

leetcode315. 计算右侧小于当前元素的个数(树状数组解法) 题目&#xff1a;给定一个整数数组 nums&#xff0c;按要求返回一个新数组 counts。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 树状数组解法 java class Solution …

洛谷 P1101 单词方阵

给一nn的字母方阵&#xff0c;内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 8个方向的任一方向&#xff0c;同一单词摆放时不再改变方向&#xff0c;单词与单词之间可以交叉,因此有可能共用字母。输出时&#xff0c;将不是单词的字母用*代…

从头学习计算机网络_如何从头开始构建三层神经网络

从头学习计算机网络by Daphne Cornelisse达芙妮康妮莉丝(Daphne Cornelisse) 如何从头开始构建三层神经网络 (How to build a three-layer neural network from scratch) In this post, I will go through the steps required for building a three layer neural network. I’…

python 文件处理

f open(chenli.txt) #打开文件 first_line f.readline() print(first line:,first_line) #读一行 print(我是分隔线.center(50,-)) data f.read() # 读取剩下的所有内容,文件大时不要用 print(data) #打印读取内容f.close() #关闭文件1…

第五章 MVC之Bundle详解

一、简述 Bundle&#xff0c;英文原意就是捆、收集、归拢。在MVC中的Bundle技术&#xff0c;也就是一个对css和js文件的捆绑压缩的技术。 它的用处&#xff1a; 将多个请求捆绑为一个请求&#xff0c;减少服务器请求数 压缩javascript&#xff0c;css等资源文件&#xff0c;减小…

所给服务器端程序改写为能够同时响应多个客户端连接请求的服务器程序_一文读懂客户端请求是如何到达服务器的...

点击上方“蓝色字体”&#xff0c;选择 “设为星标”关键讯息&#xff0c;D1时间送达&#xff01;互联网是人类历史上最伟大的发明创造之一&#xff0c;而构成互联网架构的核心在于TCP/IP协议。那么TCP/IP是如何工作的呢&#xff0c;我们先从数据包开始讲起。1、数据包一、HTTP…

消息服务器 推送技术,SSE服务器推送技术

SSE即 server send event 服务器发送事件&#xff0c;在在早期可能会使用ajax向服务器轮询的方式&#xff0c;使浏览器第一时间接受到服务器的消息&#xff0c;但这种频率不好控制&#xff0c;消耗也比较大。但是对于SSE来说&#xff0c;当客户端向服务端发送请求&#xff0c;服…

Contest2162 - 2019-3-28 高一noip基础知识点 测试5 题解版

传送门 T1 单调栈 按照b排序 在家每一个物品时&#xff0c;判断一下a和b的关系 如果s[sta[top]].a>s[i].b&#xff0c;就弹栈 记录所有时候的height&#xff0c;并取最大值 T2 单调栈裸题 单调栈是干什么的&#xff1f;&#xff1f; 单调栈是记录一个数的一侧的第一个比他大…

在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样...

在package.json里面的script设置环境变量&#xff0c;区分开发及生产环境。 注意mac与windows的设置方式不一样。 "scripts": {"publish-mac": "export NODE_ENVprod&&webpack -p --progress --colors","publish-win": "…

leetcode 978. 最长湍流子数组(动态规划)

978. 最长湍流子数组 当 A 的子数组 A[i], A[i1], …, A[j] 满足下列条件时&#xff0c;我们称其为湍流子数组&#xff1a; 若 i < k < j&#xff0c;当 k 为奇数时&#xff0c; A[k] > A[k1]&#xff0c;且当 k 为偶数时&#xff0c;A[k] < A[k1]&#xff1b; 或 …