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

  • 相关阅读:
    《A First Course in Probability》-chaper4-离散型随机变量-随机变量函数的期望
    《训练指南》——7.17
    《A First Course in Probability》-chaper4-离散型随机变量-负二项分布
    《A First Course in Probability》-chaper5-连续型随机变量-正态分布
    《University Calculus》-chaper8-无穷序列和无穷级数-比值审敛法
    Scheme实现二叉查找树及基本操作(添加、删除、并、交)
    hdu5884(多叉哈夫曼树)
    uva10857(状态压缩DP)
    hdu4055
    Controlled Tournament(状态压缩DP)
  • 原文地址:https://www.cnblogs.com/si812cn/p/1645259.html
Copyright © 2011-2022 走看看