Doxygen 사용법 (2) Detail version

2021. 9. 11. 14:21·Tools/Doxygen

1. Detail Version 에서 설명드릴 내용.

 

1) 개요

Simple Version에서는 Doxygen의 실행과 간단한 주석 추가에 의의를 두어 설명 드렸지만,

Detail Version 에서는 전체적인 설정 방법과, 자주 사용되는 주석의 사용법을 짚고 넘어 갈 예정입니다.

다만, Doxygen 을 사용하는데 있어서 반드시 필요한 내용은 아니니, 시간 나실 때 읽어보시는 것을 추천 드립니다.

 

☞ 아래 파일을 다운로드 하셔서 참고하시는걸 권장 드립니다

 

DOXYGEN MANUAL_FILE.zip

 

drive.google.com

 

 

2) 사전 준비사항

Doxygen 을 이용하는데 있어

Graphviz를 사용 하시는 것을 강력하게 권고 드립니다. 다운링크

Graphviz 를 사용하는 이유는.

전체 프로그램에 대한 정적 분석은 Doxygen 의 범위를 벗어나기에

Graphviz 를 사용해야 전체 프로그램의 Diagram 을 살펴보실 수 있기 때문입니다.

 

 

 

Graphviz를 사용하지 않는다면 클래스 구조는 아래 이미지와 같이 단순하게 나타납니다.

 

 

 

Graphviz 를 사용한다면 클래스 구조는 아래 이미지와 같이 상세하게 나타납니다.

단순히 상속 관계뿐만 아니라,

각 클래스 내에 어떤 행위를 포함하는지, 해당 행위의 캡슐화 상태가 어떠한지

변수 명, 변수의 캡슐화 상태 등 많은 정보를 한눈에 볼 수 있으며.

 

클래스 내의 함수 단위로도 서로 어떤 관계에 있는지,

함수간 호출 관계 그래프를 보여줍니다.

위와 같은 이유로

'개발자간’ 프레젠테이션 or 자료 공유 시 Graphviz 를 사용하는 것을 강력하게 권고 드립니다.

 

 

 

2.    Doxygen 프로그램 옵션 설명

 

Doxygen 프로그램의 옵션 별 세부 설명은 아래 이미지와 같습니다.

자주 쓰이는 옵션들만 기술 하였습니다. [기본적으로 세팅 파일이 포함되어 있으므로, 다 살펴보실 필요는 없습니다]

 

- Wizard (Project)

 

- Wizard (Mode)

 

 

- Wizard (Output)

 

- Wizard (Diagram)

 

- Expert (Project)

출력 언어 변경 시 위와 같이 한국어로 설명이 나타납니다. 

▶ 간혹 한국어로 출력시 Error 가 발생합니다. [Error : EUC KR to UTF-8 Failed.]

 

 

- Expert (Build)

 

- Expert (Input)

 

- Expert (Source Browser)

 

- Expert (Dot)

 

 

- SAVE 옵션

Doxygen 은 설정 내용을 프로그램 내부에 저장하지 않습니다,

추후 해당 설정을 다시 이용하려면 반드시 저장한 뒤, 해당 저장 파일을 보유하고 있어야 합니다.

 

Open 을 이용해 파일을 읽어오면 프로그램 상단에 불러온 설정파일의 경로가 표시됩니다.

▶  ./Doxygen_Setting 파일을 열어, Graphviz 의 경로만 잡아준 뒤 사용하시면 편리하게 이용할 수 있습니다.

 

 

 

3. 세부 주석 추가 방법

 

1) 간단한 주석 추가

☞ 다음 파일을 참고하시는걸 권장 드립니다

소스코드 - example1.html

문서화 파일 - Index.html

Simple Version 에서 위와 같이 간단하게 주석을 추가할 수 있다고 설명 드렸었습니다.

 

추가된 주석은 위와 같이 클래스와, 함수를 설명하는 부분에 설명이 명시되게 됩니다.

 

 

2) 상세한 주석 추가

☞ 다음 파일을 참고하시는걸 권장 드립니다

소스코드 – example2.html

문서화 파일 - Index.html

 

Doxygen 에서는 위와 같은 클래스, 함수에 관한 간단한 설명들 외에

문서의 메인 페이지를 수정하는 것이 가능합니다.

@mainpage 메인 페이지 문구
@section 개요 문구
@todo 할 일
@bug 버그
@ref 참고
@li 리스트
@code
 “코드내용”
@endcode
 
코딩
표 입니다 | A | B
--------------------
 수치     | 10 | 20
퍼센트   | 5  |10
 
 
표
@remark 주목할 내용

 

위 표에 나타난 옵션들을 이용하여서 .cpp 파일 내에 주석을 추가 해 보면,

 

메인 페이지 내에 위와 같이 나타낼 수 있습니다.

하위 메뉴에 위치한 ‘할일 목록’,’버그 목록’ 에는 메인 페이지에서도 볼 수 있는

@todo 목록과, @bug 목록이 나열되어 있습니다.

 

 

 

 

 

4.    Doxygen으로 복잡한 구조의 코드를 문서화 해 보자.

 

 

1) Doxygen으로 복잡한 구조의 코드를 문서화 해 보자.

지금부터 설명드릴 내용은

Open source Project 중 하나인 Chromium 프로젝트의 소스코드를 예시로 합니다.

 

Chromium Project 는 가장 유명한 브라우저인 Chrome의 뼈대가 되는 프로젝트로,

 

다들 아시다시피 Chrome 내에는 수많은 기능들이 포함되어 있습니다.

 

지금부터 만약의 상황을 가정하여,

당신이 촉박한 시간 내에 Chromium Project 의 소스코드를 분석해야 한다고 가정 해 봅시다.

엎친 데 덮친 격으로 제작자에게 다른 어떠한 설명도 듣지 못한 채, 소스코드와 클래스 별로 요약된 주석만을 전달받았고,

비 개발자 상대 프레젠테이션 자료 준비를 맡아, 클래스 내 세부구조의 Diagram까지 제작해야 한다고 가정 해 봅시다.

 

이와 같은 상황에서, 전체적인 소스코드의 맥락을 분석 하는데 만 하더라도 상당한 시간이 소요 될 것입니다.

비록 현재의 [Visual Studio 2022] 같은 IDE가 많이 발전했다 한들,

Chromium 과 같은 대규모 프로젝트의 세부 구조를 단시간 내 파악 하기란 어려울 수 밖에 없습니다.

구조를 파악한 뒤, Diagram을 그리는 작업 역시 시간을 상당히 소모하는 작업 입니다.

 

하지만 Doxygen 은 Chromium 프로젝트의 소스코드 프로젝트 폴더만 던져 주어도,

클래스 내의 특정 함수(ComputeGlobalNativeCodeResidentMemoryKb())의 호출 구조를 파악하고, 이를 Diagram

으로 나타내라는 요구를 완벽하게 수행 해 냅니다.

 

 

 

 

 

2) Doxygen 은 대규모 프로젝트도 문제없이 분석 해 낸다.

 

i7 9700K 기준, Windows Defender 동작으로 인해 리소스를 많이 뺏기긴 하였으나

Chromium 프로젝트 중 Services 폴더에 위치한 1300여개의 C++, h 파일을 분석 하는 데에 15여분 정도가 소요 되었습니다.

 

 

3) Doxygen 이 분석한 결과를 살펴보자.

Doxygen 을 돌려 보면 분석된 Chromium Project/Services 부분의 UML 을 살펴보실 수 있습니다.

 

 

 

 

5. Doxygen의 자잘한 팁

 

▶ 이상한 경로에 출력 파일이 생성된다

Step 1 경로를 다시 설정 해 보세요! (셋팅 파일로 실행 시 좀 이상한 반응을 보입니다)

 

▶ 한글이 깨집니다.

Input 옵션에서 [INPUT_ENCODING] 을 UTF-8 , EUC-KR로 서로 바꿔보시길 바랍니다.

깨지는 특정 조건이 있는 듯 한데 확인해 보지 못하였습니다.

 

 

이상입니다.

저작자표시 비영리 동일조건 (새창열림)

'Tools > Doxygen' 카테고리의 다른 글

Doxygen 사용법 (1) Simple version  (0) 2021.08.18
'Tools/Doxygen' 카테고리의 다른 글
  • Doxygen 사용법 (1) Simple version
Cyp
Cyp
  • Cyp
    Cyp Software Blog
    Cyp
  • 전체
    오늘
    어제
    • Cyp Blog (162)
      • Artificial Intelligence (39)
        • Article (20)
        • Post (2)
        • Basic (14)
        • Preferences (3)
      • Cyber Security (1)
      • Programming (46)
        • C++ (21)
        • C# (19)
        • Python (2)
        • Rust (0)
        • Java (1)
      • Algorithm (17)
        • BACKJOON (15)
      • Operating System (14)
        • WSL (2)
        • Windows (1)
        • Linux (5)
        • Security (3)
      • Tools (26)
        • Docker (3)
        • DataBase (2)
        • SSH (1)
        • Doxygen (2)
        • Etc (17)
      • Miscellaneous (19)
        • Book (2)
        • Hardware (2)
        • Hevel (1)
  • 블로그 메뉴

    • Home
    • Guest Book
  • 링크

  • 공지사항

    • 블로그 업데이트 노트
    • 블로그 운영방침
  • 인기 글

  • 태그

    Bom
    y-cruncher
    utf-8 bom
    UTF-8 without BOM
    C4819
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Cyp
Doxygen 사용법 (2) Detail version
상단으로

티스토리툴바