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

StackOverflow https://stackoverflow.com/questions/65456

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Хотя изначально CSCOPE был предназначен только для использования с C -кодом, на самом деле это очень гибкий инструмент, который хорошо работает с такими языками, как C ++ и Java.Вы можете думать об этом как об общей базе данных «Греп» с возможностью распознавать определенные дополнительные конструкции, такие как вызовы функций и определения переменных.По умолчанию CSCOPE только анализируют файлы C, LEX и YACC (.c, .h, .l, .y) в текущем каталоге (и подкаталогах, если вы передаете флаг -R), и в настоящее время нет способа изменить это Список расширений файлов (да, мы должны это изменить).Поэтому вместо этого вы должны составить список файлов, которые вы хотите проанализировать, и назвать его «cscope.files» (вы можете назвать это всем, что хотите, если вы вызовыте «cscope -i foofile»).Легкий (и очень гибкий) способ сделать это через команду Trusty Unix 'Find':

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

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

Другие советы

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

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

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

Редактировать:Javascript теперь полностью поддерживается.

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

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

http://eclim.org/

которую сторонники называют иерархией

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top