уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Релиз RD Studio XE2 принес нам довольно много новинок на рассмотрение и проверку работоспособности/важности/необходимости которых у нас, видимо, уйдет весь промежуток времени до релиза XE3. Нововведения типа платформы Firemonkey или механизма LiveBindings сейчас на слуху у многих. Но не стоит забывать и про такие, пусть и не сильно заметные, но тем не менее полезные нововведения как, например, инструмент Documentation Insight. Про нечто подобное этому инструменту я говорил не далее как 27 апреля 2010 года в статье для конкурса на DelphiFeeds.ru, тема которого тогда была «Чего не хватает в Delphi?» И вот моя «хотелка» сбылась — в Delphi XE2 появился довольно удобный инструмент для создания и просмотра документации исходного кода.  

Вначале небольшое введение в документирование кода в Delphi.

Документирование кода в Delphi.

Если не рассматривать всякого рода сторонние инструменты для создания документации к вашим исходникам, например, Doc-O-Matic, PasDoc и т.д., то «из коробки» нам остается создание документации на основе XML. Смысл такого документирования заключается в следующем: над элементом код, которые необходимо отразить в документации (класс, метод, переменная и т.д.) помещается специальный блок, каждая строка которого начинается с тройного слэша (///). В этом блоке располагаются XML-теги, содержащие какую-либо информацию по элементу (описание, значения переменных, ссылки на другие разделы документации и т.д.). Например, так можно сделать небольшой описание для класса формы:

На текущий момент, в Delphi XE2 используются следующие XML-теги для формирования документации:

  • summary — краткое описание функции или класса
  • para — тег, используемый для задания нового параграфа
  • c — используется для задания создания моноширинного текста
  • code — преформатированный текст, например, исходный код
  • remarks — замечания к функции или классу
  • param name=»ParameterName» — описание параметра с названием ParameterName
  • see — дополнительные источники информации по элементу кода
  • returns — описание возвращаемых значений
  • exception cref=»EExceptionTypeName» — исключения, которые могут быть сгенерированы в результате работы метода
  • permission cref=»PermissionType» — разрешения метода
Используя приведенные выше XML-теги, можно создать, к примеру, такое описание для функции:
Что мы получаем в итоге от использования такого вида документирования?  Во-первых в Delphi (по-моему с 2010 версии или с XE) есть такой полезный инструмент как Help Insight, который парсит всю XML-документацию в коде и формирует на основе неё вот такие удобные подсказки:
Собственно, использование для Help Insight XML-документации исходного кода должно вполне хватить для нормальной работы с проектом, если, конечно, версия Delphi хватает. Ну, а если не хватит Help Insight, то, тогда во-вторых — на основе XML-документации можно генерировать HTML-справку по коду о чем я расскажу чуть ниже. А пока перейдем к рассмотрению нового инструмента — Documentation Insight.

Documentation Insight в Delphi XE2

Ранее в Delphi были такие такие инструменты как Code Insight, Help Insight, а теперь ещё появился и Documentation Insight. Этот инструмент разработан в DevJET Software и предназначен для удобного просмотра и создания документации исходного кода. Для вызова Documentation Insght достаточно выбрать в главном меню «Tools -> Documentation Insight Express -> Show Documentation» или же воспользоваться дефолтными горячими клавишами Ctrl+Shift+D. Для документации, представленной выше окно Documentation Insight будет выглядеть следующим образом:
Можете «прилепить» это окно, например, снизу в RAD Studio и иметь всегда под рукой удобный справочник по исходнику. Documentation Insight показывает информацию по коду сразу же как вы вызываете метод или создаете класс.
Чтобы создать документацию с помощью Documentation Insight достаточно установить курсор на необходимый элемент кода и в окне инструмента выбрать вкладку Design:
В Express-версии Documentation Insight мы имеем не такой большой размах по части возможных элементов справки. Всё, что мы можем сделать в редакторе по дефолту — это заполнить для описания класса теги summary и remarks, а для методов Documentation Insight добавит нам возможность заполнения тегов params, т.е. окно дизайнера будет выглядеть так:
Но и этого, думаю, вполне достаточно для небольших проектов, чтобы создать необходимую документацию для исходника. Ограничения редактора Documentation Insight никак не отражаются на работе вьювера. То есть, если я ручками добавлю в справку, например, вот такие теги:
то в итоге при просмотре документации я увижу вот такое описание метода:
Для оформления вашей документации можно также использовать различные дополнительные теги, например seealso для вставки ссылок на сторонние ресурсы или другие разделы документации. Более подробно об XML-тегах для оформления документации Вы можете почитать в справке к Documentation Insight.
Платная версия Documentation Insight стоит 99$ и, как раз-таки, дает в редакторе использовать все возможные теги для оформления документации.
В заключение этой части статьи, предлагаю Вам посмотреть небольшой шестиминутный ролик из серии «31 Days of RAD Studio XE2«, посвященный инструменту Documentation Insight:
[youtube_sc url=»zw8SAX2ZrNA» title=»Documentation%20Insight%20Delphi%20XE2″ color=»white» theme=»light» modestbranding=»1″ fs=»1″]

Создание HTML-документации проекта

Как я говорил выше, на основе нашей XML-разметки для документации исходника можно также генерировать и HTML-справку. Сделать это довольно просто, используя инструмент Model View.

Алгоритм создания HTML-документации в этом случае может быть таким:

1. Создаем необходимые описания классов и методов в исходнике
2. В Project Manager переключаемся на вкладку Model View и соглашаемся включить поддержку моделирования.

3. В открывшемся окне выбираем наш проект и жмем Ok:

Теперь вкладка Model View будет выглядеть так:

4. Жмем в окне Model View правую кнопку мыши и в меню выбираем Generate Documentation:

5. В новом окне выбираем путь к документации, необходимые опции и жмем Ok:

В результате в выбраной директории будут сформированы необходимые файлы HTML-документации, которую можно будет просмотреть в браузере. Выглядеть справка по умолчанию будет так:

Конечно, использовать инструмент моделирования исключительно для того, чтобы сгенерировать HTML-справку — это крайне нерационально, т.к. этот инструмент имеет на порядок больше полезных функций и заслуживает отдельного внимания, но приведенный выше способ создания документации наиболее простой.

Что же касается самой HTML-справки, которую генерирует инструмент Delphi, то тут я, прямо скажу, не в восторге. По сравнению с тем же Doc-O-Matic документация содержит много лишнего, да и графика страдает. Поэтому этим способом создания HTML-документации я в принципе не пользуюсь. А вот Modeling периодически использую, особенно, когда в руки попадает чужой код, но это уже совсем другая история…

В заключение скажу, что новый инструмент Documentation Insight мне понравился даже включая во внимания его урезанную версию. Вполне работоспособный и удобный инструмент для документирования кода. Если разживусь на лишний рубль (а точнее 3к рублей) может даже и платную версию как-нибудь приобрету, если возникнет острая необходимость получить дополнительные «плюшки» для работы, но это всё мечты.

Как Вам новый инструмент? Планируете использовать его в дальнейшей работе?

Книжная полка

Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS
купить книгу delphi на ЛитРес
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
Описание: Книга рассчитана на подготовленного пользователя ПК, желающего самостоятельно научиться программировать и разрабатывать приложения и базы данных в среде Delphi. Опытные программисты смогут использовать издание как справочник. В тексте подробно описаны более 80 компонентов VCL, функции Object Pascal и Win32 API.
купить книгу delphi на ЛитРес
Автор: Юрий Магда
Описание: Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
14 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
balmo
balmo
18/12/2011 12:25

Спасибо.
Ограничения встроенной в среду утилиты проявляются не только в урезанном наборе тегов. Также, не разрешается документировать приватные разделы классов. Впрочем, это ограничение легко обойти временно объявив все секции как public.
А вот из доступных возможностей хочется упомянуть еще возможность документирования перечислимых типов. В этом случае помимо summary и remarks можно описать каждое принимаемой переменной типа значение.

Александр
18/12/2011 15:01

Help Insight есть в Delphi давно. Не уверен, есть ли он в D2005, но в D2006 — точно. Кстати, туда можно установить расширенный шаблон от Documentation Insight.

Дима
Дима
19/12/2011 12:53

Как всегда спасибо за статью Влад. Может мелочь, но при переключении в Project Manager на Model View у меня ни когда ни чего не происходило, пока явно не сказать через меню Project-Modeling Support и уже там подключить проект. ИМХО конечно, да и денег стоит, но, что касается управлением классов и всего ООП однажды попробовав modelmaker code explorer на другое уже больно смотреть :) А так, Documentation Insight один из главных факторов моего был, на переход к XE2.

Дима
Дима
19/12/2011 14:44

Ну это да, ну так, мало-ли у кого так-же, что-бы сразу знать кудымс ткнуться :)

Дима
Дима
19/12/2011 14:48

Прошу прощения Влад и у всех читающих, решил перепровериться, создал новый проект и при переключении спрашивает о моделировании, если отказаться, то больше и не будет спрашивать… я на примере твоей статьи начал на предыдущем проекте и видимо когда-то отказался… вот блин… век живи век учись….

Александр
22/12/2011 01:53

Тынц.

Кстати, Влад, у тебя некорректно работает кнопка для вставки ссылок в комментах. Там что-то с текстом. 

Конан сын юриста
Конан сын юриста
13/03/2012 13:11

Идея документирования хорошая, но сделана топорно.  Порочна сама идея размещать документирование в коде. Раз есть доступ к объектам модуля — классам, свойствам, методам, — то модифицировать модуль вставками совершенно излишне. Данные уже хранятся в памяти! Об этом свиделельствует кнопка сохранения и настройка автосохранения. Значит надо просто сбрасывать их в отдельный файл с другим расширением. Лучше всего в формате xml. Если получится сделать совместимость с проектами Help & Manual — лучшего и не пожелаешь. Есть интеграция со справкой IDE, но нет возможности сделать отдельный проект справки. Явное упущение! Также вставленные в текст кода блоки с документацией корежат его структуру. Я проверил… Подробнее »

Конан сын юриста
Конан сын юриста
13/03/2012 13:14

Кстати, есть идея реализовать альтернативный продукт такого рода. Думаю, добротный пилотный проект возможен в течение пары месяцев. Свою кандидатуру не предлагаю, потому что шеф такого задания пока не придумал мне. многогрешному. А в народ кинуть мысль стоит, может найдет своего Моцарта

 

данил
данил
26/09/2012 03:08

как в TXMLDocument задать пропуск перед зыкрытием тега?

Даниил Будницкий

в xml сгенерированной какой-то программой одиночные, пустые теги закрываются с пробелом перед косой чертой [code][\code]

Jack
Jack
28/06/2013 18:40

Есть прекрасный инструмент для документирования — JavaDoc. Проверенный временем, не особо перегружающий код. PasDoc — немного корявенький аналог для Delphi. Почему нельзя было развить и «узаконить» нормальный продукт? С XML — это же ужасс. Да ещё и «не разрешается документировать приватные разделы классов»… С какого перепуга *инструмент* накладывает ограничения? Прибавим такое ограничение XML, как регистрозависимость — и составление такой документации окончательно превращается в обезьянью работу. Я всеми руками за внутреннее документирование исходников, постоянно к этому даже принуждаю — но я против таких затрат.