甚是苦恼
写吧 怕麻烦
不写吧 似乎这代码估计自己都看不懂
权衡之下
似乎找一个自动写注释的方法最靠谱
一直在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) += "[email protected]" 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) += "[email protected]" 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
然后把模板文件考进去,不过需要注意的是,文件名和末班名需要相同
否则...
//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 : [email protected] *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; }