Существуют ли исходные браузеры в стиле CScope для других языков, кроме C/С++ в Windows?

Мне особенно интересны инструменты, которые можно подключить к Vim, чтобы разрешить просмотр исходного кода в стиле CScope (команды с 1-2 клавишами для определения определений функций, вызывающих абонентов, глобальных символов и т.д.) для языков, кроме C/С++, таких как Java и С# (поскольку Vim и Cscope уже очень хорошо интегрируются для просмотра C/С++). Мне не нужны инструменты на основе IDE, так как я знаю, что Microsoft и другие поставщики уже обращаются к этому пространству - я предпочитаю использовать Vim для редактирования и просмотра, но не знаю инструментов для С# и/или Java, которые дают мне той же мощности, что и CScope.

Исходный ответ на этот вопрос включал указатель на приложение CSWrapper, которое, по-видимому, исправляет ошибку, с которой некоторые пользователи сталкиваются с интеграцией Vim и CScope. Однако моя установка Vim/CScope работает нормально; Я просто пытаюсь расширить функциональность, чтобы позволить Vim редактировать код на других языках.

Ответы

Ответ 1

CScope работает для Java.

От http://cscope.sourceforge.net/cscope_vim_tutorial.html:

Хотя Cscope изначально предназначался только для использования с кодом C, это на самом деле очень гибкий инструмент, который хорошо работает с такими языками, как С++ и Java. Вы можете рассматривать это как общую базу данных "grep", способность распознавать некоторые дополнительные конструкции, такие как вызовы функций и определения переменных. По умолчанию Cscope обрабатывает только C, lex и yacc (.c,.h,.l,.y) в текущем каталоге (и подкаталоги, если вы передаете флаг -R), и в настоящее время нет способа изменить этот список расширений файлов (да, мы должны это изменить). Поэтому вместо этого вы должны составить список файлов, которые хотите проанализируйте и назовите его "cscope.files" (вы можете называть это чем угодно если вы вызываете "cscope -i foofile" ). Легкий (и очень гибкий) способ сделайте это через надежную команду Unix "find":

find . -name '*.java' > cscope.files

Теперь запустите 'cscope -b', чтобы перестроить базу данных (-b только строит без запуска графического интерфейса Cscope), и вы сможете просмотрите все символы в файлах Java. Видимо, есть люди используя Cscope для просмотра и редактирования больших объемов файлы документации, которые показывают, насколько гибким синтаксический анализатор Cscope.

Ответ 2

Утверждение, что Cscope поддерживает Java, является экстремальным. Кажется, что он рассматривает метод как функцию, поэтому он не знает, что A.foo(), A.foo(Object) и B.foo() все разные. Это большая проблема с большой базой кода (включая сторонние библиотеки) со многими аналогичными способами. (Я не смотрел на источник Cscope, но это то, что я нашел, попробовав последнюю версию Cscope, версия 15.7a-3.3 из Debian нестабильной.)

Я попробовал Cscope на большом Java-проекте, и мне это не было полезно из-за этого ограничения. Печально, что мы не можем быстро ответить на основной вопрос, например, "кто называет этот метод", используя бесплатное программное обеспечение за пределами больших IDE, но мы также можем его принять. (Мне бы очень понравилось, если я ошибаюсь. Я прибегаю к взломам, как комментировать метод и перекомпилировать.)

Ответ 3

Немного поздно для вечеринки здесь, но мой https://github.com/eapache/starscope/ проект обеспечивает хорошую структуру для создания баз данных cscope для большего количества языков. В настоящее время он поддерживает Ruby и Go, и Javascript выполняется. Добавление Java/С# не должно быть таким сложным.

Изменить: Javascript теперь полностью поддерживается.

Ответ 4

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

Вы можете использовать Eclim для подключения Eclipse к VIM

http://eclim.org/

который поддерживает иерархию вызовов

http://eclim.org/vim/java/inspection.html#call-hierarchy

Ответ 5

Это может быть то, что вы ищете:

http://www.vim.org/scripts/script.php?script_id=1783

Вы также можете имитировать некоторые функции CScope в вашем собственном .vimrc файле, используя различные варианты map.