cscope как функциональность для C ++ (с использованием vim) - PullRequest
11 голосов
/ 10 марта 2010

Существует ли какая-либо утилита или плагин, который предоставляет cscope-подобную функциональность для C ++. Я ищу

  • все ссылки на символ
  • глобальные определения
  • функции, вызываемые функцией
  • функции, вызывающие функцию
  • файлы, включая файл

Ответы [ 2 ]

5 голосов
/ 24 января 2018

В теме указаны некоторые тарифы https://www.reddit.com/r/emacs/comments/1qktcb/cscope_like_functionality_that_correctly_handles/:

  • Clang ctags https://github.com/drothlis/clang-ctags (использует clang для анализа, поддерживает C / C ++) - похоже, генерирует простой классический файл "TAGS" (перейти только к определению, "уровень 1" Exuberant Ctags) для Emacs и Vi
  • Теги Clang https://github.com/ffevotte/clang-tags (использует clang для анализа, поддерживает C / C ++; для работы нужен сервер) - работает с База данных компиляции JSON , поддерживает оба перехода к определению ( clang-tag find-def) / перейти к использованию (clang-tag grep) . vim-clang-tags может использоваться для отображения всех вариантов использования (команда :ClangTagsGrep); есть и плагин emacs
  • Rtags https://github.com/Andersbakken/rtags (по имени Роберто Рагги, который написал парсер c ++ и заверил, что переключается на синтаксический анализ; C / C ++ с ограниченным ObjC / ObjC ++; на сервере с демоном ./bin/rdm) - имеет "follow- символ "и" найти-ссылки ". Встраивается в emacs - "rtags.el"; для Vim есть два проекта: https://github.com/lyuts/vim-rtags (расширенная поддержка rtags) и https://github.com/shaneharper/vim-rtags (только 2 команды) с функциями «Найти ссылки» и «найти определение»
  • bear https://github.com/rizsotto/Bear (не основанный на clang, может генерировать «базу данных компиляции JSON» для проектов cmake и non-cmake). Нет какой-либо функции перекрестных ссылок?

Некоторые другие ссылки

  • https://ruben2020.github.io/codequery/ " CodeQuery - это проект, который пытается объединить функции, доступные как в cscope, так и в ctags, обеспечивает более быстрый доступ к базе данных по сравнению с cscope (потому что он использует sqlite) и предоставляет хороший инструмент графического интерфейса, как ну.", имеет собственный плагин gui и vim https://github.com/devjoe/vim-codequery; не может сгенерировать базу данных cscope, но его собственная" CodeQuery sqlite3 db "конвертируется из cscope.out, сгенерированного pycscope для python; звездоскоп для Ruby, Go и Javascript; оригинальный cscope для C и ограниченный C ++; также можно использовать TAGS.
  • https://github.com/cquery-project/cquery " cquery - это масштабируемый языковой сервер с малой задержкой для C / C ++ / Objective-C. Он протестирован и разработан для больших баз кода, таких как Chromium. Cquery обеспечивает точную и быстрый семантический анализ без прерывания рабочего процесса."... поиск определений / ссылок, clang, C / C ++; очень быстрая работа, быстрые обновления и много оперативной памяти. Имеет поддержку vim: https://github.com/cquery-project/cquery/wiki/Vim
  • https://www.gnu.org/software/global/ GNU Global иногда рекомендуется в качестве замены cscope. Он «находит не только определения, но и ссылки» и поддерживает «6 языков с помощью встроенного синтаксического анализатора (определение и ссылка): C, C ++, Yacc, Java, PHP4 и ассемблер». И интеграция Vim: https://www.gnu.org/software/global/globaldoc_toc.html#Vim-editor

И есть некоторые быстрые (проиндексированные) grep, такие как инструменты поиска кода Кокса Русса (тоже работает с регулярным выражением - https://github.com/google/codesearch; пример https://codesearch.debian.net/about) или любой другой проиндексированный grep ...

И есть инструменты для перекрестных ссылок (GUI и веб-серверы), такие как LXR и другие ... https://github.com/oracle/opengrok/wiki/Comparison-with-Similar-Tools

3 голосов
/ 13 марта 2010

Vim может напрямую взаимодействовать с cscope из коробки. Тип :h cscope. Для этого требуется, чтобы функция cscope была включена при компиляции Vim, а cscope должен быть установлен на вашем компьютере.

На веб-странице cscope есть Vim + cscope учебник .

...