Guten Tag, Kollegen. Vor hundert Jahren habe ich irgendwo eine schnelle und schmutzige Methode beschrieben, um ein Anrufdiagramm in Ihrem PowerShell-Skript anzuzeigen. Jetzt ist es sozusagen an der Zeit, eine Eule auf den Globus zu ziehen und das Abhängigkeitsdiagramm im Modul zu sehen.
Zunächst müssen Sie das PSQuickGraph-Modul aus der Powershell-Galerie installieren. Führen Sie anschließend das Skript aus, dessen Basis hier verwendet werden kann . Ehrlich gesagt habe ich nicht ganz verstanden, wie man den Code von gist in einen Beitrag auf einem Hub einfügt Wenn mir jemand in Kommentaren sagt, werde ich sehr dankbar sein.
Also, lass uns weitermachen. Zunächst habe ich in zwei Teilen über das Modul gesprochen. Es basiert auf der QuickGraph- Bibliothek. Im Wesentlichen handelt es sich hierbei um einen PowerShell-Wrapper über der Bibliothek, der für schnelle und grobe Tests mit Diagrammen ausgelegt ist. Ein solcher Test könnte eine Sache sein, die Ihren PowerShell-Code analysiert, daraus ein Link-Diagramm generiert und es visuell darstellt.
Darüber hinaus verwendet das Skript selbst den integrierten PowerShell-Zugriffsmechanismus für seinen AST, was unsere Analyse des Codes erheblich vereinfacht. Wenn wir das eine und das andere kombinieren, erhalten wir letztendlich eine Grafik.
Daher besteht das Skript selbst aus zwei Teilen. Ein Teil des "Parsers", der mit dem AST funktioniert, und der Teil, der den AST und das Diagramm verbindet. Dieser Teil wird im folgenden Beispiel beschrieben.
# ( PSQuickGraph) $g = New-Graph -Type BidirectionalGraph # PS1 , AST $f = dir "C:\Repo\Work\Tools\*.ps1" -Recurse | Find-Function $f.name | % { Add-Vertex -Vertex $_ -Graph $g} # , , , $f | % { $fName = $_.name $tmpFile = New-TemporaryFile $_.line >> ($tmpFile.fullname) $expr = Find-Expression -Fullname $tmpFile.fullname $expr.name | ? {$_} | ? {$_ -notin "%","where","?","select","out-null","sort","ft","fl","Write-Verbose" } | % { Add-Edge -From $fName -to $_ -Graph $g} } # Show-GraphLayout -Graph $g # DOT Export-Graph -Format Graphviz -Graph $g -Path C:\Temp\g.gv
Nun, so etwas infolgedessen

Darüber hinaus exportiert der letzte Befehl das Diagramm in das DOT-Format, sodass Sie es in der graphviz- Anwendung quälen können