티스토리 뷰

우선 아래의 글은 

http://onecellboy.tistory.com/342 [신불사 - 신현호라 불리는 사나이] (CC BY) 가 원본입니다.

배치변경 및 내용 추가하여 이곳에 올립니다.







Reference

https://www.stack.nl/~dimitri/doxygen/manual/index.html : doxygen 메뉴얼

http://www.slideshare.net/arload/doxygen-33932243 : doxygen 사용법

 


테스트 환경

- ubuntu14.04 lts

- php



테스 코드





Doxygen 이란?

doxygen 코드상의 주석을 통해 문서를 만들어내는 프로그램이다. doxygen 맞는 주석을 사용하면 따로 문서를 만들 필요 없이 주석만으로 문서를 만들  있기 때문에 문서 관리를 따로  필요가 없고 코드만 보고도 이해하기가 쉬워진다.

 

아래와 같이 html 문서를 만들  있다.






기본 주석법


doxygen 인식하는 주석법은

/**
주석
*
*
*/

이런 식으로 /** 주석 시작시 * 두번  줘야 한다.

 방법 말고도 주석 법은  있다.

 

아래의 사이트를 보면 주석 방법에 대해 나와 있다.

https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html#specialblock

 

 

 

클래스에 대한 주석


@brief

간략한 설명

@details

자세한 설명

@author

저작권자

@date

날짜

@version

버전


Example

/**

 *

 * @brief 테스트를 위한 클래스이다.

 * @details 내부에서 아무짓도 안한다.

 * @author oncellboy

 * @date 1234-12-12

 * @version 0.0.1

 *

 */

class Test{

}


 


 

출력 문서






메소드에 대한 주석


@brief

간략한 설명

@details

자세한 설명

@param

파라미터

@return

반환

@throws

발생 예외

 

Example

/**

 *

 *     @brief 메서드 간략 설명

 *     @details 메서드 자세한 설명

 *     @param string a 파라미터 번

 *     @param string b

 *     이거는 테스트 파라미터

 *

 *     @return mixed|boolean

 *     성공시 숫자, 실패시 false 반환

 *        

 *     @throws ValidException 나쁜짓하면 예외발생        

 *

 */

public function add($a,$b)

{

$sum = $a + $b;

 

 

return $sum;

}


 


 






















출력 문서







기타 주석

주석

설명

작성 

출력 









@todo







todo

todo 리스트를 따로 관리도 해준다.


해당 Class나 함수에 대해 해야할 일을 기록









@todo 다음주까지 해야할 업무



 

todo 리스트 관리



@todo 작성된 해당 클래스와 메소드를 알수 있다.









@bug








bug

bug 리스트를 따로 관리도 해준다.









@bug 반환이 언제나 false이다. 해결해야함




bug 리스트 관리



@bug 작성된 클래스와 메소드를 알수 있다.



@see



참고나 이것 저것 보여 줘야 하는것

Reference 등등



@see 그냥 이것저것 보여줘야하는 것




 




   _____|______

         |





  표 (Table)

 


First Header  | Second Header

 ------------- | -------------

 Content Cell  | Content Cell

 Content Cell  | Content Cell



 



@li



리스트


@li list 1

@li list 2




[내용](링크주소)


링크

클릭시 링크를 연다.


[내 블로그](http://onecellboy.tistory.com)






@code

@endcode



코드 표현

 

@code{.py}

 #!/usr/bin/python

 print "Hello World! 뜸금없는 파이썬 코드"

@endcode




 










@ref class

@ref namespace.class








참조

클래스 이름이나 네임스페이스가 포함되어 있는 경우 namespace.class  써준다.

참조 링크를 클릭시 해당 클래스의 문서 페이지로 이동한다.










@ref Etc

@ret subFolder.Etc



 

subFloder.Etc 클릭시 해당 클래스의 문서 페이지로 이동한다.



 

@n

주석 내에서 new line(개행이다. (Line Feed)

@see 개행할 것 @n 이다.

 





작성  전체

<?php

 

require_once './Etc.php';

 

/**

 *

 * @brief 테스트를 위한 클래스이다.

 * @details 내부에서 아무짓도 안한다.

 * @author oncellboy

 * @date 1234-12-12

 * @version 0.0.1

 *

 */

class Test{

 

public $test; 


public function __construct()

{

 

}

 

public function show()

{

 

$etc = new Etc();

 

$str = $etc->getText();

 

print_r($str);

}

  

/**

 *

 *        @brief 메서드 간략 설명

 *        @details 메서드 자세한 설명

 *        @param string a 파라미터 번

 *        @param string b

 *        이거는 테스트 파라미터

 *

 *        @return mixed|boolean

 *  성공시 숫자, 실패시 false 반환

 *        

 *        @throws ValidException 나쁜짓하면 예외발생        

 *

 *

 *

 *  @todo 다음주까지 해야할 업무

 * 

 *  @bug 반환이 언제나 false이다. 해결해야함

 *

 *

 *  @see 그냥 이것저것

 *  보여줘야하는 것

 *

 *        

 *        First Header  | Second Header

 *        ------------- | -------------

 *        Content Cell  | Content Cell

 *        Content Cell  | Content Cell

 *

 *  @li list 1

 *  @li list 2

 *

 *  [내 블로그](http://onecellboy.tistory.com)

 *

 *        @code{.py}

 *  #!/usr/bin/python

 *        print "Hello World! 뜸금없는 파이썬 코드"

 *  @endcode

 *

 *  이 클래스를 사용합니다. @ref Etc @n

 *  이 네임스페이스의 이 클래스를 사용합니다. @ret subFolder.Etc

 *

 */

public function add($a,$b)

{

$sum = $a + $b;

 

 

return $sum;

}

}

 

 

출력 문서 전체











Doxygen 설치


1
$ sudo apt-get install doxygen doxygen-gui
cs


 

Doxygen gui 실행


1
$ doxywizard
cs

 


  

Doxygen GUI 설정

 

  • select : 소스의 위치를 지정

  • Pjorect name : 프로젝트 이름

  • Project viersion or id : 프로젝트 버전

  • Scan recursively : 소스 위치의 모든 하위 폴더까지 스캔(지정하지 않으면 하위폴더에 대한 문서는 생성 안함)


  • All Entities : 모든 엔트리

  • Include cross-referenced source code in the output :  함수마다 사용한 함수로의 링크를 생성

  • Select programming language to optimize the results for : 언어 지정


  • with navigation panel : 문서 왼쪽에 탐색 트리를 보여줌

  • Dot graphs to generate : 소스간의 관계를 GraphViz 표현해줌

  • OUTPUT_LANGUAGE : 출력 문서 언어


  • ALWAYS_DETAILDE_SEC : 항상 상세 정보를 보여줌

  • INLINE_INHERITED_MEMB : 소멸자와 상속자를 제외한 상속된 모든 멤버를 보여줌


  • EXTRACT_ALL : 소스코드의 모든 요소가 문서화 대상이 

  • EXTRACT_PRIVATE : 클래스 내의 모든 private 멤버가 문서화 대상이 

  • EXTRACT_STATIC : 클래스 내의 모든 static 멤버가 문서화 대상이 


  • INLIVE_SOURCES : 함수 설명시 함수 코드를 보여줌


  • CLASS_DIAGRAMS : 클래스의 상속구조 다이어그램을 그림

  • UML_LOOK : 다이어그램을 UML 형식으로 그림


  • DOT_PATH : dot 프로그램(Graphviz) 위치를 지정

    Graphviz 설치법 

    1
    $ sudo apt-get install graphviz
    cs


    설치
     위치 확인

    1
    $ which dot
    cs





문서 만들기


  • Run doxygen 클릭

  • Show HTML output으로 문서 확인





http://onecellboy.tistory.com/342 [신불사 - 신현호라 불리는 사나이] (CC BY)

댓글
댓글쓰기 폼