Инструмент для сканирования комментариев к коду и преобразования в стандартный формат

Я работаю над проектом C, который видел много разных авторов и много разных стилей документации.

Я большой поклонник doxygen и других инструментов для создания документации, и я хотел бы перенести этот проект на используйте одну из этих систем.

Кто-нибудь знает об инструменте, который может сканировать комментарии исходного кода по ключевым словам, таким как «Описание», «Автор», «Имя файла» и другим видам контекста, для разумного преобразования комментариев в стандартный формат? В противном случае я бы мог написать сумасшедший скрипт или преобразовать вручную.

Спасибо


person Ryu    schedule 28.01.2010    source источник


Ответы (3)


Когда я читал книгу О'Рейли о Lex + Yacc, я мог думать только о том, что был код для вывода комментариев в командную строку, в главе 2 был раздел, который показывает, как анализировать код на наличие комментариев, включая // и _2 _... На странице есть ссылка для примеров, загрузите файл progs.zip, вы ищете ch2-09.l файл, который нужно создать, это можно легко изменить для вывода комментариев. Затем это можно использовать в сценарии для фильтрации «Имя», «Описание» и т. Д.

Я могу разместить здесь инструкцию, как это сделать, если вам интересно?

Изменить: я думаю, что нашел то, что вы ищете, предварительно созданный экстрактор документации комментариев здесь.

Надеюсь, это поможет, С уважением, Том.

person t0mm13b    schedule 28.01.2010

Я думаю как tommieb75 предполагает, что правильный синтаксический анализатор - способ справиться с этим.

Я бы посоветовал взглянуть на ANTLR, поскольку он поддерживает перезапись буфера токенов на месте, что я думаю, можно свести к минимуму то, что вам нужно сделать для сохранения пробелов и т. д. - см. главу 9.7 в Полная справка по ANTLR.

person John Carter    schedule 28.01.2010

Если у вас относительно ограниченный набор стилей для синтаксического анализа, было бы довольно просто написать макрос Visual Studio (для использования в среде IDE) или автономное приложение (для простой обработки исходного кода в автономном режиме), которое будет искать файл для комментарии, а затем переформатируйте их в новый стиль, используя определенные заголовки или теги, чтобы разделить их.

Ярлык, который может вам помочь, - это использовать мою надстройку AtomineerUtils Pro Documentation. Он может находить и преобразовывать все комментарии в исходном файле за один проход. Из коробки он анализирует XML-документацию, форматы Doxygen, JavaDoc и Qt (или что-то достаточно близкое к ним), а затем может вывести комментарий в любом из этих форматов. Его также можно настроить для преобразования несовместимых устаревших комментариев. Есть несколько вариантов для облегчения преобразования, но самый мощный вызывает макрос Visual Studio с текст комментария перед его синтаксическим анализом, что позволяет применить небольшую обработку строки для преобразования устаревших комментариев в формат, который AtomineerUtils может впоследствии прочитать (пример макроса для одного из наиболее часто используемых устаревших стилей предоставляется на веб-сайте, поэтому он обычно довольно просто изменить его, чтобы он работал с вашим устаревшим форматом, если он подходит для анализа компьютером).

Преобразованный текст не должен быть особенно аккуратным - как только AtomineerUtils сможет извлечь записи documentaiton, он очистит комментарии для вас - он дополнительно автоматически применяет перенос слов, согласованный порядок элементов и интервалы и т. Д. И гарантирует, что комментарий точно описывает элемент кода он документирует (его записи соответствуют параметрам, параметрам типа, выброшенным исключениям и т. д.), а затем выводит заменяющий комментарий в настроенном формате. Это избавит вас от необходимости много работать с макросом преобразования, чтобы навести порядок - и после завершения преобразования вы можете продолжать использовать надстройку, чтобы сэкономить время при документировании кода и гарантировать, что все новые комментарии продолжаются в том же стиле.

person Jason Williams    schedule 29.01.2010