|
»» FreePascal »» Lazarus »» MSEide + MSEgui »» Разное »» Книги |
01.03.2006 Иван Шихалев Автодокументация исходников посредством PasDocНастоящая статья представляет собой описание основных возможностей утилиты PasDoc. Статья не претендует на полноту, но вполне может использоваться для начального знакомства с программой. Для настоящего освоения PasDoc лучше всего просто взять и поэкспериментировать, вооружившись оригинальной (на английском) Wiki-документацией с официального сайта: http://pasdoc.sourceforge.net/. СодержаниеОбщие сведенияПрограмма PasDoc предназначена для того, чтобы формировать документацию по модулям Pascal, используя комментарии в исходных текстах. Поддерживается синтаксис как Delphi, так и Free Pascal1. Сама программа также может быть скомпилирована как тем, так и другим. Впрочем, экспериментальная оболочка GUI должна собираться в Lazarus'е — форм в борландовском формате в исходниках не замечено. Соответственно, PasDoc может работать на разных платформах — тех, которые поддерживаются FPC (а нас, собственно, они и интересуют). PasDoc запускается из командной строки и формирует документацию в форматах HTML, HtmlHelp, LaTEX и т.д. из исходных файлов модулей. Что касается графической оболочки, на сегодняшний момент она носит статус экспериментальной и останавливаться мы на ней подробно не будем. СтатусТекущая версия, использованная при написании данной статьи — 0.10.0. В последнее время проект довольно активно развивается, свежую версию см. на SourceForge. Лицензия — GNU GPLv2. Сайт — http://pasdoc.sipsolutions.net/ или http://pasdoc.sourceforge.net/. Принцип работыPasDoc обрабатывает исходные тексты модулей, выполняя синтаксический разбор —
в результате формируется общая структура документации, и разбирая текст
комментариев — из них формируются описания программных элементов. При этом могут
разбираться как все комментарии, так и только помеченные специальными
маркерами (например, “ Описанием элемента считается непосредственно предшествующий ему
комментарий, или непосредственно следующий за ним и начинающийся с
символа “ Специальные pasdoc-теги используются также для указания специальной информации (автор, краткое описание…), гиперссылок на другие программные элементы и т.д. Далее мы рассмотрим их подробнее. Источники информацииБинарный дистрибутив PasDoc документации не содержит (вероятно, она появится к релизу). Тем не менее, в архиве с исходниками присутствует руководство по программе в форматах HTML и PDF. Впрочем, содержание данного руководства несколько отстает от текущих возможностей программы, как это часто бывает в открытых проектах. Наиболее полную и свежую информацию можно получить на сайте PasDoc. Синтаксис комментариевБлокиРассмотрим, как PasDoc разбирает комментарии в программе… А разбирает он их
поблочно. Блок в данном случае — единичный блочный комментарий —
“ Зачастую не все комментарии желательно вносить в описания — могут
понадобиться комментарии и сугубо технические. PasDoc предлагает использовать
механизм маркеров — специальных последовательностей символов, которые
выделяют «документирующие» комментарии и позволяют игнорировать прочие.
Подробнее см. далее описание параметров командной
строки “--staronly” и
“--marker”. При использовании маркеров ими
следует помечать комментарии, которые должны рассматриваться как описания —
вставлять маркер сразу после открывающих символов комментария.
Например, если в качестве маркера выбрана последовательность “ Блок с описанием может располагаться и сразу после объявления
идентификатора, но в этом случае следует непосредственно за открывающими
символами комментария (и маркером, если таковые используются) поместить символ
“ Пример
unit Dummy;
{< Дурацкий модуль.
Специально для примера — второй абзац описания.
}
interface
type
(* Совершенно дурацкий тип-запись. *)
TDummy = record
A : Integer; //< Поле «A»
B : Boolean; //< поле «B»
end;
implementation
end.
В примере для простоты не использованы маркеры. Особо следует отметить пустую строчку в первом комментарии. Таким образом
в описании разделяются абзацы (в случае выходного формата HTML — тег
“ ... PasDoc-тегиТеперь о самом «вкусном»: PasDoc использует специальные ключевые слова,
именуемые «тегами», для дополнительной разметки внутри
комментариев-описаний. Все теги начинаются с символа “ Теги могут иметь параметры, заключаемые в круглые скобки. Как правило,
параметр единственный и представляет собой некий текст, трактуемый так же, как
и общий текст описания. В некоторых случаях параметр трактуется специальным
образом: теги “ На самом деле, скобки вокруг параметров можно и не использовать: если PasDoc не находит открывающую скобку после тега, который предполагает параметры, то трактует как параметр весь текст от тега и до конца строки (или блока комментария). Понятно, что такая форма записи неприменима к параметрам, содержащим несколько строк, а также к параметрам вышеупомянутых специальных тегов. Теги-описания
ГиперссылкиВполне естественно, что PasDoc автоматически генерирует гиперссылки между описаниями программных элементов. Степень автоматизма может быть разной — см. “--auto-link”. Для начала рассмотрим явные ссылки:
Если включен ключ “--auto-link”, PasDoc
будет генерировать гиперссылки везде, где ему встретится объявленный
идентификатор, что позволяет избежать явного указания
“
Отдельно хотелось бы отметить ряд контекстно-зависимых ссылок — это теги без параметров, которые в тексте заменяются значениями (и ссылками), зависящими от того элемента, в описании которого они были употреблены.
ФорматированиеСледующие теги предназначены для форматирования и оформления описаний, генерируемых программой PasDoc.
Несколько особняком стоят теги, вставляющие особым образом форматированные конструкции и специальные символы.
Кроме описанного простого форматирования PasDoc позволяет создавать различные списки (упорядоченные, неупорядоченные и определений), а также таблицы. Возможности их форматирования обширны и выходят за рамки обзорной статьи. Интересующиеся могут обратиться к документации на http://pasdoc.sourceforge.net/. СпециальныеНижеприведенные теги используются для специальных целей и трудно поддаются классификации.
Расширенные возможностиДирективы компилятораСобственно, нас интересуют не все директивы, а только те, которые способны
повлиять на состав документации. Это, во-первых, директивы условной компиляции,
и во-вторых, директивы включения файла ( Условные директивыPasDoc поддерживает директивы условной компиляции частично — на том уровне,
который был доступен еще в Turbo Pascal —
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
--help |
Показывает краткую справку по параметрам командной строки. |
||
--version |
Показывает версию PasDoc. |
|||
|
|
--verbosity |
|
|
Устанавливает степень подробностей выводимой в процессе информации. |
|
|
--define |
|
Определяет символы условной компиляции. Символы должны располагаться за ключом через запятую без пробелов. |
|
|
|
--description |
|
Читает описания из файла. |
|
|
|
--conditionals |
|
Читает из файла символы условной компиляции. Каждый символ в файле должен располагаться в отдельной строке. |
|
|
|
--include |
|
Определяет пути поиска включаемых файлов. |
|
|
|
--source |
|
Берет имена исходных файлов из данного указанного. |
|
--html-help-contents |
|
Указывает файл .cnt для использования в качестве содержания справки в формате HtmlHelp (.chm). Если данный параметр не указан, то .cnt-файл прекрасно генерируется автоматически. |
||
|
|
--footer |
|
Указывает файл подвала (для выходного формата HTML). |
|
|
|
--header |
|
Указывает файл шапки (для выходного формата HTML). |
|
|
|
--name |
|
|
Указывает имя выходного файла без пути и расширения (кроме формата HTML, в котором никакого эффекта не производит). |
|
|
--title |
|
Указывает заголовок для документации. |
|
|
|
--format |
HtmlHelp, LaTeX, LaTeX2RTF |
|
Выходной формат документации. Для форматов, отличных от HTML, PasDoc формирует только исходные файлы, не запуская копилятор (hhc, latex и т.д.). |
|
|
--output |
|
Каталог, куда помещаются выходные файлы. |
|
|
|
--exclude-generator |
Если этот ключ не указан, то PasDoc помещает в конец каждой
генерируемой html-страницы информацию о себе: |
||
|
|
--language |
|
|
Указывает язык и кодировку документации. Заметим, что данная кодировка
относится как к исходным, так и к выходным файлам. |
--staronly |
Если указан данный ключ, то обрабатываются только комментарии, начинающиеся
с “ |
|||
--marker |
|
Если указан данный ключ, то обрабатываются только комментарии, начинающиеся
с “ |
||
--marker-optional |
Употребляется вместе с ключом “--marker” (или “--staronly”). В этом случае обрабатываются все комментарии, но ‹маркер› в начале комментария игнорируется и не попадает в описание (если просто не указывать ключ “--marker”, то любые символы будут считаться началом собственно текста). |
|||
--numericfilenames |
Если указан данный ключ, PasDoc генерирует цифровые имена html-файлов документации. |
|||
|
|
--visible-members |
|
Ключ указывает список типов видимости, которые будут отражены в
документации. Список может состоять из следующих значений (через запятые без
пробелов): “private”, “protected”, “public”,
“published”, “automated”, “implicit”. Последнее —
особый тип видимости, введенный PasDoc'ом для специальных целей (см. далее
ключ “--implicit-visibility”).
|
|
--write-uses-list |
Если указан данный ключ, в описания модулей добавляется перечень используемых. |
|||
--graphviz-uses, --graphviz-classes, --link-gv-uses, --link-gv-classes |
Данные параметры относятся к использованию программы «GraphViz». Подробности см. в документации. |
|||
--abbreviations |
|
Указывает файл аббревиатур. Файл должен содержать строки вида
|
||
--aspell |
|
Подключает проверку орфографии посредством aspell. В настоящее время работает только с выходным форматом HTML. |
||
--spell-check-ignore-words |
|
Указывает файл со словами-исключениями для aspell. Файл должен содержать по одному слову на строку. |
||
--cache-dir |
|
Каталог кэширования. |
||
--link-look |
full, stripped |
|
Данный ключ управляет отображением составных идентификаторов:
“default” означает, что ссылка вида
“ |
|
--full-link |
Синоним “--link-look=full”. |
|||
--css |
|
Позволяет заменить css-файл, используемый по умолчанию на любой другой. Файл копируется в каталог вывода. |
||
--auto-abstract |
Автоматически формирует краткое описание (вместо тега
“ |
|||
--use-tipue-search |
Использовать JavaScript-поиск в документации. См. выше «Поиск». |
|||
--sort |
|
Указывает категории программных элементов, которые в документации будут
отсортированы по алфавиту. Неперечисленные войдут в документацию в порядке
появления в коде. |
||
--introduction, --conclusion |
|
Эти ключи указывают файлы введения и заключения соответственно. См. выше «Введение» и «Заключение». |
||
--latex-head |
|
Указывает файл, который будет помещен в преамбулу документа при выходном формате LaTEX. |
||
--implicit-visibility |
published, implicit |
|
Определяет, как будут трактоваться элементы классов, видимость которых явно
не указана — то есть тех элементов, которые расположены непосредственно после
ключевого слова “ |
|
--no-macro |
Отключает поддержку макросов FPC. |
|||
--auto-link |
Включает режим автоматических ссылок. См. соответствующие теги. |
|||
Общее впечатление от программы PasDoc — более чем благоприятное. Свою основную задачу — формирование документации из комментариев в исходниках — она выполняет вполне успешно.
Пока писалась данная статья, на
«PasDoc Wiki» появилась информация
о новых тегах, которые будут доступны в следующем релизе — “@image”
и “@include”. Первый служит для вставки картинок, а второй,
соответственно, для вставки в описание текста из внешнего файла. Поскольку
в текущем релизе они еще недоступны, в материал статьи я их решил не вставлять.
В общем — следите за обновлениями на официальном сайте.
Есть некоторые недоработки в русской локализации… Напомню, что проект открытый и принять посильное участие может каждый желающий. Полагаю, поддержкой русского языка должно озаботься именно русскоязычное сообщество…
В общем и целом, для быстрого создания документации из откомментированных исходников PasDoc — оптимальный выбор. Если же потребности немного иные — многоязычность, версионность, более гибкое оформление — есть FPDoc, входящий в состав дистрибутива Free Pascal. О нем я надеюсь написать в ближайшее время.
1) Различия в синтаксисе Delphi и FPC с точки зрения PasDoc совсем незначительны и мы их рассматривать не будем.
2) Само собой, это относится к комментариям на языках, использующих латиницу.
3) В настоящее время (версия 0.10.0) данная пометка не локализована.
4) Строго говоря, фрагмент, вставляемый
параметром “--footer”, не всегда размещается непосредственно перед
“</body>” — это зависит от наличия «информации о генераторе»
— см. ключ
“--exclude-generator”.
| FPC | 2.6.0 | release |
| Lazarus | 0.9.30.4 | release |
| 0.9.31 | ||
| MSE | 2.8.2 | release |
| Стоматология |
| Фотографии интерьера. Прайс-лист и кредитные программы. |
| 22clinic.ru |
| Экспресс почта |
| Адресно-телефонный справочник. Экспресс-доставка почты. |
| timeexpress.ru |