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

  • 相关阅读:
    什么是递归神经网络
    2020年蜂窝网络连接超过110亿台设备
    伊朗Cisco路由器遭黑客攻击 全国互联网几乎瘫痪
    看了才知道!伊朗黑客组织原来这么牛
    美国知名Cloudflare网络公司遭中国顶尖黑客攻击
    如何对Web服务器进行飓风级防御
    美国的科技公司是如何使用加密的DNS
    揭秘网络黑客常见的6种必用攻击手段
    物联网是什么?您的家用电器从黑客手中安全吗
    不可不知!设置什么密码才不易被黑客破解
  • 原文地址:https://www.cnblogs.com/si812cn/p/1645259.html
Copyright © 2011-2022 走看看