我如何可视化Fortran(90或更高版本)源代码,例如使用Graphviz?

EMi*_*ler 15 visualization fortran graph graphviz

我被扔进了一个包含大量源文件的大型Fortran项目中.

我需要为这个项目做出贡献,我首先理解来源似乎是谨慎的.

作为第一步,我想想象各种源文件之间的相互依赖性,即哪些源文件需要哪些模块.据我所知,其他语言存在自动化方法,并产生可以使用Graphviz构建的图形.

但有没有人知道那些可以为Fortran 90代码执行此操作的软件?

[搜索Fortran帮助的互联网是一个真正的痛苦,因为你最终搜索了蜘蛛网,这要归功于痛苦无处不在的FORTRAN 77.

Chr*_*ris 21

我会推荐doxygen,它会自动从源代码生成文档(并且是免费的).通常,您会在描述函数和变量的注释中添加一些标记.然而,你可以对无证源文件运行doxygen的,只要你设置EXTRACT_ALLYES配置文件中,并将它创建创建所有的函数关系图(即该函数调用这些函数,并通过这些函数调用).

您需要安装GraphViz才能生成图表并在配置文件中HAVE_DOT设置选项YES.

有关更多信息,请参阅doxygen文档中的图形和图表,有关生成的输出示例,请参阅此示例类文档.

编辑:当然对于Fortran,您应该在配置文件中设置OPTIMIZE_FOR_FORTRAN选项YES.

  • 我同时尝试了 doxygen 和明白,我必须说 doxygen 做得很棒。在我使用的配置文件中:HAVE_DOT=YES、CALL_GRAPH=YES、CALLER_GRAPH=YES,最后 EXTRACT_ALL=YES 将 *all* Fortran 文件包含在子目录中。 (2认同)

Hig*_*ark 9

如果你有钱,那么了解Fortran是值得关注的.如果您没有钱但打算快速工作,那么您可能会尝试下载该软件.

对于静态调用图,我从来没有找到像理解那样有用的免费工具; 很难找到任何免费工具,更不用说有用工具了.我自己写一个,但市场很小:-(

对于动态调用图,请调查您的编译器选项.我使用英特尔Fortran编译器,它可以生成大量有关正在执行的程序的有用信息.TotalView调试器还可以显示正在执行的程序的调用图.您还应该查看gprof2dot,它从GPROF调用'graph'中生成DOT文件.这是免费的,没问题.

而且我还应该补充说,虽然这不是我曾经使用过的东西,但Callgrind可能会有用.