大家好 一百年前,我描述了一种在PowerShell脚本中查看调用图的快速而肮脏的方法。 可以这么说,现在是时候在地球上拉猫头鹰了,看看模块内部的依赖图。
首先,您需要从Powershell Gallery安装PSQuickGraph模块 。 然后,运行脚本,其脚本可以在此处获取 。 老实说,我不太了解如何将要点中的代码插入到中心上的帖子中 如果有人在评论中告诉我,我将不胜感激。
因此,让我们继续。 首先,我将模块一分为二。 它建立在QuickGraph库上。 从本质上讲,这是库的PowerShell包装,用于对图形进行快速和粗略的测试。 一个这样的测试可能是解析您的PowerShell代码,从中生成链接图并以可视方式呈现它的事情。
此外,脚本本身对AST使用内置的PowerShell访问机制,这实际上大大简化了我们对代码的分析。 最终,将一个与另一个相结合,我们得到了一张图。
因此,脚本本身包含两个部分。 与AST一起使用的一部分“解析器”,以及将AST和图形链接起来的部分。 在下面的示例中描述了这一部分。
# ( 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
好吧,这样的结果

此外,最后一条命令将图形导出为DOT格式,使您可以在graphviz应用程序中对其进行折磨。