Como ver os links dentro do seu módulo PowerShell

Bom dia, colegas. Cem anos atrás, em algum lugar, descrevi uma maneira rápida e suja de ver um gráfico de chamada dentro do seu script do PowerShell. Agora, é hora de, por assim dizer, puxar uma coruja para o globo e ver o gráfico de dependência dentro do módulo.


Primeiro de tudo, você precisa instalar o módulo PSQuickGraph da Powershell Gallery. E depois disso, execute o script, cuja base pode ser acessada aqui . Honestamente, eu não entendi direito como inserir o código do gist em uma postagem em um hub Se alguém me disser nos comentários, ficarei muito agradecido.


Então, vamos continuar. Primeiro de tudo, eu falei sobre o módulo em dois. Ele é construído na biblioteca do QuickGraph . Em essência, este é um invólucro do PowerShell sobre a biblioteca, projetado para testes rápidos e aproximados com gráficos. Um desses testes pode ser algo que analisa seu código do PowerShell, gera um gráfico de links e o apresenta visualmente.


Além disso, o próprio script usa o mecanismo de acesso interno do PowerShell ao seu AST, o que, de fato, simplifica bastante nossa análise do código. Por fim, combinando um e outro, obtemos um gráfico.


Como resultado, o próprio script consiste em duas partes. Uma parte do "analisador" que funciona com o AST e a parte que vincula o AST e o gráfico. Esta parte é descrita no exemplo a seguir.


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

Bem, algo assim como resultado


moduleStructure


Além disso, o último comando exporta o gráfico para o formato DOT, o que permite atormentá-lo no aplicativo graphviz

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


All Articles