VS2010利用宏为函数添加注释

来源:互联网 发布:微淘号达人和淘宝达人 编辑:程序博客网 时间:2024/05/06 00:59

为了阅读代码及修复BUG的方便,公司里面函数的注释都是固定的格式,每次添加注释都是从原来写好的地方复制来一段,然后一项一项的去修改。作为程序员大军中的一员,要发挥懒的特性,一懒到底,网上查了好久,再参考VC6.0里自带的宏,终于勉勉强强写了一个宏来自动添加函数注释,一般的函数都可以用了,有小错误的地方也只能手动改了。先上个公司规定的函数的格式:

// ---------------------------------------------------------------// 名称: CopyData// 功能: 图元之间拷贝数据// 变量: [in,out] des -- 目标图元//       [in] src -- 原始图元// 返回: 无// 编写: 天蓬,20121009// ---------------------------------------------------------------

下面是参考了N多文章查了N多资料弄来的宏代码(没办法,谁让咱是菜鸟呢):

    Sub FunctionSign()        'DESCRIPTION 函数签名        Dim obj        obj = Now()        Dim mo As Integer        Dim da As Integer        Dim funct As String     '保存选择的行        Dim ret As String        Dim func As String      '去除空格后的整个函数原型        Dim fName As String     '函数名        Dim fPara As String     '函数参数字符串        Dim paras() As String        Dim temps() As String        Dim flag1, flag2, flag3 As Integer        Dim DocSel As EnvDTE.TextSelection        DocSel = DTE.ActiveDocument.Selection        If DocSel.Text = "" Then            Exit Sub        End If        funct = DocSel.Text        func = Trim(DocSel.Text)        flag1 = InStr(func, " ")        ret = Left(func, flag1 - 1)        flag1 = InStr(func, "::")        If flag1 = 0 Then            flag1 = InStr(func, " ")            func = Right(func, Len(func) - flag1)        Else            func = Right(func, Len(func) - flag1 - 1)        End If        flag2 = InStr(func, "(")        fName = Left(func, flag2 - 1)        func = Right(func, Len(func) - flag2)        flag3 = InStr(func, ")")        fPara = Left(func, flag3 - 1)        paras = Split(fPara, ",")        For i As Integer = 0 To paras.Length - 1            paras(i) = Trim(paras(i))            temps = Split(paras(i))            paras(i) = temps(temps.Length - 1)        Next        DocSel.NewLine()        DocSel.Text = "// ---------------------------------------------------------------"        DocSel.NewLine()        DocSel.Text = "// 名称: " + fName        DocSel.NewLine()        DocSel.Text = "// 功能: "        DocSel.NewLine()        DocSel.Text = "// 变量: "        If paras.Length = 0 Then            DocSel.Text = "无"        ElseIf paras.Length = 1 And paras(0) = "" Then            DocSel.Text = "无"        Else            DocSel.Text = "[in] " + paras(0) + " -- "            For j As Integer = 1 To paras.Length - 1                DocSel.NewLine()                DocSel.Text = "//       [in] " + paras(j) + " -- "            Next        End If        DocSel.NewLine()        DocSel.Text = "// 返回: "        If ret = "void" Then            DocSel.Text = "无"        End If        DocSel.NewLine()        DocSel.Text = "// 编写: 天蓬," + CStr(Year(obj))        mo = Month(obj)        da = Day(obj)        If mo < 10 Then            DocSel.Text = "0" + CStr(mo)        Else            DocSel.Text = CStr(mo)        End If        If da < 10 Then            DocSel.Text = "0" + CStr(da)        Else            DocSel.Text = CStr(da)        End If        DocSel.NewLine()        DocSel.Text = "// ---------------------------------------------------------------"        DocSel.NewLine()        DocSel.Text = funct    End Sub

先凑合用着吧,等熟悉一些了再整完美一些。


2014.6.12修改:

上面的宏需要选中整个函数头部才能正常使用,不太方便,所以可以添加一句

DocSel.SelectLine()

DocSel = DTE.ActiveDocument.Selection

这一句代码之后。这样,只要把光标放到函数头部所在行就可以了。

0 0
原创粉丝点击