zoukankan      html  css  js  c++  java
  • 用VS2003的宏统计项目中文件和程序行数

    先随便录制一个宏,然后录制的宏代码修改如下
    该程序可以统计项目中一共有多少个文件,一共有多少行程序,随便写的,有bug请指出。谢谢
    如果项目中文件很多,统计速度会很慢,如果需要中断,可以随时双击任务栏右边的宏运行的图标
    Option Strict Off
    Option Explicit Off
    Imports EnvDTE
    Imports System.Diagnostics
    Imports System.Data

    Public Module RecordingModule
        
    Private dt As New DataTable
        
    Sub GetProject(ByVal items As ProjectItems)
            
    For Each item As EnvDTE.ProjectItem In items
                
    If item.ProjectItems.Count > 0 Then
                    GetProject(item.ProjectItems)
                
    End If
                Count(item)
            
    Next
        
    End Sub

        
    Sub Count(ByVal item As EnvDTE.ProjectItem)
            
    Dim fileName As String = item.Name.ToLower()
            
    Dim extName As String
            
    If fileName.IndexOf("."< 0 Then
                extName 
    = "Folder"
            
    Else
                extName 
    = fileName.Substring(fileName.LastIndexOf("."))
            
    End If
            
    Dim ArrayDr As DataRow() = dt.Select("ExtName='" + extName + "'")
            
    Dim dr As DataRow
            
    If ArrayDr.Length = 0 Then
                dr 
    = dt.NewRow()
                dr(
    "ExtName"= extName
                dt.Rows.Add(dr)
            
    Else
                dr 
    = ArrayDr(0)
            
    End If
            
    If Not (dr("File"Is System.DBNull.Value) Then
                dr(
    "File"= CType(dr("File"), System.Int32) + 1
            
    Else
                dr(
    "File"= 1
            
    End If
            
    Try
                
    Dim objWindow As Window = item.Open(Constants.vsViewKindCode)
                
    Dim objDocument As Document = item.Document
                
    Dim objTextDocument As TextDocument = objDocument.Object("TextDocument")
                
    Dim strDocumentText As String = objTextDocument.StartPoint.CreateEditPoint().GetText(objTextDocument.EndPoint)
                
    If Not (dr("Line"Is System.DBNull.Value) Then
                    dr(
    "Line"= CType(dr("Line"), System.Int32) + strDocumentText.Split(vbCrLf).Length()
                
    Else
                    dr(
    "Line"= strDocumentText.Split(vbCrLf).Length()
                
    End If
                DTE.ExecuteCommand(
    "Window.CloseDocumentWindow")
                DTE.ActiveWindow.Close(vsSaveChanges.vsSaveChangesNo)
            
    Catch
            
    End Try
        
    End Sub


        
    Sub TemporaryMacro()
            dt 
    = New DataTable
            
    If Not dt.Columns.Contains("ExtName"Then
                dt.Columns.Add(
    "ExtName", System.Type.GetType("System.String")) '扩展名
                dt.Columns.Add("File", System.Type.GetType("System.Int32")) '行数
                dt.Columns.Add("Line", System.Type.GetType("System.Int32")) '行数
                dt.Columns.Add("Cha", System.Type.GetType("System.Int32")) '字符数量
            End If
            
    Dim proj As Project = DTE.ActiveSolutionProjects(0)
            GetProject(proj.ProjectItems())
            
    Dim outPutStr As String = "FileType".PadRight(10& "File".PadLeft(10& "Line".PadLeft(10& "    " & vbCrLf
            
    For Each dr As DataRow In dt.Rows
                outPutStr 
    += dr("ExtName").ToString().PadRight(10& dr("File").ToString().PadLeft(10& dr("Line").ToString().PadLeft(10& vbCrLf
            
    Next
            
    MsgBox(outPutStr)
        
    End Sub

    End Module
  • 相关阅读:
    连接H3C交换机的Console口连不上
    WIN7远程桌面连接--“发生身份验证错误。要求的函数不受支持”
    关于SSD Trim功能
    电源适配器和充电器的区别和关系
    处理win7任务栏通知区域图标异常问题
    VMware Workstation 学习笔记
    关于“找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上。”的解决
    Win7硬盘的AHCI模式
    电脑没有网络的故障分析
    通过Performance Log确定磁盘有性能问题?
  • 原文地址:https://www.cnblogs.com/wormday/p/431055.html
Copyright © 2011-2022 走看看