源码模块关系分析工具使用说明 |
欢迎您使用 CnPack 开发组开发的源码模块关系分析工具 CnPack Relation Analyzer。
本工具主要用来分析 Delphi 编译生成的可执行文件内的单元与包信息,同时也可分析包之间的关联关系以及包与其使用的单元之间的关联关系。分析的结果可以保存成 ARF 文件,同时也可编辑生成关联信息记录 SMR 文件,以达到在后续开发过程中方便地查询源代码和受影响的模块之间关系的目的。
对于普通的分析,可在“分析可执行文件”页中打开一个或多个可执行文件进行分析,分析结果可保存成 ARF 文件并在“查看分析结果”页中重新加载查看。
ARF 是自动分析出来的结果,只包含 Pas 文件名和可执行文件之间的关联,不包括其他文件以及具体的路径信息。对于高级应用,可在“编辑源码模块关系”页中,将 ARF 通过手工编辑的方式生成包含完整的文件名与可执行文件之间关联关系的 SMR 文件。这样在后续的开发过程中,便可使用“查看源码模块关系”页来进行重新查看了。
分析可执行文件
分析可执行文件是源码模块关系分析工具的基本功能,它能分析可执行文件,得到其包列表与单元列表。它的界面如图所示:
分析文件:分析待分析文件列表中选中的文件,得到其包列表和单元列表。
分析所有文件:对待分析文件列表中的所有文件进行分析,得到它们的包列表和单元列表。
清空所有文件:清空待分析文件列表中的所有文件,分析结果也一并清除。
保存分析结果记录:将当前的分析结果保存为ARF文件。ARF文件是普通的INI文件,记录了这批可执行文件所包含的包列表和单元列表内容,可在记事本等工具中打开查看。
附加结果记录文件:将当前分析结果附加到另外一个已存在的ARF文件中。
查看分析结果
已保存的ARF的内容,可在此页重新加载供查看。重新加载后,此界面允许按一定规则查看引用关系,包括按可执行模块查看、按单元查看等,还能查找重复的单元名。它的界面如图所示:
打开结果记录:打开一预先保存的ARF文件并显示。
清空:清空界面内容。
按可执行模块查看:上图是ARF文件按可执行模块查看时的状态,ARF文件中的可执行文件显示在可执行文件列表中。选中一可执行文件时,将显示它包含的单元、它引用的包、以及引用过它的模块。
上一屏:双击某模块列表时,可切换到此模块以查看此模块的引用关系。上一屏用于回退到上一个查看过的模块,而不是文件列表中的前一个模块。
下一屏:通过上一屏回退后,下一屏可前进到曾查看过的模块。
查找:查找框用来快速定位文件名,支持通配符。上下键可在源文件列表中上下移动,Ctrl+Home或End则是定位到源文件列表的首尾,Ctrl+上下键是查找上一个和下一个。此查找功能在其余界面的源文件列表中也适用。
可执行文件:可执行文件列表,列出了该ARF中的可执行模块。
增加:点击“增加”按钮可将选中的可执行模块增加到选中的可执行文件列表中,双击某一可执行模块同样能达到此功能。
选中的可执行文件:被用户选中的可执行文件。
删除:从选中可执行文件列表中移除选中的文件。
删除全部:移除选中可执行文件列表中的所有文件。
重复的单元:显示选中的可执行文件列表中的所有可执行文件所包含的重复的单元名。
保存:将重复的单元列表保存为文本文件。
编辑源码模块关系
保存的ARF内容仅仅只记录了模块名和源码文件名的简单对应关系,源码文件名不包括路径名。如果我们需要获得一个大项目中所有的具体文件名(包括路径)和其编译生成的最终模块BPL/DLL/EXE等的关系,则需要应用SMR编辑生成的方式。本界面用于编辑生成SMR文件,它的界面如图所示:
一个SMR文件记录了一批源文件以及和每个源文件有关系的可执行模块。生成一个完整的SMR文件需要源文件列表与ARF文件两个要素,源文件列表可以使用“目录文件列表”功能来生成,ARF文件则来源于前两页分析保存而来的结果,两者的关系则通过本界面中的“填充”功能来实现。
SMR文件操作:此按钮包括系列菜单项,处理和SMR文件的相关操作。
ARF文件操作:此按钮包括系列菜单项,处理和ARF文件的相关操作。
自动填充数据:当SMR文件中源文件列表已准备,ARF文件也打开后,本菜单项中的功能可自动填充构建完整源文件路径名和可执行模块的关系。这种填充的基础是ARF中已经记录了的源文件名和模块名的关系。它根据ARF中的文件名查找到SMR中源文件列表中的带路径信息的文件名,从而构建出完整文件名与可执行模块的关系。 需要说明的是,如果文件名列表中存在文件名相同而路径不同的情况,根据ARF填充时可能会发生错误,此时需要用户手工进行调整以选择某源文件具体对应的可执行模块。
保存SMR文件:SMR文件被填充完毕后,记录了具体文件与模块关系的内容便可保存成SMR文件供日后打开查看。
数据库浏览按钮:SMR文件的源文件列表是作为数据库记录存在于本程序中的,因此可以通过这些按钮对源文件记录进行操作,如新增一源文件、修改源文件路径、删除无用的源文件等。
仅实现部分改动时受影响的可执行模块:此列表针对一源文件而言,列出的是直接包含该单元的可执行模块。
interface 部分改动时受影响的可执行模块:此列表也是针对一源文件而言,列出的是直接用到“所有包含该单元的模块”的模块。对于bpl来说,如果一个单元的interface没有变化,那么Build时不需要重新编译使用到该bpl的可执行模块。而如果interface有了变化,所有直接依赖该bpl的可执行模块都需要重新编译。 所以,如果一个单元发生了变化,只是在实现部分有代码变化,那么所有把该单元编译进来的可执行模块就是受影响的模块,因为这些模块需要重新编译才能确保新的代码生效。而如果接口部分发了变化,那么除了把该单元编译进来的可执行模块之外,所有直接依赖编译了该单元的可执行模块的模块也都需要重新编译。
查看源码模块关系
SMR文件保存后,此页中可打开已存在的SMR文件进行查看,界面和上一页类似,如下图:
打开SMR文件:手工打开一SMR文件供查看。
清空:清空显示的内容。
上一屏:上一屏用于回退到上一个查看过的文件。
下一屏:通过上一屏回退后,下一屏可前进到曾查看过的模块。
查看界面与编辑SMR文件类似,此处不重复说明。
目录文件列表
目录文件列表功能用于根据一目录中的源文件生成一份源文件列表的文本文件供编辑SMR文件时使用,其界面如图所示,左面是查找得到的目录文件树列表,右面是生成的文件列表文本,最终需要保存的是右面的文件列表文本。
包含子目录:查找枚举时是否递归查找其子目录。
使用相对路径:查找出的文件名使用相对于选择的根目录的相对路径。
文件名过滤:查找中使用的文件名通配符,避免查找到无用的文件。
区分大小写:使用通配符进行文件名匹配时是否区分大小写。
查找:根据选择的目录和选项,对其目录进行查找枚举。
生成列表:左面的目录文件树列表显示了搜索结果后,可点击此按钮在右面的文件列表中生成文件列表文本。如果“自动更新列表”的复选框被勾选了则无需手工点击此按钮,目录文件树内容改变后会自动更新文件列表。
列出文件:文件列表中是否列出文件名,默认需要。
自动更新列表:是否在目录文件树内容改变后自动更新文件列表文本,如未勾选,则需要手工点击“生成列表”按钮来生成。
保存:保存生成的文件列表文本。
右键点击目录文件树可对目录文件树的内容进行系列操作。需要说明的是这些操作都不影响磁盘上的文件,只影响此处的列表内容与生成的文件列表文本。
本帮助文档中的抓图是本工具对Delphi 5的可执行文件以及其自带的VCL源码所分析的结果,用户可借此进行体验。
相关主题