Ответ 1
Попробуйте следующее:
cscope -R -L -2 ".*" | awk -F ' ' '{print $2 "#" $1}' | sort | uniq
- Команда
cscope -R -L -2 ".*"
выведет функции, вызываемые любая функция (см. пояснение ниже). Для каждой найденной ссылкиcscope
выводит строку, состоящую из имени файла, имени функции, номера строки и текста строки, разделенных пробелами. - Используйте
awk
для извлечения имени функции$2
и имени файла$1
, разделенного#
. Измените$2
,$1
и разделитель#
, если вам нужны другие выходные поля или разделитель. - Сортировка вывода с помощью
sort
. - Получить уникальные элементы с помощью
uniq
.
cscope
(см. http://cscope.sourceforge.net/cscope_man_page.html):
-
-R
Восстановить подкаталоги для исходных файлов. -
-L
Сделайте один поиск с линейно-ориентированным выходом при использовании с -num шаблон. -
-2 ".*"
Перейдите в поле ввода num (здесь поле 0) и найдите pattern (здесь.*
для всех). Вы можете видеть поля ввода в режиме экрана cscope. Это может зависеть от версии, которую вы используете. Поля для версии 15.8a под debian:- 0: Найдите этот символ C:
- 1: Найдите это глобальное определение:
- 2: Найти функции, вызываемые этой функцией:
- 3: Найти функции, вызывающие эту функцию:
- 4: найдите эту текстовую строку:
- 5: измените эту текстовую строку:
- 6: Найдите этот шаблон egrep:
- 7: Найти этот файл:
- 8: Найти файлы # включая этот файл: