Windows에 C/C++ 외에 다른 언어에 대한 CScope 스타일 소스 브라우저가 있습니까?

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

  •  09-06-2019
  •  | 
  •  

문제

저는 특히 Java 및 C#과 같은 C/C++ 이외의 언어에 대해 CScope 스타일 소스 탐색(함수 정의, 호출자, 전역 기호 등을 찾는 1-2개의 키 입력 명령)을 허용하기 위해 Vim에 연결할 수 있는 도구에 관심이 있습니다. (Vim과 Cscope는 이미 C/C++ 탐색에 매우 잘 통합되어 있기 때문입니다).저는 Microsoft와 다른 공급업체가 이미 해당 분야를 다루고 있다는 것을 알고 있기 때문에 IDE 기반 도구에 관심이 없습니다. 저는 편집과 탐색에 Vim을 사용하는 것을 선호하지만 저에게 IDE 기반 도구를 제공하는 C# 및/또는 Java용 도구는 모릅니다. CScope와 동일한 성능을 발휘합니다.

이 질문에 대한 원래 답변에는 일부 사용자가 Vim과 CScope를 통합하면서 경험하는 버그를 수정하는 CSWrapper 애플리케이션에 대한 포인터가 포함되어 있었습니다.그러나 내 Vim/CScope 설치는 잘 작동합니다.저는 Vim을 사용하여 다른 언어로 코드를 편집할 수 있도록 기능을 확장하려고 합니다.

도움이 되었습니까?

해결책

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의 파서가 얼마나 유연한지 보여주는 문서 파일.

다른 팁

Cscope가 Java를 지원한다고 주장하는 것은 극단적인 주장입니다.메소드를 함수처럼 취급하는 것처럼 보이므로 A.foo(), A.foo(Object) 및 B.foo()가 모두 다르다는 사실을 전혀 모릅니다.이는 동일한 이름의 메서드가 많이 포함된 대규모 코드 베이스(타사 라이브러리 포함)에서 큰 문제입니다.(Cscope 소스를 본 적은 없지만 Debian Unstable의 최신 Cscope 버전 15.7a-3.3을 사용해 본 결과입니다.)

나는 대규모 Java 프로젝트에서 Cscope를 사용해 보았지만 이러한 제한으로 인해 나에게는 전혀 유용하지 않았습니다.대형 IDE 외부의 자유 소프트웨어를 사용하여 "누가 이 메소드를 호출하는지"와 같은 기본적인 질문에 대한 빠른 답변을 얻을 수 없다는 점은 슬프지만 이를 받아들일 수도 있습니다.(제가 틀렸다면 정말 좋겠습니다.나는 방법을 주석 처리하고 다시 컴파일하는 등의 방법을 사용합니다.)

여기 파티에 조금 늦었지만 내 https://github.com/eapache/starscope/ 프로젝트는 더 많은 언어에 대한 cscope 데이터베이스를 생성하기 위한 훌륭한 프레임워크를 제공합니다.현재 Ruby와 Go를 지원하고 있으며, Javascript도 진행 중입니다.Java/C#을 추가하는 것은 그리 어렵지 않습니다.

편집하다:이제 Javascript가 완전히 지원됩니다.

나는 Andrew의 의견에 동의합니다. 메서드에 대한 호출 계층 구조를 얻으려고 하면 다른 클래스에서 왔더라도 동일한 이름의 모든 호출이 반환됩니다.

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