使用Doxygen生成JavaScript文档

26
我在我的项目中使用PHP和JavaScript,完全使用netbeans 7.0.1编写代码。我非常喜欢netbeans包含和使用JavaDoc注释风格,用于PHP和JS代码。
现在,我想生成PHP和JS代码的代码文档。我知道有几种方法可以做到这一点,但我的主要目标是在一个文档中拥有两个部分的文档。
进一步解释:例如,我可以使用Doxygen处理PHP文件和JsDoc处理JS文件。结果是,我现在有两个不同的文档在两个不同的文件夹中 - 这是我不喜欢的结果。正如我所提到的,我希望两者都在一个文档中。
因此,首先我通过使用doxygen助手js2doxy.pl(http://jsunit.berlios.de/internal.html)的方式进行了尝试,但那不够灵活。它对于“普通”定义的函数很有效,但对于匿名js函数则无效。
经过一番尝试后,我想为什么不改变document的FILE_PATTERNS选项以处理.js文件,因为注释的JavaDoc样式与PHP使用的样式几乎相同。结果看起来很有前途,但是有一些函数在文档中丢失了。

以下是示例:

/**
 * Definitions for the languages.
 * @memberof Language
 */
Language.Definitions = (function()
{
...
}

这很好用,我可以看到文档。但是:

**
 * Definitions for the languages
 * @memberof Language
 */
Language.Definitions = (function()
{
    var Translations = {};

    /**
     * Replaces strings.
     * @memberof Language
     * @param string translation Translation string 
     * @param array parameters (optional) List of parameters
     * 
     * @return string replaced string
     */
    function replaceStrings(translation, parameters)
    {
       ...
    }

在这个例子中,我看到了Language.Definitions的文档,但是没有replaceStrings()的文档。你有任何想法,我做错了什么吗?同样的结构被JsDoc很好地处理。
另外(部分属于Language.Definitions)...
... 
return {
        /**
         * Initialize translations
         * 
         * @memberof Language
         */
        initTranslations: function()
        {
           ...
        } 
... 
}

...在文档中没有显示。

如果有人能向我展示如何最好地将doxygen和JsDoc的两个输出合并成一个文档,我也不介意。

提前感谢您!

问候!

1个回答

14
请参考特殊命令\fn,在doxygen中显式声明函数,最好在源代码的头文件中进行声明,如下所示:
/*!
 * Language
 * Declare the root class
 * \Class Language
 */

/*! 
 * definitions is a property in the Language class
 * \property Definitions definitions
 */

/*!
 * Document the Definitions static class that used as property in the Language class
 * \Class Definitions
 */

/*!
 * Replaces strings
 * Document the static method for the Definitions class
 * \fn string replaceStrings(translation, parameters)
 * \memberof Definitions
 * \param string translation Translation string 
 * \param array parameters (optional) List of parameters
 * \return string replaced string
 */

Language.definitions = (function()
{
    var Translations = {};

    function replaceStrings(translation, parameters)
    {
       ...
    }

2
经过那么长时间,我终于可以测试它了,而且似乎工作正常。我必须更改两件事:\Class 必须是 \class(小写),而 \property Definitions definitions 必须是 \property Definitions Definitions。不幸的是,类层次结构没有被考虑在内。我尝试了像 \property Language.Definitions Language.Definitions\class Language.Definitions 这样的东西,部分起作用,但仍然存在一些问题(例如 doxygen 编译器警告)。 - John Archer
请查看Doxygen页面,它支持Javascript。除此之外,对我来说很有效。 - Zane
1
@Zane,doxygen的javascript页面(http://www.stack.nl/~dimitri/doxygen/helpers.html#doxfilt_js)无法加载,请问你能否告诉我如何配置以支持javascript? - user3806649
1
@user3933607,对我来说也是一样,我在这里找到了脚本(https://github.com/mrdon/jsunit/blob/master/jsunit/util/js2doxy.pl)。 - Wagner Pinheiro
4
这是一份能帮到我的东西:http://coherent-labs.com/blog/documenting-javascript-with-doxygen/。你需要使用doxygen.js——这个网页会告诉你在哪里找到它,并配置doxygen以使其正常工作。 - Zane
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接