日常使用中的一些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的候選輸入,然后敲擊回車便會自動補全相應的功能,我們就是加入我們的文件頭的注釋。
首先為代碼頭加入快捷輸入前幾個字符,我這里為了不和其實的有所沖突,便以“/***”做為快捷輸入的字符,也就是說當輸入“/***”時,就會彈出我們自定義的文件頭注釋。
- 點擊工具欄的新建按鈕 。
- 在右側輸入如下:????????????????????
其中Title是這個Snippet的標題,這里寫的是“File header detailed”,Shortcut就是你設置的快捷鍵,這里設置的是“/***”,Despcription就是你自已經對這個Snippet的詳細描述。
- 在內容里輸入如下:
/**? @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中,可以實現好多功能
- 可以加入類的成員變量
- 加入相似的函數
- 如果你先在CPP寫好了函數,可以直接在.h中加入聲明
- 如果一些函數和變量是其他頭文件中的,而你還沒有include,還可以自動include進來
- 改變名稱
- 選中一塊代碼,可以把這塊代碼抽象成一個函數(就是加一個函數體將這塊選中的代碼包起來,使之成為一個獨立的函數)
- 實現接口,如果你繼承的父類有虛擬函數,他們的直接實現這些接口,并分別加入到頭文件和CPP文件中。
?
包圍功能
?
包圍功能是這樣的,當你選中一塊代碼,可以直接用{}或()包圍起來,也可以在這塊代碼中加入if包起來。可以加的包圍功能,如上圖所示。它會直接在你選中的代碼外面,加入你選擇的東西。