【问题标题】:Generate JavaScript documentation with Doxygen使用 Doxygen 生成 JavaScript 文档
【发布时间】:2011-11-11 08:06:14
【问题描述】:

我在我的项目中使用 PHP 和 JavaScript,我完全使用 netbeans 7.0.1 编写代码。我真的很喜欢 netbeans 如何包含和使用 JavaDoc 注释样式,包括 PHP 和 JS 代码。

现在,我想从 PHP 和 JS 代码生成代码文档。我知道有几种方法可以做到这一点,但我的主要目标是在 one 文档中包含这两个部分的文档。

进一步解释:例如,我可以使用 Doxygen 处理 PHP 文件,使用 JsDoc 处理 JS 文件。结果是,我现在在两个不同的文件夹中有两个不同的文档——这是我不喜欢的结果。正如我所提到的,我希望将两者都放在一个文档中。

所以,首先我通过使用 doxygen 帮助程序 js2doxy.pl (http://jsunit.berlios.de/internal.html) 来解决问题,但这不够灵活。它适用于“普通”定义的函数,但不适用于匿名 js 函数。

经过一番尝试,我想为什么不改变文档的 FILE_PATTERNS 选项来处理 .js 文件,因为 cmets 的 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 的两个输出合并到一个文档中,我也不介意。

提前非常感谢!

您好!

【问题讨论】:

    标签: javascript documentation doxygen


    【解决方案1】:

    见特殊命令\fn在doxygen中显式声明函数,最好在source的头部,像这样:

    /*!
     * 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)
        {
           ...
        }
    

    【讨论】:

    • 经过这么长时间,我终于可以测试它并且它似乎可以工作。我必须更改两件事:\Class 必须是 \class(小写)和 \property Definitions definitions 必须是 \property Definitions Definitions。不幸的是,没有考虑类层次结构。我尝试了 \property Language.Definitions Language.Definitions\class Language.Definitions 之类的方法,它们部分有效,但仍有一些怪癖(例如 doxygen 编译器警告)。
    • 检查 doxygen 页面,支持 Javascript。除此之外,对我有用。
    • @Zane, doxygen javascript pages 不加载你能告诉配置它支持javascript的步骤吗?
    • @user3933607,对我来说都不是,我发现了脚本here
    • @user3933607:这对我有帮助:coherent-labs.com/blog/documenting-javascript-with-doxygen 你需要 doxygen.js - 该页面告诉你在哪里可以找到它以及如何配置 doxygen 以使其工作