转自:http://blog.csdn.net/jiejiaozhufu/article/details/16357721
- 前言
甚是苦恼
写吧 怕麻烦
不写吧 似乎这代码估计自己都看不懂
权衡之下
似乎找一个自动写注释的方法最靠谱
一直在VS下开发
偶尔听人说过有一个宏工具可以帮助开发者快速注释
但是寻匿了很久
硬是木有找到
后来才发现
原来自VS2012以来,这个宏工具去掉了
但是我使用的编译器恰恰是VS2012和VS2013
所以...
最近换了个电脑,
直接装个VS2010
今天又是周末
于是就倒腾这个宏工具来着的
虽然没学过VB
但是有强大的网络在+搜素引擎
于是乎
便有了这个模板
- 模板代码如下:
- Imports System
- Imports EnvDTE
- Imports EnvDTE80
- Imports EnvDTE90
- Imports EnvDTE90a
- Imports EnvDTE100
- Imports System.Diagnostics
- Imports System.Text
- Imports System.Text.RegularExpressions
- Imports System.IO
- Imports System.Collections.Specialized
- Public Module MyAutoCommemt '这里要与保存的Module文件名保持一致,不然无法调用宏
- Function AlignTitle(ByVal title As String) As String
- title += Space(16 - title.Length)
- AlignTitle = " *" + title
- End Function
- Function AlignValue(ByVal value As String)
- value += Space(16 - value.Length)
- AlignValue = value
- End Function
- Sub ParamOnce()
- Dim objSel As TextSelection
- objSel = CType(DTE.ActiveDocument.Selection, TextSelection)
- DTE.UndoContext.Open("FileCreateEn")
- objSel.StartOfDocument(False)
- objSel.Insert("#pragma once" + vbNewLine)
- DTE.UndoContext.Close()
- End Sub
- Public Sub FileCreateEn()
- 'DESCRIPTION 文件签名
- Dim fil_info(64) As String
- Dim i As Integer
- i = 0
- fil_info(i) = "//Copyright (c) 2013 hustfisher All Rights Reserved"
- i += 1
- fil_info(i) = "/*********************************************************************************************"
- i += 1
- fil_info(i) = AlignTitle("file name")
- fil_info(i) += " : "
- fil_info(i) += DTE.ActiveDocument.Name
- i += 1
- fil_info(i) = AlignTitle("description")
- fil_info(i) += " : "
- i += 1
- fil_info(i) = AlignTitle("create time")
- fil_info(i) += " : "
- fil_info(i) += Date.Now.ToString()
- i += 1
- fil_info(i) = AlignTitle("author name")
- fil_info(i) += " : "
- fil_info(i) += "hustfisher"
- i += 1
- fil_info(i) = AlignTitle("author email")
- fil_info(i) += " : "
- fil_info(i) += "hustfisher@yeah.net"
- i += 1
- fil_info(i) = AlignTitle("author blog")
- fil_info(i) += " : "
- fil_info(i) += "http://blog.csdn.net/jiejiaozhufu"
- i += 1
- fil_info(i) = AlignTitle("version")
- fil_info(i) += " : "
- fil_info(i) += "1.0"
- i += 1
- fil_info(i) = " **********************************************************************************************/"
- i += 1
- Dim Description As New StringBuilder
- For v = 0 To i
- Description.AppendFormat("{0}{1}", fil_info(v), vbNewLine)
- Next
- '插入文件头部
- Dim objSel As TextSelection
- objSel = CType(DTE.ActiveDocument.Selection, TextSelection)
- DTE.UndoContext.Open("FileCreateEn")
- objSel.StartOfDocument(False)
- objSel.Insert(Description.ToString())
- DTE.UndoContext.Close()
- End Sub
- Public Sub FileModifyEn()
- 'modify file
- Dim fil_info(64) As String
- Dim i As Integer
- i = 0
- fil_info(i) = "//Copyright (c) 2013 hustfisher All Rights Reserved"
- i += 1
- fil_info(i) = "/*********************************************************************************************"
- i += 1
- fil_info(i) = AlignTitle("file name")
- fil_info(i) += " : "
- fil_info(i) += DTE.ActiveDocument.Name
- i += 1
- fil_info(i) = AlignTitle("description")
- fil_info(i) += " : "
- i += 1
- fil_info(i) = AlignTitle("modify time")
- fil_info(i) += " : "
- fil_info(i) += Date.Now.ToString()
- i += 1
- fil_info(i) = AlignTitle("author name")
- fil_info(i) += " : "
- fil_info(i) += "hustfisher"
- i += 1
- fil_info(i) = AlignTitle("author email")
- fil_info(i) += " : "
- fil_info(i) += "hustfisher@yeah.net"
- i += 1
- fil_info(i) = AlignTitle("author blog")
- fil_info(i) += " : "
- fil_info(i) += "http://blog.csdn.net/jiejiaozhufu"
- i += 1
- fil_info(i) = AlignTitle("version")
- fil_info(i) += " : "
- fil_info(i) += "1.1"
- i += 1
- fil_info(i) = " **********************************************************************************************/"
- i += 1
- Dim Description As New StringBuilder
- For v = 0 To i
- Description.AppendFormat("{0}{1}", fil_info(v), vbNewLine)
- Next
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.StartOfLine()
- DocSel.NewLine()
- DocSel.LineUp()
- DocSel.Insert(Description.ToString())
- End Sub
- Sub FunctionSignEn()
- 'function
- Dim data As New StringBuilder
- With data
- .Append(vbNewLine)
- .AppendFormat("/*********************************************************************************************{0}", vbNewLine)
- .AppendFormat(" *function name{0}: {1}", vbTab, vbNewLine)
- .AppendFormat(" *create time{0}: {1} {2}", vbTab, Date.Now.ToString(), vbNewLine)
- .AppendFormat(" *author name{0}: {1} {2}", vbTab, "hustfisher", vbNewLine)
- .AppendFormat(" *func version{0}: 1.0 {1}", vbTab, vbNewLine)
- .AppendFormat(" *description {0}: {1}", vbTab, vbNewLine)
- .AppendFormat(" *para title {0}: IN/OUT{1}{2}TYPE{3}{4}{5}DESCRIPTION{6}", vbTab, vbTab, vbTab, vbTab, vbTab, vbTab, vbNewLine)
- .AppendFormat(" *parameter 1{0}: {1}", vbTab, vbNewLine)
- .AppendFormat(" *return type {0}: {1}", vbTab, vbNewLine)
- .AppendFormat(" *********************************************************************************************/")
- End With
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.StartOfLine()
- DocSel.NewLine()
- DocSel.LineUp()
- DocSel.Insert(data.ToString())
- End Sub
- Sub FunctionSignEnEx()
- 'function
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- Dim line As String
- DocSel.SelectLine()
- line = DocSel.Text().ToString()
- line = Trim(line)
- Dim name As String
- Dim para As String
- Dim return_type As String
- Dim pos As Integer
- 'type
- pos = line.IndexOf(" ")
- If pos = -1 Then
- Return
- End If
- return_type = Mid(line, 1, pos)
- 'name
- Dim pos1 As Integer
- pos1 = line.IndexOf("(")
- If pos1 = -1 Then
- Return
- End If
- name = Mid(line, pos + 1, pos1 - pos).Trim
- 'para
- pos = pos1 + 1
- pos1 = line.LastIndexOf(")")
- If pos1 = -1 Then
- Return
- End If
- para = Mid(line, pos + 1, pos1 - pos).Trim()
- Dim words() As String
- words = Split(para, ",")
- Dim func_info(32) As String
- Dim i As Integer
- i = 0
- func_info(i) = "/*********************************************************************************************"
- i += 1
- func_info(i) = AlignTitle("function name")
- func_info(i) += " : "
- func_info(i) += name
- i += 1
- func_info(i) = AlignTitle("create time")
- func_info(i) += " : "
- func_info(i) += Date.Now.ToString()
- i += 1
- func_info(i) = AlignTitle("author name")
- func_info(i) += " : "
- func_info(i) += "hustfisher"
- i += 1
- func_info(i) = AlignTitle("version")
- func_info(i) += " : "
- func_info(i) += "1.0"
- i += 1
- func_info(i) = AlignTitle("description")
- func_info(i) += " : "
- i += 1
- func_info(i) = AlignTitle("return type")
- func_info(i) += " : "
- func_info(i) += return_type
- i += 1
- func_info(i) = AlignTitle("parameter list")
- func_info(i) += " : "
- func_info(i) += AlignValue("IN/OUT")
- func_info(i) += AlignValue("TYPE")
- func_info(i) += AlignValue("NAME")
- func_info(i) += AlignValue("DESCRIPTION")
- i += 1
- Dim j As Integer
- j = 1
- Dim paraBuf As String
- For Each v In words
- func_info(i) = "parameter "
- func_info(i) += j.ToString()
- func_info(i) = AlignTitle(func_info(i))
- func_info(i) += " : "
- func_info(i) += AlignValue("IN")
- paraBuf = v.Trim()
- pos = paraBuf.LastIndexOf(" ")
- If -1 = pos Then
- func_info(i) += AlignValue("void")
- Else
- func_info(i) += AlignValue(Mid(paraBuf, 1, pos).Trim())
- func_info(i) += AlignValue(Mid(paraBuf, pos + 1, paraBuf.Length).Trim())
- End If
- i += 1
- j += 1
- Next
- Dim Description As New StringBuilder
- For v = 0 To i - 1
- Description.AppendFormat("{0}{1}", func_info(v), vbNewLine)
- Next
- Description.AppendFormat(" *********************************************************************************************/{0}", vbNewLine)
- DocSel.StartOfLine()
- DocSel.LineUp()
- DocSel.Insert(Description.ToString)
- End Sub
- Sub AddPara()
- ActiveDocument.Selection.Text = "*parameter 2" + vbTab + ":"
- End Sub
- Sub ClassSignEn()
- 'function
- Dim data As New StringBuilder
- With data
- .Append(vbNewLine)
- .AppendFormat("/*********************************************************************************************{0}", vbNewLine)
- .AppendFormat(" *calss name : {0}", vbNewLine)
- .AppendFormat(" *create time : {0} {1}", Date.Now.ToString(), vbNewLine)
- .AppendFormat(" *author name : {0} {1}", "hustfisher", vbNewLine)
- .AppendFormat(" *calss vers : 1.0 {0}", vbNewLine)
- .AppendFormat(" *description : {0}", vbNewLine)
- .AppendFormat(" *********************************************************************************************/")
- End With
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.StartOfLine()
- DocSel.NewLine()
- DocSel.LineUp()
- DocSel.Insert(data.ToString())
- End Sub
- Sub ModifyTag()
- 'DESCRIPTION 增添修改
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.EndOfLine()
- ActiveDocument.Selection.Text = "/* hustfisher modified at " + Date.Now.ToString() + " */"
- End Sub
- Sub TodoTag()
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.EndOfLine()
- ActiveDocument.Selection.Text = " // TODO:" + Date.Now.ToString()
- End Sub
- Sub AddCommentC()
- Dim data As New StringBuilder
- With data
- .Append(vbNewLine)
- .AppendFormat("/*********************************************************************************************{0}", vbNewLine)
- .AppendFormat(" *create time : {0} {1} author : {2} {3}", Date.Now.ToString(), vbTab, "hustfisher", vbNewLine)
- .AppendFormat(" *description : {0}", vbNewLine)
- .AppendFormat(" *********************************************************************************************/")
- End With
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.StartOfLine()
- DocSel.NewLine()
- DocSel.LineUp()
- DocSel.Insert(data.ToString())
- End Sub
- Sub AddComment()
- Dim DocSel As EnvDTE.TextSelection
- DocSel = DTE.ActiveDocument.Selection
- DocSel.EndOfLine()
- ActiveDocument.Selection.Text = " // Add by hustfisher " + Date.Now.ToString
- End Sub
- End Module
- 使用注意事项
然后把模板文件考进去,不过需要注意的是,文件名和末班名需要相同
否则...
- 功能
- 文件创建注释模板
- 文件修改注释模板
- 类注释模板
- 函数注释模板
- 自动函数注释(我觉得这个很不错)
- TODO Tag模板
- C语言格式的一般注释模板
- C++语言格式的一般注释模板
- 注释模板效果
- //Copyright (c) 2013 hustfisher All Rights Reserved
- /*********************************************************************************************
- *file name : main.cpp
- *description :
- *create time : 2013/11/16 15:53:39
- *author name : hustfisher
- *author email : hustfisher@yeah.net
- *author blog : http://blog.csdn.net/jiejiaozhufu
- *version : 1.0
- **********************************************************************************************/
- #include "normalise.h"
- #include <Windows.h>
- #include <stdio.h>
- #define FRAME_IN_NUM (128)
- #define LOOP_TIMES (60240)
- #define ALIGN_SIZE (64)
- /*********************************************************************************************
- *function name : InitData
- *create time : 2013/11/16 15:53:47
- *author name : hustfisher
- *version : 1.0
- *description :
- *return type : void
- *parameter list : IN/OUT TYPE NAME DESCRIPTION
- *parameter 1 : IN float* pData
- *parameter 2 : IN size_t nCount
- *********************************************************************************************/
- void InitData(float* pData, size_t nCount)
- {
- int my_sign[] = {1, -1};
- srand(GetTickCount());
- for (size_t i=0; i<nCount; i++)
- {
- pData[i] = rand()%10*my_sign[rand()%2]*1.0f;
- }
- }
- /*********************************************************************************************
- *function name : main
- *create time : 2013/11/16 15:53:53
- *author name : hustfisher
- *version : 1.0
- *description :
- *return type : int
- *parameter list : IN/OUT TYPE NAME DESCRIPTION
- *parameter 1 : IN void
- *********************************************************************************************/
- int main()
- {
- return 0;
- }