Подтвердить что ты не робот

Создание документации JavaScript с Doxygen

Я использую 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.

После нескольких попыток я подумал, почему бы не изменить параметр 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 в одну документацию.

Большое спасибо!

Привет!

4b9b3361

Ответ 1

Смотрите специальную команду \ 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)
    {
       ...
    }