Приемы профессиональной работы в UNIX


Ctags - создание файла признаков исходного кода проекта


ИМЯ: ctags

ctags Делает файл признаков исходного кода для простоты доступа с помощью утилиты vi.

ФОРМАТ

ctags [файл ...]

ПРИМЕР ВЫЗОВА

ctags proj*.c

Делает файл признаков для всего исходного кода проекта.

ИСХОДНЫЙ КОД ДЛЯ ctags

1 : 2 # @(#) ctags v1.0 Create a C source code tag file Author: Russ Sage   4 awk -F'(' '/^[a-zA-Z_][a-zA-Z0-9_]*\(/ { 5 printf ("%s\t%s\t/^%s$/\n", $1, FILENAME, $0) }' $@ | sort -u +0 -1

ПЕРЕМЕННАЯ СРЕДЫ

FILENAME awk Переменная, содержащая имя файла.

ОПИСАНИЕ

Зачем нам нужен ctags?

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

Такая философия разработки программного обеспечения может, однако, породить некоторые проблемы. Главная проблема - попытка получить некоторого рода сцепку из всех маленьких кусков головоломки. Делаются вызовы подпрограмм, которые находятся в других файлах, возможно даже в других каталогах. Нужен инструмент, позволяющий нам, людям, посмотреть на программное обеспечение человеческим взглядом, т.е. содержательно, а не с точки зрения физического размещения. Этот подход чем-то аналогичен чтению книги в сравнении с чтением компьютерной распечатки. Распечатка заставляет вас делать последовательный просмотр, а книга допускает прямой доступ (и обычно предоставляет оглавление и предметный указатель для поиска специфических пунктов).

Ctags преодолевает этот разрыв, создавая файл специального формата, который распознают редакторы vi и ex. Этот файл содержит "признаки", которые могут быть использованы при работе с редактором для обеспечения автоматического доступа к любой нужной функции, не требующего от вас знаний о том, в каком файле находится функция.

Фактически, ctags предоставляет вам предметный указатель для группы файлов с исходным кодом на языке Си. Когда вы объединяете его с редактором, вы можете быстро найти любую функцию по известному вам имени и посмотреть тело функции. Это значит также, что вы можете легко копировать и вставлять функции в любой исходный файл, с которым вы сейчас работаете.

Если редактор не имел возможности работы с признаками или мы не построили инструментальное средство, использующее такое преимущество, то мы должны запускать grep для имени функции на наборе исходных файлов на Си (в надежде, что у нас есть подходящие файлы!), отмечать, какой файл имеет требуемую функцию, входить в этот файл редактором (вручную вводя все символы имени файла), а затем набирать символы шаблона поиска. Это большая работа, которая может занять много времени. Благодаря использованию возможности работы с признаками, для файла признаков, извлеченных из исходного кода, вся эта ручная работа сокращается.

Это сочетание возможностей иллюстрирует то, чему не часто придается значение: владельцы UNIX всегда настороженно относятся к возможности использовать преимущества многочисленных средств, уже имеющихся в таких программах, как vi или ex. Зачастую от 90 до 95 процентов необходимых вам возможностей уже имеются, ожидая относительно простого командного файла интерпретатора shell, связывающего их вместе в мощный новый инструмент.

Ctags уже существует в виде исполняемого модуля в системе Berkely (BSD) и в нынешней AT&T System V. Он происходит из системы Berkely, но поддерживается теперь в System V. Это иллюстрация взаимодействия между этими двумя источниками в мире UNIX, поскольку они взаимствуют полезные идеи друг у друга. Данное конкретное воплощение ctags является командным файлом утилиты awk, имитирующим исполняемую программу из системы Berkely, а это значит, что пользователи систем XENIX и предыдущих версий AT&T могут теперь извлечь пользу от применения ctags. Еще одно преимущество версии в виде командного файла в том, что его можно легко модифицировать, чтобы обрабатывать другие особенности языка Си. Такое вы не можете делать с исполняемым модулем, если только у вас нет дорогостоящей лицензии на исходный код.

Что делает ctags?




Начало  Назад  Вперед



Книжный магазин