2011-09-06 139 views
18

我在我的项目中使用PHP和JavaScript,我完全使用netbeans 7.0.1编写代码。我非常喜欢netbeans如何在PHP和JS代码中包含并使用JavaDoc评论风格。使用Doxygen生成JavaScript文档

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

为了进一步解释它:例如,我可以使用Doxygen并处理PHP文件和JsDoc来处理JS文件。结果是,我现在在两个不同的文件夹中有两个不同的文档 - 这是我不喜欢的结果。正如我所提到的,我希望在一个文档中。

所以,我首先通过使用doxygen助手js2doxy.pl(http://jsunit.berlios.de/internal.html)来实现,但这并不够灵活。它适用于“正常”定义的函数,但不适用于匿名js函数。

经过一番尝试之后,我想为什么不改变文档的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的两个输出合并成一个文档。

非常感谢!

问候!

回答

9

见的特殊命令\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) 
    { 
     ... 
    } 
+0

非常感谢!本周晚些时候我会详细介绍一下! –

+2

过了很久,我终于可以测试它,它似乎工作。有两件事我不得不改变:'\ Class'必须是'\ class'(小写),'\ property定义'必须是'\ property Definitions Definitions'。 不幸的是,不考虑类层次结构。我尝试了一些像'\ Properties Language.Definitions Language.Definitions'和'\ Class Language.Definitions'这样的部分工作,但仍然存在怪癖(例如,doxygen编译器警告)。 –

+0

检查doxygen页面,支持Javascript。除此之外,为我工作。 – Zane