我尝试使用Doxygen 1.8.11使用Dot(GraphViz 2.38)为固定格式的Fortran代码生成调用/调用者图。
调用/调用者图对子例程工作正常,但对于具有声明的返回值的函数失败(即没有引用)。
即。对于以下代码,MYFUNC
的调用图中未显示对MYSUB
的调用:
integer function MYFUNC()
implicit none
MYFUNC = 1
end function
subroutine MYSUB ()
implicit NONE
integer MYFUNC
integer RESULT
RESULT = MYFUNC()
return
end
有趣的是,如果我从integer MYFUNC
删除行MYSUB
,则会正确绘制调用图,但代码不再有效(即,它不会编译)。
是否可以在呼叫/来电图表中包含函数调用?
答案 0 :(得分:1)
据我所知,这是因为Doxygen不理解MYFUNC
中的MYSUB
与函数MYFUNC
是一回事。
您可以通过在MYFUNC
中为interface
编写MYSUB
块来生成MYSUB
的来电图表,但这不会生成MYFUNC
的调用图。
为了让Doxygen正确生成调用/调用者图,您应该将两个过程放在一个模块中(或者,您可以将它们放在各自独立的模块中)。这也无需在MYSUB
中定义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
:
CASE_SENSE_NAMES = YES
此外,Doxygen似乎不会为具有大写名称的过程生成调用/调用者图形,至少在1.8.8版本中。我的Doxyfile中有ul
,所以我怀疑这是一个错误。