混合语言代码文档 - 需要帮助来调试doxygen

时间:2014-08-23 19:34:56

标签: c++ c fortran doxygen

我很乐意制作我们的大项目http://www.diracprogram.org的代码文档,它是F90F77,Fortran包含文件,CC++源代码文件。加上很多预处理器语句(主要在Fortran文件中)。

我正在使用Doxygen 1.8.6,并使用Doxygen.in配置文件和doxygen调试语句。

Fortran是主要语言。

如您所见,存在很多错误。有任何线索如何跟踪,理解它们然后相应地调整Fortran源文件?

********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/utils/mx2fit.F90 line: 621, state: 21
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/utils/polfit.F90 line: 168, state: 21
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/utils/twofit.F90 line: 310, state: 21
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/amfi/amfi3.F line: 2824, state: 4
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/cc_external/hsfscc/chp_11a.F90 line: 1993, state: 21
********************************************************************
parse error in end <scopename>********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/dirac/dirbss.F line: 7884, state: 6
********************************************************************
/home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/include/dcbgascip.h:37: warning: Found ';' while parsing initializer list! (doxygen could be confused by a mac
ro call without semicolon)
/home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/include/dcbham.h:50: warning: Found ';' while parsing initializer list! (doxygen could be confused by a macro 
call without semicolon)
parse error in end <scopename>********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/krmc/krmcgascip.F line: 4684, state: 6
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/reladc/adccore.F line: 7170, state: 19
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/reladc/adcdble.F line: 2871, state: 10
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/reladc/adcdiag.F line: 4813, state: 10
********************************************************************
********************************************************************
Error in file /home/ilias/Dokumenty/Work/QCH/software/dirac_git/working_trunk/src/reladc/adcexci.F line: 1995, state: 10
********************************************************************
make[3]: *** [CMakeFiles/doxygen] Segmentation fault (core dumped)
make[3]: Target `CMakeFiles/doxygen.dir/build' not remade because of errors.
make[2]: *** [CMakeFiles/doxygen.dir/all] Error 2
make[1]: *** [CMakeFiles/doxygen.dir/rule] Error 2
make[1]: Target `doxygen' not remade because of errors.
make: *** [doxygen] Error 2

1 个答案:

答案 0 :(得分:0)

首先我假设代码编译正确。

建议升级到最新版本的doxygen(目前为1.8.8),因为可能会解决许多问题。

追踪的最佳方式是(不幸的是,在状态错误的情况下,报告的行号在大多数情况下是没有用的): - 研究doxygen代码 - 对于每个文件分别运行doxygen并试图通过例如解决问题减少文件直到错误消失,并从中得出结论错误。 - 自己构建doxygen并在调试模式下使用flex运行/添加打印语句

对于每条* .F90线,您应该在输出线中看到类似于:

Preprocessing .../a.F90... 
Parsing file .../a.F90...
每个* .f90文件的

Reading .../a.f90...
Parsing file .../a.f90...
每个* .F文件

Preprocessing .../a.F...
Prepassing fixed form of .../a.F
Parsing file ...a.F...
每个* .f文件

Reading .../a.f...
Prepassing fixed form of .../a.f
Parsing file .../a.f...

如果不是这种情况,文件将无法正确识别为自由格式化的Fortran /固定格式化代码,并且doxygen可能会混淆。 这可以通过在Doxyfile中定义来实现:

EXTENSION_MAPPING      = f=FortranFixed f90=FortranFree

(这可能是自doxygen 1.8.7版本以来) 如果不可能,则在* .f / .F文件的第一行的第一列中设置'C'。 'c'或''。

在www.diracprogram.org的网站上我找不到源代码,是否可以共享(部分?)。

现在关于不同的状态,它们来自fortranscanner.l(我必须猜测一个解决方案):

  • 州:4

    SubprogBody:可能是因为在固定格式的代码中未正确关闭/识别子程序体(因为它是.F文件,所以添加'C'......)

  • 州:6

    开始:可能是由于未在固定格式化代码中正确关闭/识别启动条件(因为它是.F文件,因此添加'C'......)

  • 州:10

    ModuleBody:可能是因为没有在固定格式化代码中正确关闭/识别模块体(因为它是.F文件,所以添加'C'......)

  • 州:19

    InterfaceBody:可能是由于固定格式化代码中没有正确关闭/识别的界面(因为它是.F文件,所以添加'C'......)

  • 州:21

    字符串:字符串未正确关闭字符串或字符串引号中的某处注释