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

  • 相关阅读:
    pycharm中以pytest的方式运行测试用例
    jmeter 固定吞吐量控制器 Constant Throughput Timer
    jmeter 循环控制器使用
    jmeter 24个常用函数
    jmeter 参数化取唯一值
    jmeter之json提取器
    【转】Jmeter如何把响应数据的结果保存到本地的一个文件
    jmeter测试并发
    jmeter参数为Excel表格
    jmeter接口调用
  • 原文地址:https://www.cnblogs.com/si812cn/p/1645259.html
Copyright © 2011-2022 走看看