6

是否可以在 doxygen 注释块中包含将被 doxygen 忽略的内容?换句话说,我们可以在 doxygen 评论块中添加评论吗?

背景:

我们正在将 Fortran 项目的代码内注释转换为 doxygen 可解析格式,但是该项目要求代码内注释中的内容由水平线划定。例如:

!> @brief Lorem ipsum dolor sit amet
!! ---------------------------------------------------------------------
!!
!! @param[in] p1  Description of p1
!! @param[in] p2  Description of p2
!! ---------------------------------------------------------------------
!!
!! More content here ....
!! ---------------------------------------------------------------------
!!
!! More content for another section
!! ---------------------------------------------------------------------
subroutine do_something(p1, p2)
  ! .... the code ...
end subroutine do_something

是否有一个命令/语法我可以在这些行前面加上这样 doxygen 会忽略它们?希望一个不引人注目且不影响评论可读性的内容。

我知道INPUT_FILTER可以用来链接预处理脚本的设置,但理想的解决方案是不依赖其他脚本/工具的解决方案。

PS 我很清楚很多人会认为那些水平线是不必要的和/或分散注意力的。但是,这是付款人规定的要求,我无权更改。

4

4 回答 4

5

Doxygen 支持一些HTML 命令,包括 HTML 注释。该解决方案的好处是不需要对 Doxyfile 进行任何修改,并且比@I{ ---- }.

!> @brief Lorem ipsum dolor sit amet
!! <!----------------------------------------------------------------->
!!
!! @param[in] p1  Description of p1
!! @param[in] p2  Description of p2
!! <!----------------------------------------------------------------->
!!
!! More content here ....
!! <!----------------------------------------------------------------->
!!
!! More content for another section
!! <!----------------------------------------------------------------->
subroutine do_something(p1, p2)
  ! .... the code ...
end subroutine do_something

作为记录,这是我最终确定的解决方案。但是,我接受了DRH 的回答,因为它为“在 doxygen 块中启用评论”提供了更通用的解决方案。

于 2012-09-10T13:43:38.223 回答
4

如果你对水平线使用哪个字符有灵活性,你可以继续重复注释字符,doxygen 会忽略它。就像是:

!> @brief Lorem ipsum dolor sit amet
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!! @param[in] p1  Description of p1
!! @param[in] p2  Description of p2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!! More content here ....
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!! More content for another section
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine do_something(p1, p2)
  ! .... the code ...
end subroutine do_something
于 2012-09-08T05:11:50.887 回答
3

您可以利用 Doxygen 的别名语法来忽略该行,但是它将要求该行带有前缀和后缀附加字符。例如,如果您定义了一个别名,例如:

ALIASES                = I{1}=""

您可以在评论中使用别名来隐藏 doxygen 的水平中断:

!> @brief Lorem ipsum dolor sit amet
!! @I{-----------------------------------------------------------------}
!!
!! @param[in] p1  Description of p1
!! @param[in] p2  Description of p2
!! @I{-----------------------------------------------------------------}
!!
!! More content here ....
!! @I{-----------------------------------------------------------------}
!!
!! More content for another section
!! @I{-----------------------------------------------------------------}
subroutine do_something(p1, p2)
  ! .... the code ...
end subroutine do_something
于 2012-09-08T05:29:23.027 回答
-1

您可以编写一个简单的过滤器来删除这些行。在 perl 中,它可能看起来像这样:

while (<>)
{
    if (m/^!! -{3,}/)
    {
        print "!!\n";
    }
    else
    {
        print;
    }
}

然后INPUT_FILTER在您的配置中Doxyfile引用此脚本:

INPUT_FILTER = path/to/my/perl/script
于 2017-06-11T15:54:02.000 回答