Delphi编译器的GraphViz文件导出

来自RAD Studio
跳转到:航行搜索


从RAD Studio 12.0开始,Delphi编译器有一个实验功能,可以帮助理解项目的结构,避免循环单元引用,从而在与其他语言功能结合时减慢编译速度并对编译器造成副作用。此功能能够直接在编译器级别生成uses语句图(无需单独的解析工具)。

编译器有一个新的--格拉维兹命令选项,它在.gv(通用)GraphViz文件,稍后可以由GraphViz本身处理(一个开放源码工具,位于https://graphviz.org/). 还有第二个选项可以从图形中排除单位(单独或按族):

  • --象形文字(输出<exename>.gv文件)
  • --graphviz-exclude:<UnitList>(从输出中排除特定的单元名称)


对于--graphviz排除,单位名称模式可以包含“*”通配符,可以在<UnitList>中指定多个单位名称模式,以“;”分隔。

例如:--graphviz-exclude:System.*;VCL.*;FMX公司*不包括所有System、VCL和FireMonkey单元。

注:所需单位、System、SysInit和System。变量始终被排除在外。


考虑到一个具有主窗体、辅助对话框和数据模块的简单应用程序示例,它们通过接口或实现部分中的一些uses语句相互引用。可以使用以下命令行构建它(不包括系统单元):

dcc32--graphviz--graphwiz-exclude=系统.*;Vcl.*;WinApi.*图形测试.dpr

它将生成以下.gv文件,其中style=虚线用于实现部分中的uses语句:

有向图测试{图形测试->{GT_mainform GT_dialog GT_datamodule}GT_主窗体->{GT_datamodule GT_dialog}GT_数据模块GT_dialog->{GT_datamodule GT_mainform}[箭头=打开,样式=虚线]}

这将生成如下图:

图形Viz.png

注:.gv文件的生成只能在命令行上或从IDE使用外部MSBUILD时进行,而不能直接从IDE生成。


另请参见