WIPIVERSE

Doxygen

Doxygen은 소프트웨어 개발에서 사용되는 문서 생성 도구(documentation generator)로, 소스 코드 내의 주석(comment)을 분석하여 HTML, PDF, LaTeX, RTF, XML, DocBook, Unix man page 등 여러 형식의 문서를 자동으로 생성하는 오픈소스 소프트웨어이다.

개요

Doxygen은 C++ 소스를 기반으로 하는 문서 생성 도구의 사실상 표준(de facto standard)으로 널리 인정받고 있다. 이 도구는 소스 코드에 포함된 특별한 형식의 주석을 파싱하여 클래스(class), 함수(function), 변수(variable) 등의 정보를 추출하고, 이를 체계적으로 정리한 문서를 산출한다. 개발자가 코드 내의 문서화 주석을 유지하면 코드와 문서 간의 일관성을 쉽게 유지할 수 있다는 장점이 있다.

지원 언어

Doxygen은 기본적으로 다음 프로그래밍 언어 및 하드웨어 기술 언어를 지원한다.

  • C, C++
  • C#
  • Objective-C
  • Java
  • PHP
  • Python
  • Fortran
  • IDL(Corba, Microsoft, UNO/OpenOffice 변형)
  • D
  • VHDL(하드웨어 기술 언어)

또한 확장자 매핑(extension mapping) 설정을 통해 특정 파일 형식에 특정 파서를 연결하거나, 전처리 프로그램을 사용해 완전히 다른 언어를 지원하도록 구성할 수도 있다.

주요 기능

Doxygen은 크게 세 가지 방식으로 개발자를 돕는다.

  1. 문서 브라우저 및 참고 매뉴얼 생성: 문서화된 소스 파일로부터 온라인 문서(HTML) 및 오프라인 참고 매뉴얼(LaTeX) 등을 생성한다. RTF(MS-Word), PostScript, 하이퍼링크 PDF, 압축 HTML, DocBook, Unix man page 형식도 지원한다.

  2. 코드 구조 추출: 문서화되지 않은 소스 파일에서도 코드 구조를 추출할 수 있다. 대규모 소스 배포판의 구조를 빠르게 파악하는 데 유용하며, 포함(include) 의존성 그래프, 상속 다이어그램, 협업 다이어그램 등을 자동으로 시각화한다.

  3. 일반 문서 작성: 특정 프로그램의 문서화에 국한되지 않고 일반 문서 작성 용도로도 사용할 수 있다. 실제로 Doxygen 사용자 매뉴얼과 웹사이트 자체가 Doxygen으로 작성되었다.

이 외에도 추가 기능으로 Markdown 서식 지원, 문서 요소 간 하이퍼링크 교차 참조(cross-referencing), 그리고 Doxyfile이라는 설정 파일을 통한 문서 생성 과정의 세부 설정이 가능하다.

설정 및 사용 방식

Doxygen은 프로젝트별로 설정 파일을 사용한다. 명령줄에서 doxygen -g <설정파일명> 형식으로 실행하면 템플릿 설정 파일이 생성되며, 기본 파일명은 Doxyfile이다. 설정 파일은 Makefile과 유사한 형식으로 TAGNAME = VALUE 형태의 할당문으로 구성된다.

설정 파일을 지정한 후 doxygen <설정파일명> 명령으로 Doxygen을 실행하면 설정에 따라 html, rtf, latex, xml, man, docbook 등의 출력 디렉터리가 생성된다.

GUI 환경에서는 doxywizard라는 그래픽 프런트엔드 도구를 사용하여 설정 파일을 생성·편집하고 Doxygen을 실행할 수 있다.

문서화 주석

Doxygen에서 문서화 대상으로 인식되기 위해서는 소스 코드 내에 특별한 형식의 주석 블록이 필요하다. 기본적으로 EXTRACT_ALL 옵션이 NO(기본값)로 설정된 경우, Doxygen은 문서화된 요소에 대해서만 문서를 생성한다.

특별 주석 블록에는 \param, \return, \brief 등의 명령을 사용하여 함수의 매개변수, 반환값, 간략한 설명 등을 추가할 수 있다. Markdown 서식도 지원한다.

문서화 주석은 기본적으로 두 가지 방식으로 배치할 수 있다. 첫째는 선언이나 정의 앞에 특별 주석 블록을 배치하는 방식, 둘째는 다른 위치에 특별 주석 블록을 두고 구조적 명령(structural command)을 통해 연결하는 방식이다.

배포 및 라이선스

Doxygen은 GNU 일반 공중 사용 허가서(GPL v2.0)를 따르는 오픈소스 소프트웨어이다. 공식 웹사이트(www.doxygen.nl)에서 최신 버전의 바이너리 및 소스 코드를 다운로드할 수 있으며, GitHub의 doxygen/doxygen 저장소에서 소스 코드가 관리되고 있다. 2013년 5월부터 Subversion에서 Git으로 버전 관리 시스템을 전환하였다.

Doxygen의 창시자이자 주요 개발자는 Dimitri van Heesch이다. 프로젝트는 SourceForge와 GitHub를 통해 이슈 추적, 메일링 리스트(사용자 및 개발자 그룹) 등으로 커뮤니티 지원이 이루어지고 있다.

활용 분야

Doxygen은 특히 C++ 기반의 라이브러리 및 프레임워크 개발 환경에서 널리 사용된다. 많은 오픈소스 프로젝트와 상용 프로젝트에서 API 문서 생성 도구로 채택하고 있으며, 소프트웨어 문서화 표준화와 협업 효율성 향상을 위해 널리 활용되고 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기