Nov 23 2006

예제를 통해 Doxygen 주석 다는 방법 최대한 간단히 익히기

분류: Tip.Tech 태그: ,Heart @ 5:26 오후

Trackback : http://dev.heartsavior.net/archives/126/trackback/

나중에 까먹게 될 까봐 바로 사용할 수 있을 정도로 간략하게 간추려서 올림

* 예제는 실제 사용 중인 소스 코드를 타겟으로 함
* ‘최대한 간단히’ 에 주목
* 설치 및 운용, 자세한 사용법에 대해서는 다루지 않음(아래 사이트들을 참조)

http://parasite.pe.kr/?p=26 / http://parasite.pe.kr/?p=27
http://wiki.kldp.org/wiki.php/Doxygen
http://www.gpgstudy.com/gpgiki/DoxygenTutorial

* 대신, 설정 템플릿 파일은 올려 둠(급할 수도 있으니까)
– 옮기면서 첨부파일을 날림…

아래는 Doxygen 형식의 주석이 적용된 예제 소스이다.

/**
@file PropertiesUtil.h
@brief CPropertiesUtil 클래스 선언 헤더

*/

#if !defined(AFX_PROPERTIESUTIL_H__5B7DF824_3F5A_47F6_9AD3_A287733C8379__INCLUDED_)
#define AFX_PROPERTIESUTIL_H__5B7DF824_3F5A_47F6_9AD3_A287733C8379__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include “stdafx.h”

#define PROPERTY_LOAD_SUCCESS 1 /**< 파일 파싱까지 성공함 */
#define PROPERTY_LOAD_FILE_FAILED 0 /**< 파일 로드에 실패함 */
#define PROPERTY_ERROR_LINE_MUL -1 /**< 여기에 * n(에러 행 번호) 해서 리턴하게 됨 */

/**
@brief 설정 파일을 읽어서 보관하는 클래스

설정 파일의 구조는 다음과 같다.
- 첫 글자가 # 이면 그 라인은 주석
- 빈 라인은 대상이 되지 않음
- ‘속성 = 값’ 으로 이루어진다.
*/
class AFX_EXT_CLASS CPropertiesUtil
{
public:
/**
* @brief 생성자\n
* 아무 일도 하지 않는다.
*
*/
CPropertiesUtil();

/**
* @brief 소멸자\n
* 아무 일도 하지 않는다.
*
*/
virtual ~CPropertiesUtil();

/**
@brief 설정 파일을 읽어들여서 파싱하고 각 설정들을 저장

@param szFileName 읽어들일 설정 파일 이름
@return 에러 유무
@see PROPERTY_ERROR_LINE_MUL
@see PROPERTY_LOAD_FILE_FAILED
@see PROPERTY_LOAD_SUCCESS
*/
int LoadFile(const char * szFileName);

/**
@brief 속성에 해당하는 값을 맵에서 찾아서 전달인자에 설정

@param szKey 속성 이름
@param csValue 속성에 해당하는 값
@return 속성의 존재 유무
*/
BOOL GetMatchedValue(const char * szKey, CString & csValue);

private:
CMapStringToString m_mapKeyToVal; /**< 키와 값을 매핑시킨 객체 */

};

#endif // !defined(AFX_PROPERTIESUTIL_H__5B7DF824_3F5A_47F6_9AD3_A287733C8379__INCLUDED_)

JavaDoc 유저라면 보기만 해도 어떻게 하는 건지 짐작이 올 것이고, 아니어도 감이 올 거라 생각한다.

많은 주석 스타일 중에 JavaDoc 스타일을 선택하였고( /** ~ */ ) 속성도 필요한 것만 사용하였다.
속성들은 앞에 @를 붙이고 있다. 물론 다른 스타일은 !도 있는데, 여기서는 그냥 @만 생각하자.

file : 일반적으로 파일 명을 기술
brief : 함수에 대해 간략하게 기술
주의사항 - 상세 기술과 구분하기 위해 한 라인을 비워야 한다.
param : 파라미터에 대해 기술
see : 참조할 함수나 클래스, define값, struct 등을 기술
return : 리턴값에 대해 기술


속성 없이 쓰여진 텍스트는 상세 기술이라고 생각하면 된다.

이제 Doxygen을 구동시키자. 구동시키면 첨부파일과 같은 내용의 html파일들이 쭉 나오고,
첨부파일은 이를 Doxygen이 chm으로 자동으로 컴파일해 준 것이다.
한번 열어서 확인해 보기 바란다.

– 역시 첨부파일을 날림…

이제 C/C++ 유저도 JavaDoc를 부러워하지 말 지어다.


Nov 23 2006

Doxygen & VC++ 6 한 가지 조금 아쉽네…

분류: Dev.Think 태그: ,, Heart @ 1:10 오후

Trackback : http://dev.heartsavior.net/archives/127/trackback/

요점만 먼저 말하자면, 함수 주석 쓰는 부분이 참 아쉬운 것 같다.

혹시 모르시는 분들을 위해 잠깐 설명을 하자면,
Doxygen에서는 주석을 함수 프로토타입에 써도 되고, 함수 정의에 써도 된다.

그런데 VC++ 6에서 마우스로 갖다대면 나오는 힌트(라지만 주석 뿌리기)는 함수 프로토타입에 적힌 주석만 보여주도록 되어 있다.

그럼 해답은 함수 프로토타입에 쓰면 될까?
맞다. 쓰면 된다. Not bad…

하지만, 솔직히 귀찮은 작업임에 틀림이 없다.
설계를 잘 했다면 작업할 때 프로토타입 한번 선언하면 자주 수정하지 않는 게 당연한 것이고, 그에 비해 구현은 수정이 많이 갈 수 있고, 그 수정으로 인해 주석의 변경이 있어야 될 경우도 있기 때문에 함수 정의에 주석을 달아주는 게 좀(많이?) 과장해서 10배는 편하다.

그렇다고 이제 와서 VC++ 6 서팩 7 만들어서 정의에 쓴 주석도 보여달라고 해 봐야 VS 2005가 나온 마당에 해줄 리도 만무하고…

힘없는 자가 참아야지… ㅜ.ㅜ


Oct 13 2006

doxygen 관련 링크(네이버 카페 펌)

분류: Tip.Tech 태그: ,Heart @ 2:37 오후

Trackback : http://dev.heartsavior.net/archives/134/trackback/

자료가 있는 네이버 카페가 비공식이라 허락을 받지 못하였다.
양해를 표하며, 자료 삭제 요청이 있으면 바로 삭제하도록 하겠다.
원문은 http://cafe.naver.com/vrlab.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=188 이며,
네이버에서 doxygen으로 검색할 경우에만 글이 보인다.
(네이버 검색도 좀 문제가 있다. 비공식 카페 글이 왜 검색되고 보이는거냐?)

다운로드

http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc

기본원칙

http://blog.naver.com/kw1128/70003380214

형식

http://blog.naver.com/kw1128/70003380233

강좌

http://wiki.kldp.org/wiki.php/Doxygen
http://wiki.kldp.org/wiki.php/Doxygen/%B0%AD%C1%C201#toc
http://wiki.kldp.org/wiki.php/Doxygen/%B0%AD%C1%C202#toc
http://wiki.kldp.org/wiki.php/Doxygen/%B0%AD%C1%C203

한글 메뉴얼

http://wiki.rabidus.net/ow.asp?Doxygen

설치/사용 메뉴얼

http://blog.naver.com/wizhyo/110001543328
http://www.pie.pe.kr/cgi-bin/moin.cgi/Doxygen

프로젝트 문서화하기

http://cafe.naver.com/dotnetplus.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=2