Windows 上除了 C/C++ 之外,是否有适用于其他语言的 CScope 风格的源浏览器?

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

  •  09-06-2019
  •  | 
  •  

我对可以插入 Vim 的工具特别感兴趣,以便对 C/C++ 以外的语言(如 Java 和 C#)进行 CScope 风格的源代码浏览(1-2 个击键命令来定位函数定义、调用者、全局符号等) (因为 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等语言配合使用。您可以将其视为通用的“ GREP”数据库,具有识别某些其他构造(例如函数调用和可变定义)的能力。默认情况下,CSCOPE仅在当前目录中(和子目录,如果您传递-r标志),仅解析C,LEX和YACC文件(.c,.h,.l,.y),当前没有办法更改该更改文件扩展名单(是的,我们应该更改它)。因此,相反,您必须列出要分析的文件的列表,并将其称为'cscope.files'(如果您调用'cscope -i foofile',可以将其称为任何东西)。这样做的一种简单(非常灵活)的方法是通过可信赖的Unix“查找”命令:

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

现在,运行“ CSCOPE -B”来重建数据库(-b只是构建数据库而无需启动CSCOPE GUI),您将能够浏览Java文件中的所有符号。显然,有一些人使用CSCOPE浏览并编辑大量文档文件,这显示了Cscope的解析器的灵活性。

其他提示

声称 Cscope 支持 Java 有点夸张。它似乎将方法视为函数,因此它不知道 A.foo()、A.foo(Object) 和 B.foo() 都是不同的。对于具有许多同名方法的大型代码库(包括第三方库)来说,这是一个大问题。(我没有看过 Cscope 源代码,但这是我在尝试 Debian不稳定版的最新 Cscope 版本 15.7a-3.3 时发现的。)

我在一个大型 Java 项目上尝试过 Cscope,但由于这个限制,它对我来说一点用处都没有。令人遗憾的是,我们无法使用大型 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

您还可以通过使用各种风格在您自己的 .vimrc 文件中模仿一些 CScope 功能 地图.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top