如何使用 Doxygen 和 Doxygen::Filter::Perl 为 Perl 子例程生成文档?
How to use Doxygen and Doxygen::Filter::Perl to generate documentation for Perl sub routines?
我正在尝试弄清楚如何使用 Doxygen::Filter::Perl
为 Perl 文件生成文档。我从一个非常简单的文件开始,只是为了看看我是否可以让它工作 (test_doxygen.pl
):
#! /usr/bin/env perl
#** @file test_doxygen.pl
# @brief Testing Doxygen using Doxygen::Filter::Perl
#
# Description of the purpose of this file
#
# @author Håkon Hægland (hakon.hagland@gmail.com)
#
# @bug No known bugs.
#
#*
#** @class main
# The main class
#*
use strict;
use warnings;
my $b = add_one(1);
#** @function public add_one ($par1)
# @brief A brief description of the function
#
# A detailed description of the function
# @params $par1 required A number
# @retval value Input value plus one1
#*
sub add_one {
my ($par1) = @_;
return $par1 + 1;
}
然后我安装了 Doxygen::Filter::Perl 并使用 metacpan.org (the link is here) 的软件包维护者提供的 Doxyfile
配置文件
并将其放在与上面脚本相同的目录中。我在 Doxyfile
中更改了一行: INPUT
标记的值从 lib
更改为空字符串,以便仅在当前目录中搜索源文件..
我正在使用 Ubuntu 14.04,所以我用 sudo apt-get install doxygen
安装了 Doxygen,(我还需要安装 graphviz
: sudo apt-get install graphviz
)然后我终于 运行
$ doxygen
来自终端 window。生成的 HTML 文件 doc/html/index.html
包含有关文件和作者的文档,但不包含 add_one
子例程的任何文档。
我在这里错过了什么?
更新
Chromium 浏览器中的 class 视图如下所示:
可以看出,add_one
子例程没有 reference/link。
这是文件视图:
我刚刚看了这个,它似乎可以与 Doxygen (1.7.5.1) 一起使用,但是,较新版本的 Doxygen (1.8.9.1) 似乎无法正常工作。
我刚刚将 Doxygen::Filter::Perl 的新版本发布到 Github 和 CPAN,版本 1.70。这应该可以解决您遇到的问题。
所以问题在于处理 "my" 变量声明。它将值设置为 private: 并且 doxygen 永远不会返回。我在 Perl.pm 中添加了一行来解决这个问题,它现在应该对你有用了。由于您使用的是 pl 文件而不是 pm 文件,我还对 Doxyfile 进行了更改,因此您会希望从发行版中获取新文件。我已经将 1.71 发布到 Github 和 CPAN,并用您的确切示例对其进行了测试。
我正在尝试弄清楚如何使用 Doxygen::Filter::Perl
为 Perl 文件生成文档。我从一个非常简单的文件开始,只是为了看看我是否可以让它工作 (test_doxygen.pl
):
#! /usr/bin/env perl
#** @file test_doxygen.pl
# @brief Testing Doxygen using Doxygen::Filter::Perl
#
# Description of the purpose of this file
#
# @author Håkon Hægland (hakon.hagland@gmail.com)
#
# @bug No known bugs.
#
#*
#** @class main
# The main class
#*
use strict;
use warnings;
my $b = add_one(1);
#** @function public add_one ($par1)
# @brief A brief description of the function
#
# A detailed description of the function
# @params $par1 required A number
# @retval value Input value plus one1
#*
sub add_one {
my ($par1) = @_;
return $par1 + 1;
}
然后我安装了 Doxygen::Filter::Perl 并使用 metacpan.org (the link is here) 的软件包维护者提供的 Doxyfile
配置文件
并将其放在与上面脚本相同的目录中。我在 Doxyfile
中更改了一行: INPUT
标记的值从 lib
更改为空字符串,以便仅在当前目录中搜索源文件..
我正在使用 Ubuntu 14.04,所以我用 sudo apt-get install doxygen
安装了 Doxygen,(我还需要安装 graphviz
: sudo apt-get install graphviz
)然后我终于 运行
$ doxygen
来自终端 window。生成的 HTML 文件 doc/html/index.html
包含有关文件和作者的文档,但不包含 add_one
子例程的任何文档。
我在这里错过了什么?
更新
Chromium 浏览器中的 class 视图如下所示:
可以看出,add_one
子例程没有 reference/link。
这是文件视图:
我刚刚看了这个,它似乎可以与 Doxygen (1.7.5.1) 一起使用,但是,较新版本的 Doxygen (1.8.9.1) 似乎无法正常工作。
我刚刚将 Doxygen::Filter::Perl 的新版本发布到 Github 和 CPAN,版本 1.70。这应该可以解决您遇到的问题。
所以问题在于处理 "my" 变量声明。它将值设置为 private: 并且 doxygen 永远不会返回。我在 Perl.pm 中添加了一行来解决这个问题,它现在应该对你有用了。由于您使用的是 pl 文件而不是 pm 文件,我还对 Doxyfile 进行了更改,因此您会希望从发行版中获取新文件。我已经将 1.71 发布到 Github 和 CPAN,并用您的确切示例对其进行了测试。