Doxygen
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Doxygen은 소스 코드 주석에서 문서를 추출하여 HTML, CHM, RTF, PDF, LaTeX, PostScript, man 페이지 등 다양한 형식으로 출력하는 문서화 도구이다. C, C++, C#, D, Fortran, IDL, Java, Objective-C, Perl, PHP, Python, VHDL 등 여러 프로그래밍 언어를 지원하며, Qt 툴킷에서 사용되는 문서화 태그를 지원한다. Doxygen은 C++ 클래스 상속 다이어그램을 생성하고 Graphviz의 "dot" 도구를 활용하여 더 발전된 다이어그램과 그래프를 생성할 수 있다. Doxygen은 깃허브에서 소스 코드를 호스팅하며, C++로 작성되었고, 대부분의 유닉스 계열 운영체제, macOS, 윈도우에서 실행된다.
더 읽어볼만한 페이지
- 온라인 도움말 - Man page
Man page는 유닉스 계열 운영체제에서 명령어나 함수 사용법을 설명하는 온라인 도움말 문서로, `man` 명령어로 접근 가능하며, 이름, 개요, 설명 등으로 구성되고, 다양한 형식으로 제공된다. - 온라인 도움말 - 인포메이션 프레젠테이션 퍼실리티
인포메이션 프레젠테이션 퍼실리티(IPF)는 마크업 언어 기반 기술로 정보를 표시하고 구성하며, IBM 환경에서 소프트웨어 도움말 시스템 구축에 사용되었고, 현재는 다양한 형식으로 변환되어 웹 기반 문서 시스템 등 관련 기술에 응용된다. - 자유 문서 생성기 - CWEB
CWEB은 내용 분석이 불가능한 위키백과 문서이며, 정보의 투명성과 접근성 개선이 필요한 상황이다. - 자유 문서 생성기 - JSDoc
JSDoc은 자바스크립트 API 문서 생성 도구로서, 다양한 태그를 통해 코드 문서화를 지원하며 여러 편집기 및 IDE에서 활용되어 개발 생산성을 향상시키고, Closure Linter, Closure Compiler, TypeScript 등과 함께 다양한 프로젝트에서 사용된다.
| Doxygen - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 일반 정보 | |
![]() | |
| 명칭 | Doxygen |
| 종류 | 문서 생성기 |
| 라이선스 | GPLv2 |
| 웹사이트 | Doxygen 공식 웹사이트 |
| 개발 | |
| 개발자 | Dimitri van Heesch |
| 개발 언어 | C++ |
| 플랫폼 | 크로스 플랫폼 |
| 최초 릴리스 | 1997년 10월 26일 |
| 최신 버전 | 1.12.0 |
| 최신 버전 배포일 | 2024년 8월 7일 |
2. 디자인
Doxygen은 자바독과 같이 소스 파일 주석에서 문서를 추출한다. Qt 툴킷에서 사용되는 문서화 태그도 지원한다.[1]
2. 1. 지원 언어
Doxygen은 C,[7] C++, C#, D, 포트란, IDL, 자바, Objective-C,[8] 펄,[9] PHP,[10] 파이썬,[11][12] 및 VHDL을 지원한다.[10] 다른 프로그래밍 언어는 추가 코드를 통해 지원할 수 있다.2. 2. 출력 형식
Doxygen은 HTML, Microsoft Compiled HTML Help(CHM), 서식 있는 텍스트 형식(RTF), PDF, LaTeX, PostScript, man 페이지 형식으로 출력을 생성할 수 있다.[1] 자바독과 마찬가지로, Doxygen은 소스 파일 주석에서 문서를 추출한다.[1]2. 3. 개발 환경
Doxygen은 대부분의 유닉스 계열 운영체제, macOS, 윈도우에서 실행된다.일부 통합 개발 환경(IDE)은 Doxygen 주석을 바탕으로 툴팁 정보를 표시하거나, 코드 자동 완성 시 함수나 메서드의 매개변수 설명을 제공하기도 한다.
3. 예시 코드
Doxygen은 특수 주석 구문을 사용하여 소스 코드 내에 문서화를 할 수 있다. 일반적인 주석 구문은 `/*` 뒤에 별표(`*`) 또는 느낌표(`!`)를 추가하는 방식이다. 문서의 모든 명령어는 백슬래시(`\`) 또는 앳사인(`@`)으로 시작한다.[14] C++ 스타일의 한 줄 주석(`//`)도 지원하며, 추가 슬래시(`/`) 또는 느낌표(`!`)를 사용하여 Doxygen 주석으로 처리할 수 있다.[15]
```cpp
/**
<간단한 한 줄 설명>
<더 긴 설명>
<필요에 따라 여러 줄 또는 단락으로 구성될 수 있음>
@param someParameter 메서드 또는 함수의 입력 또는 출력 매개변수에 대한 설명
@param ...
@return 반환 값에 대한 설명
- /
```
많은 프로그래머는 각 줄의 시작을 공백-별표-공백으로 표시하는 것을 선호하지만, 필수는 아니다.
```cpp
/// <간단한 한 줄 설명>
///
/// <더 긴 설명>
/// <필요에 따라 여러 줄 또는 단락으로 구성될 수 있음>
///
/// @param someParameter 메서드 또는 함수의 입력 또는 출력 매개변수에 대한 설명
/// @param ...
/// @return 반환 값에 대한 설명
```
LaTeX 명령을 사용하여 수식을 추가하는 등 더 풍부한 마크업도 가능하다.
3. 1. C++ 코드 예시
다음은 C++ 소스 파일에서 Doxygen을 사용하는 예시이다.[14][15][16][20]```cpp
/**
- @file
- @brief Time 클래스의 헤더 파일.
- @author John Doe
- @version 1.0
- @copyright CC BY-SA 또는 GFDL.
- @sa Wikipedia:Copyrights - Wikipedia
- /
/**
- Time 클래스는 시간의 순간을 나타냅니다.
- @author John Doe
- /
class Time {
public:
/**
- 시간을 주어진 값으로 설정하는 생성자.
- @param timeMillis 1970년 1월 1일 이후 경과한 밀리초 수.
- /
explicit Time(long long timeMillis) {
// the code
}
/**
- 현재 시간을 가져옵니다.
- @return 현재 시간으로 설정된 Time 객체.
- /
static Time now() {
// the code
}
private:
long long m_timeMillis; ///< 1970년 1월 1일 이후 경과한 밀리초 수.
};
```
`@file`, `@author`, `@version` 등의 다양한 태그를 사용하여 파일, 작성자, 버전 등의 정보를 문서화할 수 있다. `@param`, `@return` 태그를 사용하여 함수의 매개변수와 반환 값에 대한 설명을 추가할 수 있다. 멤버 뒤에 주석을 추가하려면 주석 블록에 추가적인 `<` 마커가 필요하다.
다음은 매개변수를 문서화하는 다른 방법이다.
```cpp
/**
- 시간을 주어진 값으로 설정하는 생성자.
- /
explicit Time(long long timeMillis /**< 1970년 1월 1일 이후 경과한 밀리초 수. */
)
{
// the code
}
```
LaTeX 명령을 사용하여 방정식을 추가하는 것도 가능하다.
```cpp
/**
- 인라인 방정식 @f$ e^{\pi i}+1 = 0 @f$
- 표시된 방정식: @f[ e^{\pi i}+1 = 0 @f]
- /
4. Doxygen 소스와 개발
Doxygen 소스는 현재 깃허브에서 호스팅되고 있으며, 주 개발자인 디미트리 반 헤스(Dimitri van Heesch)는 "doxygen"이라는 사용자 이름으로 기여하고 있다.[28][17] Doxygen은 C++로 작성되었으며, 300,000개 이상의 소스 라인으로 구성되어 있다. 어휘 분석을 위해 표준 도구인 Lex (또는 대체 도구인 Flex)가 약 35,000 라인의 렉스 스크립트를 통해 실행된다. 파싱 도구인 Yacc (또는 대체 도구인 Bison)도 사용되지만, 사소한 작업에만 사용되며, 언어 파싱의 대부분은 네이티브 C++ 코드로 수행된다. 소프트웨어 빌드 프로세스는 CMake를 기반으로 하며 일부 파이썬 스크립트도 포함한다.
5. 고급 기능
Doxygen은 소스 코드 주석에서 문서를 생성하는 강력한 도구이지만, 기본적인 기능 외에도 고급 기능을 활용하면 더욱 유용하고 가독성 높은 문서를 만들 수 있다.
참조
[1]
웹사이트
"ANNOUNCE: doxygen 0.1"
http://lists.trollte[...]
2011-10-04
[2]
웹사이트
Doxygen Manual: Frequently Asked Questions
https://www.doxygen.[...]
[3]
웹사이트
Get With the Program: DIY tips for adding coding to your analysis arsenal
https://www.the-scie[...]
The Scientist
2015-11-22
[4]
웹사이트
Doxygen
http://foss.unh.edu/[...]
University of New Hampshire
2015-11-22
[5]
웹사이트
Doxygen
https://directory.fs[...]
2015-11-22
[6]
웹사이트
Documentation
https://rosettacode.[...]
2015-11-22
[7]
웹사이트
Documentation: C
https://rosettacode.[...]
2015-11-22
[8]
웹사이트
Documentation: Objective-C
https://rosettacode.[...]
2015-11-22
[9]
웹사이트
Doxygen::Filter::Perl - A perl code pre-filter for Doxygen - metacpan.org
https://metacpan.org[...]
[10]
웹사이트
Doxygen Manual: Getting started
https://www.doxygen.[...]
[11]
웹사이트
Automatic Python API documentation generation tools
https://wiki.python.[...]
2015-11-22
[12]
웹사이트
doxypypy: A Doxygen filter for Python
https://github.com/F[...]
[13]
웹사이트
Doxygen Manual: Graphs and diagrams
https://www.doxygen.[...]
[14]
문서
Doxygen: Special Commands
https://www.doxygen.[...]
[15]
문서
Doxygen: Documenting the code - §Comment blocks for C-like languages
https://www.doxygen.[...]
[16]
문서
Doxygen: Documenting the code - §Putting documentation after members
https://www.doxygen.[...]
[17]
웹사이트
doxygen/doxygen
https://github.com/d[...]
2021-06-09
[18]
문서
Doxygen Manual: Changelog
https://www.doxygen.[...]
[19]
문서
GitHub - doxygen/doxygen: Official doxygen git repository
https://github.com/d[...]
[20]
문서
Doxygen Manual: Special Commands
https://www.doxygen.[...]
[21]
웹사이트
"ANNOUNCE: doxygen 0.1"
http://lists.trollte[...]
2011-10-04
[22]
웹인용
Doxygen Manual: Changelog
https://www.doxygen.[...]
[23]
문서
FAQ: How did doxygen get its name?
http://www.doxygen.n[...]
[24]
웹인용
Get With the Program: DIY tips for adding coding to your analysis arsenal
https://www.the-scie[...]
The Scientist
2015-11-22
[25]
웹인용
Doxygen
http://foss.unh.edu/[...]
University of New Hampshire
2015-11-22
[26]
웹인용
Doxygen
https://directory.fs[...]
2015-11-22
[27]
웹인용
Documentation
https://rosettacode.[...]
2015-11-22
[28]
문서
https://github.com/d[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
