2011-09-06 131 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