除了C/C++之外,还有其他语言的CScope风格的源浏览器吗?

JP *_*ine 14 vim

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

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

And*_*rew 6

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

我在一个大型Java项目上尝试过Cscope,由于这个限制,它对我来说根本没用.令人遗憾的是,我们无法快速回答一个基本问题,例如"谁叫这个方法",使用大型IDE之外的免费软件,但我们也可以接受它.(如果我错的话,我会很喜欢它.我会使用hacks来评论方法并重新编译.)


小智 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
Run Code Online (Sandbox Code Playgroud)

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