Fortran 函数缺少 Doxygen 的 call/caller 图形引用
Doxygen's call/caller graph references missing for Fortran functions
我尝试使用 Dot (GraphViz 2.38) 使用 Doxygen 1.8.11 为固定形式的 Fortran 代码生成 call/caller 图。
call/caller 图对于子例程工作正常,但对于具有声明的 return 值的函数失败(即没有绘制引用)。
即对于以下代码,对 MYFUNC
的调用未显示在 MYSUB
的调用图中:
integer function MYFUNC()
implicit none
MYFUNC = 1
end function
subroutine MYSUB ()
implicit NONE
integer MYFUNC
integer RESULT
RESULT = MYFUNC()
return
end
有趣的是,如果我从 MYSUB
中删除行 integer MYFUNC
,调用图会正确绘制,但代码不再有效(即无法编译)。
是否可以选择在 call/caller 图表中包含函数调用?
据我所知,这是因为 Doxygen 不理解 MYSUB
中的 MYFUNC
与函数 MYFUNC
是同一回事。
您可以通过在 MYSUB
中为其编写 interface
块来生成 MYFUNC
的调用图,但这不会为 MYSUB
.[=21= 生成调用图]
为了让 Doxygen 正确生成 call/caller 图,您应该将这两个过程放在一个模块中(或者,您可以将它们放在各自独立的模块中)。这也消除了在 MYSUB
:
中定义 MYFUNC
的需要
module foo
implicit none
contains
integer function myfunc()
myfunc = 1
end function myfunc
subroutine mysub (res)
integer res
res = myfunc()
end subroutine mysub
end module foo
此外,Doxygen 似乎不会为具有大写名称的过程生成 call/caller 图表,至少在版本 1.8.8 中是这样。我的 Doxyfile 中有 CASE_SENSE_NAMES = YES
,所以我怀疑这是一个错误。
我尝试使用 Dot (GraphViz 2.38) 使用 Doxygen 1.8.11 为固定形式的 Fortran 代码生成 call/caller 图。
call/caller 图对于子例程工作正常,但对于具有声明的 return 值的函数失败(即没有绘制引用)。
即对于以下代码,对 MYFUNC
的调用未显示在 MYSUB
的调用图中:
integer function MYFUNC()
implicit none
MYFUNC = 1
end function
subroutine MYSUB ()
implicit NONE
integer MYFUNC
integer RESULT
RESULT = MYFUNC()
return
end
有趣的是,如果我从 MYSUB
中删除行 integer MYFUNC
,调用图会正确绘制,但代码不再有效(即无法编译)。
是否可以选择在 call/caller 图表中包含函数调用?
据我所知,这是因为 Doxygen 不理解 MYSUB
中的 MYFUNC
与函数 MYFUNC
是同一回事。
您可以通过在 MYSUB
中为其编写 interface
块来生成 MYFUNC
的调用图,但这不会为 MYSUB
.[=21= 生成调用图]
为了让 Doxygen 正确生成 call/caller 图,您应该将这两个过程放在一个模块中(或者,您可以将它们放在各自独立的模块中)。这也消除了在 MYSUB
:
MYFUNC
的需要
module foo
implicit none
contains
integer function myfunc()
myfunc = 1
end function myfunc
subroutine mysub (res)
integer res
res = myfunc()
end subroutine mysub
end module foo
此外,Doxygen 似乎不会为具有大写名称的过程生成 call/caller 图表,至少在版本 1.8.8 中是这样。我的 Doxyfile 中有 CASE_SENSE_NAMES = YES
,所以我怀疑这是一个错误。