TAGS 파일에는 정의가 포함되어 있습니다.
TAGS
파일은 함수와 클래스가 정의되는 곳의 목록이 포함되어 있습니다. 일반적으로 프로젝트의 루트에 위치하며 다음과 같습니다.
^L
configure,3945
as_fn_success () { as_fn_return 0; }^?as_fn_success^A180,5465
as_fn_failure () { as_fn_return 1; }^?as_fn_failure^A181,5502
as_fn_ret_success () { return 0; }^?as_fn_ret_success^A182,5539
as_fn_ret_failure () { return 1; }^?as_fn_ret_failure^A183,5574
이것은 Emacs가 정의를 찾을 수 있도록합니다. 기본 탐색은에 내장되어 find-tag
있지만 etags-select
일치하는 항목이 여러 개인 경우 더 멋진 UI를 제공합니다.
코드 완성을 위해 TAGS 파일을 사용할 수도 있습니다. 예를 들어 회사의 etags 백엔드는 TAGS 파일을 사용합니다 .
TAGS 파일은 다양한 도구로 빌드 할 수 있습니다.
ctags
(이전에는 'universal ctags'또는 'exuberant ctags'로 알려짐) TAGS 파일을 생성하고 가장 광범위한 언어를 지원할 수 있습니다. github에서 적극적으로 유지 관리됩니다.
이 개라는 태그 파일을 생성 프로그램과 이맥스 배 etags
와 ctags
. Emacs ctags
는 etags
범용 ctag와 동일한 CLI 인터페이스를 사용합니다. 혼동을 피하기 위해 많은 배포판에서 이러한 프로그램의 이름을 변경합니다 (예 : ctags.emacs24
Debian).
TAGS 파일 생성을위한 언어 별 도구 (예 : jsctags
및 hasktags
.
기타 파일 형식
ebrowse
Emacs와 함께 제공되는 C 프로그램입니다. C / C ++ 코드를 인덱싱하고 BROWSE
파일을 생성 합니다. ebrowse.el은 일반적인 찾기 정의와 완성을 제공합니다. BROWSE
코드베이스에 정의 된 클래스 / 함수에 대한 개요를 얻기 위해 Emacs에서 직접 파일 을 열 수도 있습니다 .
GNU Global 에는 GTAGS
, GRTAGS
및 GPATH
파일 로 구성된 자체 데이터베이스 형식이 있습니다 . gtags
C / C ++ 코드를 구문 분석 하는 명령을 사용하여 이러한 파일을 생성 할 수 있습니다 . 다른 언어의 경우 GNU Global은 범용 ctag에 의해 생성 된 파일을 읽을 수 있습니다.
GNU Global은 또한 '이 기호가 언급 된 위치'와 같은보다 정교한 질문을 할 수있는 CLI 인터페이스를 제공합니다. Emacs 패키지 gtags.el과 함께 제공되지만 ggtags.el 은 GNU 글로벌 데이터베이스에 액세스하는데도 널리 사용됩니다.
Cscope 는 정신적으로 GNU Global과 유사합니다. C / C ++를 자체 데이터베이스 형식으로 구문 분석합니다. 또한 '이 기능의 모든 발신자 / 수신자 찾기'와 같은 질문에 답할 수 있습니다.
global과 cscope를 비교하는이 HN 토론을 참조하십시오 .
클라이언트 / 서버 프로젝트
rtags 는 영구 서버를 사용하여 C / C ++를 구문 분석하고 인덱싱합니다. clang 파서를 사용하므로 C ++를 정말 잘 처리합니다. 서버를 쿼리하기 위해 Emacs 패키지와 함께 제공됩니다.
google-gtags 는 큰 TAGS 파일이 서버에 저장되는 프로젝트였습니다. 서버를 쿼리하면 검색과 관련된 TAGS 파일의 하위 집합이 제공됩니다.
시맨틱 (CEDET)
Semantic은 C / C ++ 용 파서를 포함하는 내장 Emacs 패키지이므로 정의도 찾을 수 있습니다. 또한 TAGS 파일, csope 데이터베이스 및 기타 소스에서 데이터를 가져올 수 있습니다. CEDET에는이 데이터를 사용하는 IDE 스타일 기능도 포함되어 있습니다 (예 : 클래스 계층 구조의 UML 다이어그램 생성).
GTags
하면 연결 한 프로젝트가 완전히 죽었습니다. 누군가에 대해 이야기하고 있다면gtags
아마도 GNU Global을 언급하고있을 것입니다.