Visual Studio regex zu entfernen Sie alle Kommentare und leere Zeilen in VB.NET code mithilfe von Makros

Ich habe versucht, entfernen Sie alle Kommentare und leere Zeilen in einer Datei mit Hilfe eines Makros. Nun kam ich mit dieser Lösung, die löscht die Kommentare(es gibt einige bug unten beschrieben), ist aber nicht in der Lage, löschen Sie die leeren Zeilen dazwischen -

Sub CleanCode()
    Dim regexComment As String = "(REM [\d\D]*?[\r\n])|(?<SL>\'[\d\D]*?[\r\n])"
    Dim regexBlank As String = "^[\s|\t]*$\n"
    Dim replace As String = ""

    Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection
    Dim editPoint As EnvDTE.EditPoint

    selection.StartOfDocument()
    selection.EndOfDocument(True)

    DTE.UndoContext.Open("Custom regex replace")
    Try
        Dim content As String = selection.Text
        Dim resultComment As String = System.Text.RegularExpressions.Regex.Replace(content, regexComment, replace)
        Dim resultBlank As String = System.Text.RegularExpressions.Regex.Replace(resultComment, regexBlank, replace)
        selection.Delete()
        selection.Collapse()
        Dim ed As EditPoint = selection.TopPoint.CreateEditPoint()
        ed.Insert(resultBlank)
    Catch ex As Exception
        DTE.StatusBar.Text = "Regex Find/Replace could not complete"
    Finally
        DTE.UndoContext.Close()
        DTE.StatusBar.Text = "Regex Find/Replace complete"
    End Try
End Sub

So, hier ist das, was es soll sieht aus wie vor und nach dem ausführen des Makros.

VOR

Public Class Class1
    Public Sub New()
        ''asdasdas
        Dim a As String = "" ''asdasd
        ''' asd ad asd
    End Sub


    Public Sub New(ByVal strg As String)

        Dim a As String = ""

    End Sub


End Class

NACH

Public Class Class1
    Public Sub New()
        Dim a As String = ""
    End Sub
    Public Sub New(ByVal strg As String)
        Dim a As String = ""
    End Sub
End Class

Gibt es vor allem zwei Hauptprobleme, die mit dem makro

  • Es kann nicht löschen Sie die leeren Zeilen dazwischen.
  • Wenn es ein Stück code, das geht so

Dim a as String = "Name='Soham'"

Dann Nach dem ausführen des Makros wird es

Dim a as String = "Name='"
Schreibe einen Kommentar