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

时间:2008-09-15 18:32:25

标签: vim

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

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

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

CScope适用于Java。

来自http://cscope.sourceforge.net/cscope_vim_tutorial.html

  

虽然Cscope最初只打算用于C代码,但它是   实际上是一个非常灵活的工具,适用于像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 GUI的数据库),你将能够   浏览Java文件中的所有符号。显然有人   在那里使用Cscope浏览和编辑大量的   文档文件,显示了Cscope解析器的灵活性。

答案 2 :(得分:3)

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

编辑:现在完全支持Javascript。

答案 3 :(得分:0)

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

您可以使用Eclim将Eclipse插入VIM

http://eclim.org/

哪些支持者调用层次结构

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

答案 4 :(得分:-1)

这可能是您正在寻找的:

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

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