Ctags(검사)

Ctags
Ctags(BSD)
개발자켄 아놀드
저장소
운영 체제Unix 및 Unix 유사
플랫폼크로스 플랫폼
유형프로그래밍 도구 (구체적으로 코드 탐색 도구)
면허증.BSD

Ctags코드 이해를 돕기 위해 다양프로그래밍 언어의 소스 파일과 헤더 파일에 있는 이름의 인덱스(또는 태그) 파일을 생성하는 프로그래밍 도구입니다.언어에 따라 함수, 변수, 클래스 멤버, 매크로 등이 색인화될 수 있습니다.이러한 태그를 사용하면 텍스트 편집기, 코드 검색 엔진 또는 기타 유틸리티를 통해 쉽고 빠르게 정의를 찾을 수 있습니다.또는 언어 파일 집합에서 발견된 다양한 이름에 대한 정보를 사람이 읽을 수 있는 형태로 나열하는 상호 참조 파일을 생성하는 출력 모드도 있다.

오리지널 Ctags는 BSD Unix 3.0에 도입되어 Ken Arnold에 의해 작성되었으며, Fortran은 Jim Kleckner에 의해, 파스칼은 Bill Joy에 의해 지원되었다.싱글 유닉스 사양과 1992년의 XPG4의 초기 릴리스의 일부입니다.

ctags를 지원하는 에디터

태그 인덱스 파일은 다음을 포함한 많은 소스 코드 편집기에서 지원됩니다.

ctags의 변종

ctags 프로그램에는 몇 가지 다른 구현이 있습니다.

에택스

GNU Emacs에는 2개의 ctags 유틸리티(에태그와 ctags)가 포함되어 있습니다.이 유틸리티는 같은 소스 코드에서 컴파일 됩니다.Etags는 Emacs용 태그테이블 파일을 생성하고 ctags 명령어는 vi에서 인식되는 형식으로 유사한 테이블을 작성하기 위해 사용합니다.이러한 옵션에는 여러 가지 명령줄 옵션이 있습니다.etags는 ctags 명령에 [4]의해 생성되는 vi 스타일 태그 파일에만 적합한 옵션을 인식하지 못하고 무시합니다.

풍부한 Ctags

Exuberant Ctags는 2009년까지 [5]Darren Hiebert에 의해 작성 및 유지 보수되었으며, 처음에는 Vim과 함께 배포되었지만 Vim 6 출시와 함께 별도의 프로젝트가 되었습니다.Emacs 및 Emacs에 대한 지원이 포함되어 있습니다.etags호환성이 있습니다.[6][7]

Exuberent Ctags에는 40개 이상의 프로그래밍 언어가 지원되며 정규 표현을 사용하여 더 많은 언어 지원을 추가할 수 있습니다.

유니버설 Ctags

Universal Ctags는 Exuberent Ctags의 포크로서 개발을 계속하는 것을 목적으로 하고 있습니다.몇 개의 파서가 언어를 [8]더 잘 지원하기 위해 다시 쓰여졌다.

언어 고유의

HasktagsHaskell 소스 [9]파일용 ctags 호환 태그 파일을 만듭니다.Emacs etags [10]파일 작성 지원이 포함되어 있습니다.

jsctags[11]JavaScript용 ctags 호환 코드인덱스 솔루션입니다.이것은 JavaScript에 특화되어 있으며 Common을 사용합니다.JS 패키징 시스템.Exuberant Ctags for JavaScript 코드보다 성능이 뛰어나며,[12] 후자보다 더 많은 태그를 찾을 수 있습니다.

태그 파일 형식

태그 파일 형식은 여러 가지가 있습니다.그 중 일부는 아래에 설명되어 있습니다.다음에서\x##은 16진수 표현 ##의 바이트를 나타냅니다.모든 라인은 라인 피드(LF, \n = \x0A)로 끝납니다.

Ctags 및 하위 항목

원본 ctags와 Exuberant/Universal 하위 파일 [13]형식은 비슷합니다.

Ctags(검사)

vi 및 다양한 클론에서 사용하는 형식입니다.태그 파일의 이름은 보통 "tags"입니다.

태그 파일은 행 목록이며 각 행은 다음 형식으로 표시됩니다.

{tagname}\t{tagfile}\t{tagaddress}

필드는 다음과 같이 지정됩니다.

  • {tagname}: 공백이 포함되지 않은 식별자
  • \t – 탭(\x0b)이 1글자이지만, 많은 버전의 vi는 빈칸을 자유롭게 처리할 수 있습니다.
  • {tagfile} – 현재 디렉토리를 기준으로 {tagname}이(가) 정의되어 있는 파일 이름
  • {tagaddress} : 에디터를 태그 위치로 이동시키는 ex 모드명령어.vi의 POSIX 구현에서는 검색 또는 회선 번호만 사용할 수 있으므로 임의의 명령 실행에 대한 보안을 강화할 수 있습니다.

태그 파일이 {tagname} 필드에 정렬되어 태그 파일을 빠르게 검색할 수 있습니다.

확장 Ctags

이것은 Vim의 Exuberent Ctags와 Universal Ctags에서 사용되는 형식입니다.이러한 프로그램은 원래 ctags 파일 형식 또는 하위 호환성을 유지하는 확장 형식을 생성할 수 있습니다.

확장 태그 파일은 행 목록이며 각 행은 다음 형식으로 표시됩니다.

{tagname}\t{tagfile}\t{tagaddress}[;"\t{tagfield...}]

{tagaddress}까지의 필드는 위의 ctags와 동일합니다.

선택적 추가 필드는 대괄호("[...")로 나타내며 다음을 포함합니다.

  • ;" – 세미콜론 + 큰따옴표:vi 또는 ex에 대한 주석의 시작처럼 {tagaddress}을(를) 종료합니다.
  • {tagfield} – 확장 필드: 자세한 내용은 탭으로 구분된 "key:value" 쌍을 참조하십시오.

이 형식은 추가 데이터가 주석으로 해석되므로 비 POSIX vi와 호환됩니다.단,[13] VI를 지원하려면 vi의 POSIX 구현을 변경해야 합니다.

에택스

Emacs 에 의해 사용되는 형식입니다.태그 파일의 이름은 보통 "TAGs"입니다.

etags 파일은 입력 소스 파일마다 1개의 섹션으로 구성된 여러 섹션으로 구성됩니다.섹션은 특수 목적으로 사용되는 인쇄 불가능한 ASCII 문자가 포함된 일반 텍스트입니다.다음 문자는 괄호로 묶은 16진수 코드로 나타냅니다.

섹션은 2행 헤더로 시작합니다(처음 2바이트는 매직넘버를 구성합니다).

\x0c {src_file}, {size_of_tag_definition_data_in_bytes}

헤더 뒤에 태그 정의(행당 1개 정의)가 다음 형식으로 표시됩니다.

{tag_definition_text}\x7f{tagname}\x01{line_number},{byte_text}

태그 정의 텍스트에서 태그 이름을 추론할 수 있는 경우 {tagname}\x01을 생략할 수 있습니다.

1행 test.c 소스 코드 지정:

#CCC(x)의 정의

TAGs(etags) 파일은 다음과 같습니다.

\x0c test.c,21 #정의 CCC(\x7fCC\x011,0)

태그(ctags) 파일은 다음과 같습니다.

CCC(test.c 1)

또는 검색을 사용하여 보다 유연하게:

CCC(test.c/^#define CCC(/)

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Language Server Protocol". CodeLite Documentation. Retrieved 2022-06-12.
  2. ^ "Aminet - dev/C/Ctags.lha".
  3. ^ 작업영역 기호, Python for Visual Studio 코드 문서
  4. ^ etags.emacs(1)Linux 일반 명령어 매뉴얼
  5. ^ "Exuberant Ctags". ctags.sourceforge.net.
  6. ^ "Vim documentation: version6: ctags-gone". Retrieved 2007-04-28.
  7. ^ etags.ctags(1)Linux 일반 명령어 매뉴얼
  8. ^ "Universal Ctags Documentation". Retrieved 2018-08-02.
  9. ^ "GHC documentation: Other Haskell utility programs". Retrieved 2010-03-05.
  10. ^ "hasktags: Produces ctags "tags" and etags "TAGS" files for Haskell programs". Retrieved 2010-03-05.
  11. ^ "pcwalton github repository for jsctags". Archived from the original on 2010-08-22. Retrieved 2016-09-10.
  12. ^ Patrick Walton (25 May 2010). "Introducing jsctags". Retrieved 2010-05-25.
  13. ^ a b "Proposal for extended Vi tags file format". Retrieved 2007-06-30.

외부 링크