Cara melihat tautan di dalam modul PowerShell Anda

Selamat siang, kolega. Seratus tahun yang lalu, di suatu tempat, saya menggambarkan cara cepat dan kotor untuk melihat grafik panggilan di dalam skrip PowerShell Anda. Sekarang, inilah saatnya, untuk menarik burung hantu ke dunia dan melihat grafik ketergantungan di dalam modul.


Pertama-tama, Anda perlu menginstal modul PSQuickGraph dari Galeri Powershell. Dan setelah ini, jalankan skripnya, yang dasarnya bisa diambil di sini . Jujur, saya tidak begitu mengerti bagaimana memasukkan kode dari intisari ke dalam posting di hub Jika seseorang memberi tahu saya dalam komentar, saya akan sangat berterima kasih.


Jadi, mari kita lanjutkan. Pertama-tama, saya berbicara tentang modul menjadi dua. Itu dibangun di perpustakaan QuickGraph . Intinya, ini adalah pembungkus PowerShell di atas perpustakaan, yang dirancang untuk pengujian cepat dan kasar dengan grafik. Salah satu pengujian tersebut dapat berupa hal yang mem-parsing kode PowerShell Anda, menghasilkan grafik tautan darinya, dan menyajikannya secara visual.


Selain itu, skrip itu sendiri menggunakan mekanisme akses PowerShell bawaan untuk AST -nya , yang, pada kenyataannya, sangat menyederhanakan analisis kode kami. Pada akhirnya, menggabungkan satu dan yang lainnya kita mendapatkan grafik.


Alhasil, skrip itu sendiri terdiri dari dua bagian. Sepotong "parser" yang berfungsi dengan AST, dan bagian yang menghubungkan AST dan grafik. Bagian ini dijelaskan dalam contoh berikut.


#    ( 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 

Nah, hasilnya seperti ini


moduleStructure


Selain itu, perintah terakhir mengekspor grafik ke format DOT, yang memungkinkan Anda untuk menyiksanya dalam aplikasi graphviz

Source: https://habr.com/ru/post/id425225/


All Articles