zoukankan      html  css  js  c++  java
  • VS.NET 查找未使用过的方法

    Imports System
    Imports EnvDTE
    Imports EnvDTE80
    Imports EnvDTE90
    Imports System.Diagnostics

    Public Module SearchALlReference
        Sub SearchAllDocuments()
            For Each doc As Document In DTE.Documents
                If doc.Name.EndsWith(".cs") Then
                    SearchAllFunctionReference(doc)
                End If

            Next
        End Sub

        Sub SearchAllFunctionReference(byval doc As Document)
            Dim textSelection As EnvDTE.TextSelection
            Dim codeElement As EnvDTE.CodeElement
            Dim codeElements As EnvDTE.CodeElements
            Dim classElement As EnvDTE.CodeElement
            Dim codeModel As EnvDTE.FileCodeModel = doc.ProjectItem.FileCodeModel
            Dim i, j, k As Integer

            For i = 1 To codeModel.CodeElements.Count
                codeElement = codeModel.CodeElements.Item(i)
                If codeElement.Kind = vsCMElement.vsCMElementNamespace Then
                    'クラスを取得
                    Dim classElements = codeElement.Children()

                    For j = 1 To codeElement.Children().Count
                        If codeElement.Children().Item(j).Kind = vsCMElement.vsCMElementClass Then
                            classElement = codeElement.Children().Item(j)
                            For k = 1 To classElement.Children.Count
                                If classElement.Children().Item(k).Kind = vsCMElement.vsCMElementFunction Then
                                    '参照の検索
                                    Dim cnt As Integer
                                    cnt = SearchReference(classElement.Children().Item(k), doc)
                                    'If cnt <= 1 Then MsgBox(classElement.Children().Item(k).Name)
                                    If cnt <= 1 Then ShowNotRefenceToOutputWindow(classElement.Name & " : " & classElement.Children().Item(k).Name & Environment.NewLine)

                                End If
                            Next
                        End If
                    Next
                End If
            Next

        End Sub

        Function ShowNotRefenceToOutputWindow(ByVal content As String)
            Dim outputWindowPane As OutputWindowPane
            outputWindowPane = GetOutputWindowPane("出力")
            outputWindowPane.Clear()

            outputWindowPane.OutputString(content)
        End Function
        Function GetOutputWindowPane(ByVal Name As String, Optional ByVal show As Boolean = True) As OutputWindowPane
            Dim window As Window
            Dim outputWindow As OutputWindow
            Dim outputWindowPane As OutputWindowPane

            window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
            If show Then window.Visible = True
            outputWindow = window.Object
            Try
                outputWindowPane = outputWindow.OutputWindowPanes.Item(Name)
            Catch e As System.Exception
                outputWindowPane = outputWindow.OutputWindowPanes.Add(Name)
            End Try
            outputWindowPane.Activate()
            Return outputWindowPane
        End Function
        Function SearchReference(ByVal codeElement As EnvDTE.CodeElement, ByVal doc As Document) As Integer
            Dim textSelection As EnvDTE.TextSelection
            Dim resultcount As Integer
            Dim rescaption As String

            Dim regex As New System.Text.RegularExpressions.Regex(" - [0-9]+")

            textSelection = doc.Selection
            Try
                If Not (codeElement Is Nothing) Then
                    textSelection.MoveToPoint(codeElement.GetStartPoint(vsCMPart.vsCMPartHeader))
                    'エレメント名選択
                    textSelection.FindText(codeElement.Name, vsFindOptions.vsFindOptionsMatchCase)
                    'すべての参照の検索を実行
                    doc.Activate()
                    DTE.ExecuteCommand("Edit.FindAllReferences")
                    rescaption = DTE.Windows.Item(Constants.vsWindowKindFindSymbolResults).Caption

                    '検索結果ウィンドウのタイトルから件数を取得
                    resultcount = CType(regex.Match(rescaption).Value.Substring(3), Integer)

                    Return resultcount

                End If
            Catch ex As Exception
            End Try

        End Function


    End Module

  • 相关阅读:
    asp.net程序集冲突解决笔记(未能加载文件或程序集"XXXXXXXXX")
    让Asp.net mvc WebAPI 支持OData协议进行分页查询操作
    jQuery Select 自动选择默认值
    nuget在jenkins上不能自动还原项目依赖包---笔记
    Ubuntu 14.04 server ssh 远程服务遇到的一点事儿
    Unbunt vi 编辑器键盘按键不正确的一次经历与解决方案
    Ubuntu root 密码 sudo passwd
    Visual Studio 2015 下 编译 libpng
    .NET使用Com组件的一点点教训笔记~
    Linux透明大页(Transparent Huge Pages)对ES性能对影响
  • 原文地址:https://www.cnblogs.com/si812cn/p/1645259.html
Copyright © 2011-2022 走看看