cscope или ctags, почему выбирают один по другому? [закрытый]

Если вы работаете на компьютере с Windows, проблем с загрузкой или записью в указанный путь к папке не возникнет, за исключением синтаксических ошибок.

Но в случае пользователей Linux, есть обходной путь к этой проблеме, даже если нет никаких видимых синтаксических ошибок.

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

Даже если у вас есть права на запись и чтение в папку проекта, конечный пользователь не обрабатывает PHP. Он может обрабатываться www-data пользователем или группой.

Таким образом, чтобы сделать это www-data, сначала получите доступ, наберите;

sudo chgrp "www-data" your_project_folder

, как только это будет сделано, если нет доступа на запись и к следующему;

sudo chown g+w your_project_folder

Это поможет добиться успеха в Linux.

Пожалуйста, не то, чтобы это делалось в среде Linux с запущенным phpmyadmin и mysql.

128
задан Matthew Rankin 5 March 2013 в 14:42
поделиться

3 ответа

ctags предоставляет две возможности: позволяет переходить от вызовов функций к их определениям и выполнять комплексное завершение. Первый означает, что при завершении вызова метода нажатие g] или CTRL -] приведет к переходу к месту, где этот метод определен или реализован. Вторая функция означает, что когда вы набираете foo. или foo -> , и если foo является структурой, то будет показано всплывающее меню с завершением полей.

cscope также имеет первую функцию - использование set cscopetag - но не последний. Однако cscope дополнительно добавляет возможность перехода к любому месту, где вызывается функция.

Что касается перехода по базе кода, ctags приведет вас только к тому месту, где реализована функция. , тогда как cscope может показать вам, где вызывается функция.

Почему бы вам выбрать одну вместо другой? Хорошо, я использую оба. ctags проще настроить, быстрее запускать, и если вам нужно только прыгать в одну сторону, он покажет вам меньше строк. Вы можете просто запустить :! ctags -R. и g] просто работает. Это также делает возможным эту универсальную целостность.

Cscope отлично подходит для больших, неизвестных кодовых баз. Настроить сложно, потому что cscope нужен файл, содержащий список имен файлов для анализа. Также в vim по умолчанию не настраиваются привязки клавиш - вам нужно запустить : cscope blah blah вручную.

Для решения первой проблемы у меня есть сценарий bash cscope_gen. sh , который выглядит так:

#!/bin/sh
find . -name '*.py' \
-o -name '*.java' \
-o -iname '*.[CH]' \
-o -name '*.cpp' \
-o -name '*.cc' \
-o -name '*.hpp'  \
> cscope.files

# -b: just build
# -q: create inverted index
cscope -b -q

Это выполняет поиск кода, который меня интересует, создает список cscope.files и создает базу данных. Таким образом, я могу запустить ":! Cscope_gen.sh" вместо того, чтобы запоминать все шаги настройки.

Я сопоставляю поиск cscope с ctrl-space x 2 с помощью этого фрагмента, что смягчает другие недостатки cscope:

nmap <C-@><C-@> :cs find s <C-R>=expand("<cword>")<CR><CR>

Есть плагин cscope_maps.vim , который устанавливает кучу похожих привязок. Я никогда не могу вспомнить, что означают все параметры, поэтому, как правило, придерживаюсь ctrl-space.

Итак, в заключение: ctags легче настроить и в основном работает, ничего не делая, это также жизненно важно для omni-complete. cscope предоставляет больше возможностей, если вам нужно поддерживать большую и в основном неизвестную кодовую базу, но требует больше работы.

s этот плагин cscope_maps.vim , который устанавливает множество подобных привязок. Я никогда не могу вспомнить, что означают все параметры, поэтому, как правило, придерживаюсь ctrl-space.

Итак, в заключение: ctags легче настроить и в основном работает, ничего не делая, это также жизненно важно для omni-complete. cscope предоставляет больше возможностей, если вам нужно поддерживать большую и в основном неизвестную кодовую базу, но требует больше работы.

s этот плагин cscope_maps.vim , который устанавливает множество подобных привязок. Я никогда не могу вспомнить, что означают все параметры, поэтому, как правило, придерживаюсь ctrl-space.

Итак, в заключение: ctags легче настроить и в основном работает, ничего не делая, это также жизненно важно для omni-complete. cscope предоставляет больше возможностей, если вам нужно поддерживать большую и в основном неизвестную кодовую базу, но требует больше работы.

153
ответ дан 24 November 2019 в 00:40
поделиться

Несколько месяцев назад я был в такой же ситуации ...

Отсутствие точности ctags - это боль в .., и я считаю, что cscope намного лучше для всех связанных макросов прочее (и в ядре linux есть куча макросов) ..

относительно использования, это на самом деле просто ... вы просто набираете cscope -R в корне вашего ядра, и тогда вам не о чем беспокоиться о .. (я имею в виду, если вы просто хотите изучить это идеально ...)

Затем все привязки клавиш основаны на Ctrl- \ (вы можете переназначить его, если у вас аллергия на Ctrl), вы в основном используете s и g ....,

При разработке для ядра мне не нужно было так много доработки ....

В любом случае, используйте cscope, это намного удобнее, точнее.

15
ответ дан 24 November 2019 в 00:40
поделиться

Hmm... Наверное, стоит использовать вместо ctags...

Если использовать cscope, то можно увидеть цепи вызовов, т.е. кто вызывает эту функцию, и какие функции вызывает эта функция?

Я не уверен, можно ли это сделать с помощью ячеек/ктагов...

Это всего лишь одна возможность... как насчет того, чтобы найти файл, содержащий определение конкретной функции? Это можно получить только в cscope.

Я использую как cscope, так и etags, они оба хороши для разных вещей, особенно при работе с большой кодовой базой, такой как ядро Linux. На самом деле, я начал использовать cscope и etags, когда начал работать с ядром Linux / Xen.

LXR не очень хорош, потому что нужно нажимать, переходить по сети и т.д., в то время как можно собрать cscope и базы данных тегов на коде ядра и не нужно переходить по сети (в отличие от lxr).

.
4
ответ дан 24 November 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: