• Visual Studio宏注释模板


    • 前言
             有时写代码需要写注释的时候

             甚是苦恼

             写吧 怕麻烦

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

             权衡之下

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

             一直在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
    

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

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

             否则...


    • 功能
    1. 文件创建注释模板
    2. 文件修改注释模板
    3. 类注释模板
    4. 函数注释模板
    5. 自动函数注释(我觉得这个很不错)
    6. TODO Tag模板
    7. C语言格式的一般注释模板
    8. 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;
      }

  • 相关阅读:
    自兴人工智能——字典
    自兴人工智能——字符串
    列表与元组——自兴人工智能
    自兴人工智能——通用序列操作
    自兴人工智能——Python运算符和操作对象
    自兴人工智能------Python语言的变量认识及操作
    使用opencv-python框出人脸
    使用opencv-python录视频
    (自兴人工智能)python字符串
    (自兴人工智能)python元组
  • 原文地址:https://www.cnblogs.com/arbboter/p/4225202.html
Copyright © 2020-2023  润新知