youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM

Как оформлять документацию с иерархической структурой (например, средствами JSDoc)?

Контекст вопроса:
Решил попробовать автоматическую генерацию документации к JavaScript коду, поскольку следить за согласованностью документации и кода утомительно, а в коде и так описания подробные.
Взялся за JSDoc как единственный генератор, о котором я слышал. Сразу же столкнулся с проблемой: JSDoc очевидно спроектирована по образцу JavaDoc и рассчитана на работу с (классовой) объектной моделью, а поэтому мне крайне неочевидно, как классифицировать ту или иную синтаксическую единицу кода как класс, неймспейс или модуль, как instance, member или static.

Суть вопроса:
Каким образом можно сгенерировать документацию, представленную в виде иерархии, включающую в себя и учитывающую:
1. Иерархию директорий (AMD, CJS и ES6 идентифицируют модуль полным или относительным путём к файлу)
Например, в папке js/DSL есть подпапки js/DSL/parser и js/DSL/interpreter, в каждой из которых есть модули.
2. Иерархию областей видимости функции (используется до 3 уровней вложенности функций и ещё один для замыкания модуля в AMD)
Например,
define(function() { // 1-я область
  var local;
  return function func(arg) { // 2-я область
    var local2;
    function local2modifier(callback) { // 3-я область
      local2.forEach(function() { // 4-я область
        ...callback...
      });
    }
  }
})
здесь все переменные, функции, аргументы и возвращаемые значения снабжены коментариями.
3. Для каждого модуля различие переменных, которые экспортируются и нет.
В примере выше это различие между local и func.
(я знаю ответ на этот пункт для JSDoc, правда, многословный. По этому поводу прошу посмотреть чужой вопрос Как правильно задокументировать код JSDoc? можно ли там сделать проще)

Важным моментом является то, что при описании ссылок адреса желательно заполнять не в полном виде Package1.Module2.NameSpace3.Function4.LocalVar5, а в относительном (относительно того файл или области, в которой ссылка ставится). Иначе становится достаточно затруднительным процесс переименования файлов и прочих изменений в иерархии.

Если это возможно, подскажите, как это можно сделать средствами JSDoc.
Если нет, посоветуйте, пожалуйста, нужный инструмент.
  • Вопрос задан
  • 290 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы