14

我对可以插入 Vim 以允许 CScope 风格的源代码浏览(1-2 个击键命令来定位函数定义、调用者、全局符号等)的工具特别感兴趣,这些工具适用于 C/C++ 之外的语言,例如 Java 和 C# (因为 Vim 和 Cscope 已经很好地集成以浏览 C/C++)。我对基于 IDE 的工具不感兴趣,因为我知道 Microsoft 和其他供应商已经解决了这个问题——我更喜欢使用 Vim 进行编辑和浏览,但不知道有哪些 C# 和/或 Java 工具能给我与 CScope 相同的功能。

这个问题的原始答案包括一个指向 CSWrapper 应用程序的指针,它显然修复了一些用户在集成 Vim 和 CScope 时遇到的错误。但是,我的 Vim/CScope 安装工作正常;我只是想扩展功能以允许使用 Vim 编辑其他语言的代码。

4

5 回答 5

7

声称 Cscope 支持 Java 是一种极端的延伸。它似乎把一个方法当成一个函数,所以它不知道 A.foo()、A.foo(Object) 和 B.foo() 都是不同的。对于具有许多同名方法的大型代码库(包括第三方库)来说,这是一个大问题。(我没有查看 Cscope 源代码,但这是我在尝试来自 Debian 不稳定的最新 Cscope 版本 15.7a-3.3 时发现的。)

我在一个大型 Java 项目上尝试了 Cscope,由于这个限制,它对我一点用处都没有。遗憾的是,使用大型 IDE 之外的免费软件,我们无法快速回答“谁调用此方法”之类的基本问题,但我们不妨接受它。(如果我错了,我会喜欢它。我求助于注释掉方法和重新编译等黑客行为。)

于 2011-08-25T22:09:07.753 回答
4

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'

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

现在运行'cscope -b' 来重建数据库(-b 只是在不启动Cscope GUI 的情况下构建数据库),您将能够浏览Java 文件中的所有符号。显然有人使用 Cscope 来浏览和编辑大量文档文件,这表明 Cscope 的解析器是多么灵活。

于 2008-10-02T22:17:04.630 回答
3

在这里聚会有点晚了,但我的https://github.com/eapache/starscope/项目为生成更多语言的 cscope 数据库提供了一个很好的框架。目前它支持 Ruby 和 Go,并且 Javascript 正在进行中。添加 Java/C# 应该没有那么困难。

编辑:现在完全支持 Javascript。

于 2015-09-21T14:22:15.810 回答
0

我同意 Andrew - 尝试获取方法的调用层次结构会返回所有同名调用,即使它们来自不同的类。

您可以使用 Eclim 将 Eclipse 插入 VIM

http://eclim.org/

支持者称之为等级制度

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

于 2013-08-21T12:50:09.897 回答
-1

这可能是您正在寻找的:

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

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

于 2008-09-15T18:42:37.193 回答