您的位置:首页 > 其它

Visual Studio宏注释模板

2016-03-31 13:39 330 查看
转自:http://blog.csdn.net/jiejiaozhufu/article/details/16357721

前言

有时写代码需要写注释的时候

甚是苦恼

写吧 怕麻烦

不写吧 似乎这代码估计自己都看不懂

权衡之下

似乎找一个自动写注释的方法最靠谱

一直在VS下开发

偶尔听人说过有一个宏工具可以帮助开发者快速注释

但是寻匿了很久

硬是木有找到

后来才发现

原来自VS2012以来,这个宏工具去掉了

但是我使用的编译器恰恰是VS2012和VS2013

所以...

最近换了个电脑,

直接装个VS2010

今天又是周末

于是就倒腾这个宏工具来着的

虽然没学过VB

但是有强大的网络在+搜素引擎

于是乎

便有了这个模板

模板代码如下:

[vb] view
plain copy

print?

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

使用注意事项

模板使用的时候,在VS2010下按快捷键alt+F11或者在菜单栏下的tools 下打开宏管理器,此时在MyCacros下新建一个文件

然后把模板文件考进去,不过需要注意的是,文件名和末班名需要相同

否则...

功能

文件创建注释模板
文件修改注释模板
类注释模板
函数注释模板
自动函数注释(我觉得这个很不错)
TODO Tag模板
C语言格式的一般注释模板
C++语言格式的一般注释模板

注释模板效果

[cpp] view
plain copy

print?

//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;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: