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

  • 相关阅读:
    Android开发如何定制framework层服务
    Intellij IDEA通过SVN导入基于Springboot的maven项目以及对已有项目做更新
    intelliJ IDEA 怎么添加本地的idea web项目
    Android热修复之AndFix使用教程
    iOS友盟分享的使用总结
    iOS 传感器集锦
    IOS CALayer的属性和使用
    Swift使用Alamofire实现网络请求
    Android踩坑随笔Fragment中onActivityResult方法不被调用
    上周热点回顾(4.30-5.6)团队
  • 原文地址:https://www.cnblogs.com/si812cn/p/1645259.html
Copyright © 2011-2022 走看看