vs2005 为函数自动添加注释
来源:互联网 发布:电动牙刷 推荐 知乎 编辑:程序博客网 时间:2024/05/22 07:50
a) 自动添加文件注释 效果如下:
- /*
- * Copyright(C) 2012,Company 保留所有权利。( All rights reserved. )
- *
- * 文件名称:TEDlg.cpp
- * 摘 要:
- * 当前版本:1.0
- * 作 者:YuJian
- * 创建日期:2012年3月18日
- */
b) 自动添加函数注释 效果如下:
- //-----------------------------------------------------------
- //
- // 函数名称:CTEDlg::OnInitDialog
- //
- // 参 数: -无
- //
- // 返 回:BOOL
- //
- // 函数作用:
- //
- // 修改日期:2012年3月18日 By YuJian
- //
- //-----------------------------------------------------------
所使用的途径 是:编写宏
而在,编写宏之前,要给VS2005安装补丁文件 ,否则 vs2005无法执行宏
英文补丁 431M
http://download.microsoft.com/download/6/3/c/63c69e5d-74c9-48ea-b905-30ac3831f288/VS80sp1-KB926601-X86-ENU.exe
中文补丁
http://download.microsoft.com/download/8/0/7/8071514d-9370-45c3-8af1-4ff09a70e59d/VS80sp1-KB926604-X86-CHS.exe
安装好了以后,就可以编写自动注释函数的宏了。。。
由于是VB,以前没用过,因此借鉴网上的程序,自己根据需要稍微修改了下
1 建立宏项目
工具→宏→新建宏项目,输入文件名称,并选择要保存的位置
将下面的代码复制到Module1模块,保存。
- Imports System
- Imports EnvDTE
- Imports EnvDTE80
- Imports System.Diagnostics
- Public Module Module1
- ' --------------------------------------------------
- ' 生成文件说明注释
- ' --------------------------------------------------
- Sub FileDescription()
- Dim gAuthor As String = "YuJian"
- Dim gCompany As String = "Company"
- Dim outTextDoc As TextDocument
- Dim outText As EditPoint
- DTE.ActiveDocument.Selection.GotoLine(1)
- outTextDoc = DTE.ActiveDocument.Object("TextDocument")
- outText = outTextDoc.StartPoint.CreateEditPoint()
- outText.Insert("/*" + vbCrLf)
- outText.Insert(" * Copyright(C) " + Date.Today.Year.ToString() + "," + gCompany + " 保留所有权利。( All rights reserved. )" + vbCrLf)
- outText.Insert(" * " + vbCrLf)
- outText.Insert(" * 文件名称:" + DTE.ActiveDocument.Name + vbCrLf)
- outText.Insert(" * 摘 要:" + vbCrLf)
- outText.Insert(" * 当前版本:1.0" + vbCrLf)
- outText.Insert(" * 作 者:" + gAuthor + vbCrLf)
- outText.Insert(" * 创建日期:" + Date.Today.ToLongDateString() + vbCrLf)
- outText.Insert(" */" + vbCrLf)
- DTE.ActiveDocument.Selection.GotoLine(10)
- End Sub
- ' --------------------------------------------------
- ' 生成函数说明注释
- ' --------------------------------------------------
- Sub FunctionRemark()
- Dim preSpaceCount As Integer = 0 ' 注释前面的空格数, 缩进(单位:字符)
- Dim outTextDoc As TextDocument
- Dim outText As EditPoint
- Dim iCurrentLineNumber As Integer
- iCurrentLineNumber = DTE.ActiveDocument.Selection.CurrentLine '.ToString()
- outTextDoc = DTE.ActiveDocument.Object("TextDocument")
- outText = outTextDoc.StartPoint.CreateEditPoint()
- ' 移动文本输入点到指定行上
- outText.MoveToLineAndOffset(iCurrentLineNumber, 1)
- Dim strSpace As String = ""
- Dim iSpaceIndex As Integer
- For iSpaceIndex = 1 To preSpaceCount
- strSpace = strSpace + " "
- Next
- outText.Insert(strSpace + "//-----------------------------------------------------------" + vbCrLf)
- outText.Insert(strSpace + "// 函数名称:" + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- outText.Insert(strSpace + "// 参数:" + vbCrLf)
- outText.Insert(strSpace + "// - " + vbCrLf)
- outText.Insert(strSpace + "// 返回:" + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- outText.Insert(strSpace + "// 说明:" + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- outText.Insert(strSpace + "//-----------------------------------------------------------" + vbCrLf)
- End Sub
- ' --------------------------------------------------
- '
- ' 函数注释解析部分
- '
- ' --------------------------------------------------
- Public Structure ITEMDATA
- Public itemType As Integer
- Public itemText As String
- End Structure
- Public lItemList As New System.Collections.Generic.List(Of ITEMDATA)(4)
- Private Function ParseFunctionDescription(ByVal funText As String) As Boolean
- Dim strItem As String
- Dim idata As ITEMDATA
- Dim strSplit As String() = funText.Split("(")
- If strSplit.Length = 1 Then
- Return False
- End If
- '解析函数名称部分
- If strSplit.Length > 2 Then
- strItem = strSplit(strSplit.Length - 2).Trim()
- Else
- strItem = strSplit(0).Trim()
- End If
- Dim strHeadSplit As String() = strItem.Split(" ")
- strItem = strHeadSplit(strHeadSplit.Length - 1).Trim()
- idata.itemType = 1
- idata.itemText = strItem.Trim()
- lItemList.Add(idata)
- '解析参数部分
- strItem = strSplit(strSplit.Length - 1).Trim()
- If strItem.Substring(0, 1) <> ")" Then
- Dim iend As Integer = strItem.IndexOf(")", 0)
- Dim strParams As String = strItem.Substring(0, iend).Trim()
- Dim strParamSplit As String() = strParams.Split(",")
- For Each strItem In strParamSplit
- idata.itemType = 2
- idata.itemText = strItem.Trim()
- lItemList.Add(idata)
- Next strItem
- Else
- idata.itemType = 2
- idata.itemText = "无参数"
- lItemList.Add(idata)
- End If
- '解析返回值类型
- Dim iIndex As Integer
- For iIndex = 0 To strHeadSplit.Length - 2
- idata.itemType = 3
- idata.itemText = strHeadSplit(iIndex).Trim()
- lItemList.Add(idata)
- Next iIndex
- Return True
- End Function
- ' --------------------------------------------------
- '
- ' 根据函数声明生成注释
- '
- ' --------------------------------------------------
- Sub MakeFunctionRemark()
- Dim preSpaceCount As Integer = 0 ' 注释前面的空格数, 缩进(单位:字符)
- Dim outTextDoc As TextDocument
- Dim outText As EditPoint
- Dim iCurrentLineNumber As Integer
- Dim iLineLength As Integer
- Dim strFunText As String
- Dim iItemIndex As Integer
- Dim idata As ITEMDATA
- lItemList.Clear()
- iCurrentLineNumber = DTE.ActiveDocument.Selection.CurrentLine.ToString()
- outTextDoc = DTE.ActiveDocument.Object("TextDocument")
- outText = outTextDoc.StartPoint.CreateEditPoint()
- ' 移动文本输入点到指定行上
- outText.MoveToLineAndOffset(iCurrentLineNumber, 1)
- iLineLength = outText.LineLength
- strFunText = outText.GetText(iLineLength)
- iLineLength = strFunText.Trim().Length
- '但前行没有内容直接返回
- If iLineLength = 0 Then
- Return
- End If
- ' 解析函数名称
- Dim bResult As Boolean = ParseFunctionDescription(strFunText.Trim())
- If bResult = False Then
- lItemList.Clear()
- Return
- End If
- Dim pcount As Integer = 0
- Dim rcount As Integer = 0
- Dim strSpace As String = ""
- Dim iSpaceIndex As Integer
- For iSpaceIndex = 1 To preSpaceCount
- strSpace = strSpace + " "
- Next
- outText.Insert(strSpace + "//-----------------------------------------------------------" + vbCrLf)
- For iItemIndex = 0 To lItemList.Count - 1
- idata = lItemList.Item(iItemIndex)
- Select Case idata.itemType
- Case 1
- outText.Insert(strSpace + "// " + vbCrLf)
- outText.Insert(strSpace + "// 函数名称:" + idata.itemText + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- Case 2
- If idata.itemText = "无参数" Then
- outText.Insert(strSpace + "// 参 数: -无" + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- Else
- If pcount = 0 Then
- outText.Insert(strSpace + "// 参 数:" + vbCrLf)
- End If
- pcount = pcount + 1
- outText.Insert(strSpace + "// - " + idata.itemText + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- End If
- Case 3
- If rcount = 0 Then
- outText.Insert(strSpace + "// 返 回:" + idata.itemText + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- End If
- rcount = rcount + 1
- Case 4
- Case 5
- End Select
- Next
- outText.Insert(strSpace + "// 函数作用:" + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- outText.Insert(strSpace + "// 修改日期:" + Date.Today.ToLongDateString() + " By YuJian" + vbCrLf)
- outText.Insert(strSpace + "// " + vbCrLf)
- outText.Insert(strSpace + "//-----------------------------------------------------------" + vbCrLf)
- lItemList.Clear() '清楚所有元素
- End Sub
- End Module
将宏项目加载后, 在宏资源器中,便会发现该项目有三个宏方法:
FileDescription : 是为整个文件添加注释
FunctionRemark: 为函数添加注释------(很粗糙的 信息需要自己输入,这是中间函数 )
MakeFunctionRemark: 自动为函数添加注释
我们需要的是 FileDescription 和MarkFunctionRemark这两个宏函数。
分别双击它们,便可建立文件注释和函数注释。 不过,建立函数注释前, 光标必须位于函数定义处。
c) 对语句进行说明
- /****************************** add by yujian 2012年5月8日 10:19 *************************************/
- if (FontType&RASTER_FONTTYPE)
- {
- return TRUE;
- }
- /****************************** add by yujian 2012年5月8日 10:19 *************************************/
代码:
- ' --------------------------------------------------
- ' 生成函数语句说明注释
- ' --------------------------------------------------
- Sub FunctionRemark()
- Dim preSpaceCount As Integer = 0 ' 注释前面的空格数, 缩进(单位:字符)
- Dim outTextDoc As TextDocument
- Dim outText As EditPoint
- Dim iCurrentLineNumber As Integer
- ' iCurrentLineNumber = DTE.ActiveDocument.Selection.CurrentLine '.ToString()
- iCurrentLineNumber = DTE.ActiveDocument.Selection.TopLine
- outTextDoc = DTE.ActiveDocument.Object("TextDocument")
- outText = outTextDoc.StartPoint.CreateEditPoint()
- ' 移动文本输入点到指定行上
- outText.MoveToLineAndOffset(iCurrentLineNumber - 1, 1)
- Dim strSpace As String = ""
- Dim iSpaceIndex As Integer
- For iSpaceIndex = 1 To preSpaceCount
- strSpace = strSpace + " "
- Next
- outText.Insert(strSpace + "/****************************** " + " add by yujian " + Date.Today.ToLongDateString() + " " + Date.Now.Hour.ToString + ":" + Date.Now.Minute.ToString + " *************************************/" + vbCrLf)
- ' outText.Insert(strSpace + vbCrLf)
- ' outText.Insert(strSpace + "/****************************** " + " add by yujian " + Date.Today.ToLongDateString() + " " + Date.Now.Hour.ToString + ":" + Date.Now.Minute.ToString + " *************************************/" + vbCrLf)
- iCurrentLineNumber = DTE.ActiveDocument.Selection.BottomLine + 1
- ' 移动文本输入点到指定行上
- outText.MoveToLineAndOffset(iCurrentLineNumber + 1, 1)
- outText.Insert(strSpace + "/****************************** " + " add by yujian " + Date.Today.ToLongDateString() + " " + Date.Now.Hour.ToString + ":" + Date.Now.Minute.ToString + " *************************************/" + vbCrLf)
- End Sub
2 建立快捷键
在源项目工程中【不是在宏项目中】 依次选择
工具→选项→环境→键盘
设置用来运行宏的快捷键,注意不要和已有的快捷键相冲突。
比如: 建立文件注释 快捷键为: ALT+A
建立函数注释 快捷键为: ALT+R
参考资料:
http://z.chao.yue.blog.163.com/blog/static/13086262020114210373211/
http://www.cppblog.com/eday/archive/2007/07/15/28079.html
http://pppboy.blog.163.com/blog/static/3020379620091030111611858/
- vs2005 为函数自动添加注释
- vs2005 为函数自动添加注释
- vs2005 为函数自动添加注释
- VS 2005 为函数自动添加注释
- vs 为函数自动添加注释
- 为VS2005模板添加自定义注释
- 为类,函数代码自动添加版权注释信息
- VS2012自动添加函数注释
- VS中为类,函数代码自动添加版权注释信息
- VS中为类,函数代码自动添加版权注释信息
- Visual Studio 自动添加函数注释宏
- 使用DocStrings为python函数添加注释
- VS2010利用宏为函数添加注释
- 为SciTE添加命令,自动添加注释(Lua)
- vim自动生成main函数和自动添加注释
- 如何在VS2005中自动添加事件处理函数?
- 如何在VS2005中自动添加事件处理函数?
- 如何在VS2005中自动添加事件处理函数?
- Unity时钟定时器插件——Vision Timer源码分析之一
- 无聊写排序之 ----第K最值(nth_element)
- 结构体成员偏移量
- POJ - 1338 Ugly Numbers-STL的灵活运用
- poj3621 最优比例生成环
- vs2005 为函数自动添加注释
- Unity笔记 SPACE SHOOTER 实例详解
- Android Application使用
- 最小公倍数问题
- Primeton EOS开发配置
- 快速画程序流程图
- 基因算法介绍
- Volley的Https请求
- iOS开发使用nib进行界面设计并跳转