최상단 광고

2012년 4월 8일 일요일

Doxygen 사용 설명 및 매크로 설정


시작 하며 ...
매일 네이버 검색을 해서 펌 질만 하다가 이제서야 내가 작업을 했던 걸 올리네요..ㅡㅡ;;;
사실 회사에서 문서화 작업을 하며 만든 걸 가져다 올린 것이긴 하지만...
아무튼 Doxygen에 처음 접하는 사람들에게 유용하였으면 합니다. 붙여넣기 신공을 펼치긴 했지만
아무튼... 전 이만...

* Doxygen 이란?
 - Doxygen은 소스상에서 간단한 주석으로 문서를 만들 수 있도록 도와주는 유틸리티로써 다양한 언  어에 대해서 지원이 가능하며 팀 작업상에서 유용한 정보를 제공 할 수 있다.

* Doxygen 프로그램의 이용법

 












ㅡ.,ㅡ;;; 많기도 하다.

  * 문서화를 위한 명령어
 명령어 설명
 /*! .... 생략 .... */각 명렁어를 묶는 주석 
 \class클래스 이름
 \brief설명
 \date날짜
 \author작성자
 \f함수명
 \param파라메터
 \return리턴값
 \defgroup그룹 생성
 \addtogroup생성된 그룹에 추가

 
  * 명령어의 사용 예
   - 클래스와 함수에 대한 주석 예제

///////////////////////////////////////////////////////////////
/*!                                                  <- 여기서부터
\class     QtClass                                   클래스의 이름을 기입
\breif     테스트를 위한 클래스                      클래스에 대한 설명부
\date      2008-06-21                                작성된 날짜
*/                                                   <- 여기까지 하나의 클래스의 주석이 된다.
///////////////////////////////////////////////////////////////
class QtClass
{
private :

             int                                     m_iNumber;
             float                                   m_fNumber;
             char                                    m_strName[128];


public :

             ///////////////////////////////////////////////////////////////
             /*!
             \f        Init()
             \brief    초기화함수
             \date     2008-06-21
             \author   문성민
             \param    void
             \return   void
             ///////////////////////////////////////////////////////////////
             */
             void                                    Init();


};



- 위 예제 소스를 문서화 하였을 때에 위 사진과 같이 나오게 된다. -

  * 그룹화에 대한 주석 예제

///////////////////////////////////////////////////////////////
/*!
\addtogroup    QtClassGroup                          QtClassGroup에 추가 한다
\{                                                   그룹에 추가 범위의 시작
\date          2008-06-21
\breif         QtClass_2를 그룹에 추가함
*/
///////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////
/*!Details about
\class    QtClass_2
\breif    테스트용
\date     2008-06-21
*/
///////////////////////////////////////////////////////////////

class QtClass_2 : public QtClassBase
{
private :

             int          m_iNumber;
             QtClass_1*   m_pQtClass_1;

public :

             /*! \f       \brief    속성변경 \date     08-06-21    \author   문성민 */
             int          SetProperty( int I );     

             QtClass_2();               ///< 기본생성자
             ~QtClass_2();              ///< 기본소멸자
};

/** \} */                                            그룹 추가 범위의 끝

*** 여기서 중요한 것은   \{   ......  \}  중괄호 중간에 클래스나 함수가 있어야 된다.




- 그룹화를 하였을 때에 되는 문서화 예제

  * 클래스 계층도에 대한 예제
   - 클래스 계층도는 Export 설정에서 Diagram 옵션을 끄게 되면 나오지 않는다.
  




  * 메인 페이지를 꾸밀 시에 예제
/** \mainpage Doxygen Test                           메인 페이지의 제목을 설절
    \section developer 개발자                        개발자에 대한 이름
        문성민
       
    \section info 개발목적                           개발 목적
        - Doygen 문서테스트용소스                   

    \section advenced 추가정보                       추가적인 정보를 여기서 넣으면 된다.
        글머리는'-' 태그를사용하면되며
            탭으로들여쓸경우하위항목이된다.
        -# 번호매기기는'-#' 방식으로할수있다.
            -# 위와같이탭으로들여쓸경우하위항목이된다.
            -# 두번째하위항목
        이런식으로그림을넣을수도있다.

                           \image html gom.jpg        // 이미지를 넣을 수 있다.
*/


* 매크로 작성법
 매크로에 대한 작성은 비주얼 베이직을 이용하여 작성을 할 수 있다.


Tools -> Macro -> Macro Explorer 를 선택을 하면 우측에 Explorer창이 뜨게 된다.
여기서 New Macro Project를 선택을 하여 새로운 프로젝트를 생성을 하여 아래 코드를 입력을 한다.

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module AddGroup
    Sub InsertModuleComments()
        Dim module_name As String
        module_name = InputBox("추가클래스이름:")                 // 다이얼로그 박스를 띄워서 이름을 입력을 한다.
        If (module_name <> ""Then
            Dim textSelection As EnvDTE.TextSelection
            textSelection = DTE.ActiveWindow.Selection
            textSelection.Insert("///////////////////////////////////////////////////////////////")       // 텍스트를 추가 한다.
            textSelection.NewLine()                                                                       // 줄을 바꾼다.
            textSelection.Insert("/*!")
            textSelection.NewLine()
            textSelection.Insert("\addtogroup    " + module_name)                                          // + 연산으로 문자열을 추가 할 수 있다.
            textSelection.NewLine()
            textSelection.Insert("\{")
            textSelection.NewLine()
            textSelection.Insert("\date        " + Format(System.DateTime.Now, "yyyy/MM/dd"))                          // 자동으로 현재 날짜를 입력해준다.
            textSelection.NewLine()
            textSelection.Insert("\breif       ")
            textSelection.NewLine()
            textSelection.Insert("*/")
            textSelection.NewLine()
            textSelection.Insert("///////////////////////////////////////////////////////////////")
            textSelection.NewLine()
            textSelection.Insert("/** \} */")

        End If
    End Sub

End Module

위 예제는 그룹을 추가 할 때에 대한 매크로이다.
이를 컴파일을 하고 Tools -> Customize -> Keyboard 를 선택을 하여 단축키로 등록을 한다.

댓글 없음: