최상단 광고

2012년 4월 11일 수요일

Doxygen 을 써보자.


▷ Doxygen 이란?

정해진 문법에 의해 쓰여진 C/C++/JAVA 등의 주석을 html/latex/pdf 형식으로 문서화 시켜주는 프로그램


▷ Doxygen 다운로드



▷ 기본 설정

1. Doxygen 실행화면

 

2. Wizard를 실행시켜 필요한 정보를 입력한다.
 
주의 : 프로젝트 경로에 한글명이 없어야 된다.
(예를 들어 C:/작업폴더/DoxyTest 로 경로가 주어질경우 Doxygen이 인식하지 못한다. )
 
 
하위 폴더가 있을 경우 Scan recursively를 체크할 것
 
 

 
해당 언어에 최적화 시킨다.( Doxygen이 자동으로 세부옵션을 설정해준다. )
 

 
필요한 문서 형태만 체크해둔다.
 
 
 

 
나열되어있는 diagram이 문서에 자동으로 생성되게 할 수 있다.
다만 GraphViz( http://www.graphviz.org/ ) 가 필요하며
문서 생성 속도가 매우 느려진다.
 
최종 완성 소스에서만 체크하는게 좋다.
 
 
 
3. Wizard로 기본적인 설정을 하고 Expert에서 세부적인 설정이 가능하다.

 
거의 손댈 부분이 없으나 취향에 따라 몇몇 부분을 고쳐주면 된다.
 
OUTPUT_LANGUAGE 를 Korean 으로 바꾸면 메뉴가 한글로 나온다.
 
 
 
4. 설정한 Doxyfile 을 저장(Save)하고 Working directory 를 지정한 다음 Start 시키면 된다.
 
 
 
 
 
▷ Doxygen 주석
 
Doxygen은 파일, 함수, 데이터 구조를 기준으로 문서화를 한다. 코드 중간중간의 자잘한 주석은 문서화 시키지 않는다. 즉, msdn( http://msdn.microsoft.com )이나 JAVADOC(http://java.sun.com/j2se/1.5.0/docs/api/index.html ) 과 같은 형태의 문서화라고 할 수 있다.
 
 
 
int GlobalVal;       ///< 전역 변수
 
 
/** \brief
        문자열 바꾸기
    \remarks
        입력된 문자열에서 원하는 문자열을 찾아 바꾼다.
    \return
        마지막으로 찾은 문자열의 첫번째 주소값을 반환한다.
*/
char *
Replace(
        char * pStr,     ///< 입력 문자열
        char * find,     ///< 찾을 문자열
        char * replace       ///< 변경할 문자열
        )
{
    ...
}

 
 
 
또한 메인페이지(MainPage)를 두어 프로그램의 전체 개요 등을 적어줄 수 있다.
 

/** \mainpage Doxygen Test

    \section developer 개발자
        - 이상호
        
    \section info 개발목적
        - Doygen 문서 테스트용 소스
 
        
    \section advenced 추가정보
        - 글머리는 '-' 태그를 사용하면 되며
            - 탭으로 들여쓸경우 하위 항목이 된다.
        -# 번호매기기는 '-#' 방식으로 할수 있다.
            -# 위와 같이 탭으로 들여쓸경우 하위 항목이 된다.
            -# 두번째 하위 항목
            
        
        - 이런식으로 그림을 넣을수도 있다.
                
        \image html gom.jpg
*/

 
 
 
함수나 데이터 구조의 경우 파일 단위가 아니라 특정 기능에 따라 분류해주고 싶을 경우 모듈 설정을 할 수 있다.
 
 
/**
    \defgroup string 문자열 관련 모듈
    \defgroup date       날짜 관련 모듈
*/
 
위와 같은 방식으로 그룹을 정의한 다음 해당 함수나 데이터 구조 코드의 위아래에 다음과 같은 코드를 삽입하면 된다.
 
 
/**
    \addtogroup  string
    \{
*/

...
그룹화할 함수나 데이터 구조 코드
...

/** \} */


 
 
 
\brief 나 \return 등이 보여주는 항목 이외에 다른 항목을 쓰고 싶다면 \par 명령어를 사용하면 된다.
 
/** \brief
        현재 시간을 얻는다.

    \remarks
        ST_TIME 구조체 형식으로 현재 시간을 얻는다.

    \par 요구사항
        time.h 선언이 필요하다.

    \return
        성공시 0을 반환한다. 에러가 발생하면 -1을 반환한다.

    \author
        이상호
*/
void
GetLocalTime(
              ST_TIME * today
              )
{
...
}
 
 
 
 
자세한 적용방법은 샘플코드 를 참조하길 바라며 Doxygen Documentaion(HTML) 의 Special Commands 섹션에서 Doxygen의 모든 명령어를 확인할 수 있다.
 
샘플코드는 DoxyTest.c 소스 파일과 메인페이지와 그룹정의가 되어 있는 MainPage.dox 파일로 이루어져 있다.
 
 
 
▷ Doxygen 을 쓰게 되면 얻는 잇점
 
역시 가장 큰 장점은 소스 코드 작성과 문서화가 동시에 이루어 진다는 점이다.
또한 소스코드가 수정될 경우에도 작업량이 거의 없다.
 
꼭 빠른 문서화가 목적이 아니더라도 Doxygen 주석을 쓰는 습관을 들이는 것은 여러가지 장점이 있다.
문서화 작업을 하면서 스스로 만든 함수를 한번 더 확인하게 되고 자잘한 버그부터 구조상의 문제점까지 발견하게 되기도 한다.

댓글 없음: