CTAGS(1)

명칭
ctags - tags 파일을 작성한다

서식
ctags [-BFadtuwvx] [-f tagsfile] name ...

해설
ctags (은)는, 지정된 C, Pascal, Fortran, yacc(1), lex(1), lisp 의 소스로부터, ex(1) 명령용의 tags 파일을 작성합니다. 태그 파일은, 지정된 오브젝트가 한 무리의 파일중의 어느 장소에 있는지를 나타내는 것입니다. 태그 파일의 각 행은 오브젝트의 이름, 정의되고 있는 파일, 오브젝트의 정의를 찾아내기 위한 검색 패턴을 포함해, 각각은 공백에서 단락지어지고 있습니다. 이 tags 파일을 이용하는 것으로, ex(1) 그리고 이러한 오브젝트가 정의되고 있는 장소를 재빠르게 찾아내는 것이 할 수 있습니다. ctags 에게 줄 수 있는 옵션에 의합니다만, 오브젝트는 subroutine, typedef, define, struct, enum, union 로부터 구성됩니다.

다음의 옵션을 사용 가능합니다:

-B  후방 검색 패턴 (?...?) (을)를 이용합니다.

-F  전방 검색 패턴 (/.../) (을)를 이용합니다(디폴트).

-a  기존의 tags 파일에 추가합니다.

-d  인수를 가지지 않는다 #define 에 관해서도 태그를 작성합니다. 인수를 가진다 #define (은)는 자동적으로 태그가 작성됩니다.

-f tagsfile
    tagsfile 그리고 지정된 파일명으로 태그 파일을 생성합니다. 디폴트에서는 tags 그렇다고 하는 파일명으로 태그 파일을 생성합니다.

-t  typedef, struct, union, enum 선언의 태그를 생성합니다.

-u  tags 파일내의 지정된 파일에 관한 정보를 갱신합니다. 즉, 관계하는 파일에의 모든 참조가 삭제되어 새로운 태그 정보가 파일에 추가됩니다. (주의: 이 옵션은 너무 스피드의 것 나오지 않는 것 같은 실장 밖에 행해지고 있지 않습니다. 단지 tags 파일을 재구축 하는 것이 빨리 종료하겠지요. )

-v  vgrind(1) 형식의 파일 일람이 표준 출력에 출력됩니다. 이 일람은 오브젝트명, 파일명, 1 페이지 근처 64 행으로 했을 경우의 페이지 번호로부터 구성됩니다. 출력은 사전식의 차례로 정렬 되고 있으므로, 이 후에 sort(1) (을)를 통하는 것이 좋을 것입니다. 다음과 같이 사용합니다.

        ctags -v files | sort -f > index
        vgrind -x index

-w  진단용 메세지를 표시하지 않게 합니다.

-x  ctags (은)는 오브젝트명, 행 번호, 파일명, 그 행의 내용으로부터 되는 일람을 작성해, 그것을 표준 출력에 출력합니다. 이것은 오프 라인에서도 읽기 쉽게 인쇄할 수 있는 간단한 함수 일람으로서 이용할 수 있습니다.

. c (이)나. h 그리고 끝나는 이름의 파일은, C 언어의 원시 파일로 간주해져 C 의 형식의 함수·매크로 정의가 검색됩니다.. y 그리고 끝나는 이름의 파일은, yacc(1) 의 원시 파일로 간주해집니다.. l 그리고 끝나는 이름의 파일은, 최초의 공백이 아닌 캐릭터가 ‘’;, ‘(’, ‘[’ 의 언젠가이면 Lisp 의 파일이다고 보여 그렇지 않으면 lex(1) 의 파일로 간주해집니다. 그 외의 파일은, 우선 Pascal 나 Fortran 의 정의가 포함될까 제발이 체크되어 포함되지 않는 경우에는 C 형식의 정의가 검색됩니다.

C 언어의 경우, “main” (은)는 특별히 다루어져 원의 원시 파일의 패스명 부분과 말미의. c 의 부분을 없앤 파일명에 대해, 그 선두에 ‘M’ (을)를 부가한 것을 오브젝트명으로 합니다. 이것에 의해, 같은 디렉토리에 복수의 프로그램이 있는 경우에서도 ctags (을)를 실용적으로 사용할 수가 있습니다.

yacc(1) (와)과 lex(1) 의 파일에는 특수한 태그가 있습니다. “yyparse” 하 yacc(1) 파일의 제2 섹션의 시작을 나타내, “yylex” 하 lex(1) 파일의 제2 섹션의 시작을 나타냅니다.

관련 파일
tags
    디폴트로 출력되는 태그 파일

진단
ctags 유틸리티는, 에러가 발생하면(자) 1 을 돌려주어, 그 이외에서는 0 을 돌려줍니다. 같은 이름의 오브젝트가 복수 나와도 에러라고는 보이지 않습니다.

관련 항목
ex(1), vi(1)

역사
ctags 유틸리티는 3.0BSD (으)로부터 등장했습니다.

버그
Fortran 와 Pascal 용의 함수(function), 써브루틴(subroutine), 수속(procedure) 의 인식에는 매우 단순한 방법을 이용하고 있습니다. 블록 구조를 해석할 수 없기 때문에, 다른 블록에 같은 이름의 Pascal 수속이 존재하면(자) 잘 동작하지 않습니다. ctags 유틸리티는 Pascal 의 형태(type)도 이해하지 않습니다.

C 인가 Pascal 인가 Fortran 인지를 판단하는 방법은 우선 움직이고 있다, 라고 하는 정도의 것입니다.

ctags 유틸리티는 제대로 정형된 입력에 의지하고 있습니다. 또, 원시 파일에 문법적인 실수가 있으면(자) 간단하게 혼란해 버립니다. 문법적으로 잘못되어 있지 않아도 혼란하는 경우가 있습니다. 예를 들면, #ifdef (을)를 이해하지 않기 때문에(버그는 아니고 사양입니다), #ifdef 안에 괄호가 평형을 이루지 않은 코드가 있으면(자) 혼란해 버립니다. 같이 정의가 복수행에 걸쳐서 있는 경우, 오브젝트의 선두행은 아니고 맨 마지막 줄이 검색 패턴에 매치 합니다. 복수행에 걸친다 typedef 에 관해서도 같습니다.