【问题标题】:Fortran compilers/viewers that let you see the dependencies of a given module [duplicate]Fortran 编译器/查看器,可让您查看给定模块的依赖关系 [重复]
【发布时间】:2011-09-03 21:47:57
【问题描述】:

我正在使用 PowerGREP 来查找模块的所有依赖关系以及 Fortran 代码的模块变量的所有依赖关系,但这并不是一个理想化的接口。任何人都可以为此建议任何其他工具吗?

例如,我想查看每个使用带有day 标签的类型的 .f90 文件(参见下面的代码)。

我使用的是 Windows 7,但也可以随意提及任何适用于 Linux 的内容。

! $Id: ESMF_DateMod.F,v 1.1.6.1 2002/04/24 03:25:46 erik Exp $
module ESMF_DateMod
!===============================================================================
!BOP
! !MODULE: ESMF_DateMod
!
! !USES:
use ESMF_TODMod
use ESMF_CalendarMod
use ESMF_TimeMod
!
! !PUBLIC TYPES:
type ESMF_Date
private
sequence
type(ESMF_Calendar) calendar
integer(8) year
integer(8) month
integer(8) day
type(ESMF_TOD) tod
integer(8) julianDay
integer(8) dayOfYear
end type ESMF_Date

【问题讨论】:

  • 投票将其移至 StackOverflow(它所属的位置)。

标签: fortran


【解决方案1】:

不是编译器,但有 SciTools Understand,它支持多种语言,包括 Fortran(它们也与最新标准保持同步)。如果我对您的问题的理解正确,那么它就是专门用于此类分析的工具。

【讨论】:

  • 酷 - 谢谢!是的,我不需要编译器——只需要一个查看器。我现在正在尝试,但完整的程序需要 995 美元。 =/
  • @InquilineKea - 我曾经使用旧版本(不确定是哪一个,但它是大约 5 年前的,所以我可以冒险猜测)并且对于重写/维护大型项目,它是一个救星(现代化 f77 /90 到更现代形式的 f2003+intel 的编译器扩展以及添加一些功能)。我们在办公室有一些许可证,它的价格非常值得。诚然,个人需求的价格有点高,但现在什么软件价格不是?如果商业模式稳固,软件工具的价格通常不难证明。
  • 如果你的代码库不是太大,你可以手工完成这种工作(给自己拿一张大纸,然后把它画下来)。
  • @InquilineKea - 下载并重复使用试用版?
  • @InquilineKea - 好吧,在我看来你有三个选择:a)购买副本 b)摆弄试用版或 c)在某个地方找到非法副本(我不推荐最后一个,但我意识到这是某些人的选择)。不幸的是,我不知道任何类似的替代程序,对不起......
【解决方案2】:

UNIX and Linux Forums post 建议 ftnchek,这可能不是完成此任务的最用户友好的方式,但具有免费的优势。

【讨论】:

  • 另外,有点过时了。它不支持现代 Fortran 功能;好吧,至少我上次没有尝试过;以上显然是较新的口味之一。尽管如此,+1,因为它在这里很好,至少作为使用 f77 代码的人的参考。
  • 哦 - 非常感谢!我认为我的代码是 f90,但我会更深入地研究它。
  • @InquilineKea - 您的代码绝对是 f90 或更新版本(取决于您使用的功能)。提示:模块
【解决方案3】:

我有点晚了,但我会推荐doxygen,它会自动从源代码生成文档。有关更多信息,请参阅graphs and diagrams 的 doxygen 文档,有关生成的输出示例,请参阅此 example class documentation(请注意,此示例演示了一些 C++ 类之间的关系,但可以为 Fortran 程序中的函数和子例程绘制相同的图表) .

请注意,时间答案与我之前的答案相似,可以在此处找到:How can I visualize Fortran (90 or later) source code, e.g. using Graphviz?此答案包含有关配置 doxygen 的更多信息。

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 2019-02-01
    • 2014-11-17
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2016-06-09
    相关资源
    最近更新 更多