'5. Documentation'에 해당되는 글 10건
- 2011.08.17 [Java] CheckStyle and eclipse-cs
- 2011.07.18 Microsoft StyleCop
- 2011.03.07 wikimatrix - 용도에 맞는 wiki 를 찾아주는 사이트
- 2011.03.07 [MoinMoin] Windows XP, Apache 환경에서 파일 업로드 문제
- 2011.02.22 우분투 MoinMoin Wiki 설치
- 2010.12.08 Code Conventions for the JavaServer PagesTM Version 1.x Language
- 2010.12.08 Natural Docs - JavaScript 문서화 지원
- 2010.01.06 CHM 파일 병합하기 (Merge chm files)
- 2009.07.13 Doxygen v1.5.9 에서 한글 깨짐 수정
- 2008.06.15 Doxygen 주석 활용 [VC++ 스타일]
[Java] CheckStyle and eclipse-cs

http://eclipse-cs.sourceforge.net/
http://checkstyle.sourceforge.net/
를 참고하시면 되며,
http://eclipse-cs.sourceforge.net/downloads.html
에 설치 방법 또한 자세하게 나옵니다.
설치 후에, 아래 페이지를 참고하여 프로젝트에 CheckStyle 을 적용해 봅시다.
http://eclipse-cs.sourceforge.net/basic_setup_project.html
여러 명이서 코드 작업할 때, 일관성을 유지하면서 가독성을 높이기 위해서는 옵션이 아닌 필수적인 선택입니다.
저의 경우는 Visual Studio 2008 에 적용하여 사용하고 있는데, 무척이나 만족스럽습니다.
몇가지 맘에 들지 않거나 너무 불편한 것들이 있으면 이를 예외로 설정할 수도 있습니다. 또, Custom Rule 도 정의할 수 있는 것 같습니다 (코딩을 해야 하는 것 같아 깊게 살펴보지는 않았습니다).
적용한 방식은 다음과 같습니다.
하나의 솔루션에 여러개 (약 8~9개)의 C# 프로젝트가 있었습니다. 모든 프로젝트에 적용하면 고치는 양이 너무 많을 것 같아 프로젝트 하나씩 적용하였습니다. 또한 외부에서 가져온 소스 역시 스타일에 예외토록 하였습니다. 그리고 Global 하게 적용될 수 있는 설정을 만들고 이를 각 프로젝트에 merge 하여 동시에 적용되도록 하였습니다.
이렇게 하기 위해 솔루션 밑에 StyleCop 설정 파일을 두고, 이를 각 프로젝트 밑의 StyleCop 설정파일과 merge 되도록 하였습니다. 그리고 빌드 시 Style 이 일치하지 않으면 경고가 아닌 에러를 일으키도록 하여 무조건 수정을 하도록 강제하였습니다.
StyleCop 과 관련된 설치법과 설치에 대한 자세한 내용은 아래 링크를 참고하시기 바랍니다.
StyleCop 공식 페이지
http://stylecop.codeplex.com/
글로벌 세팅 파일 만들기
http://code-inside.de/blog-in/2010/12/19/howto-apply-stylecop-settings-on-several-projects/
파일 예외처리하기
http://blogs.msdn.com/b/sourceanalysis/archive/2008/11/11/introducing-stylecop-on-legacy-projects.aspx
[MoinMoin] Windows XP, Apache 환경에서 파일 업로드 문제

import sys import os
def __init__(self, environ, populate_request=True, shallow=False): try: if sys.platform == "win32": import msvcrt msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) ResponseBase.__init__(self) RequestBase.__init__(self, environ, populate_request, shallow) self.href = Href(self.script_root or '/', self.charset) self.abs_href = Href(self.url_root, self.charset) self.headers = Headers([('Content-Type', 'text/html')]) self.response = [] self.status_code = 200 except Exception, err: self.fail(err)
Code Conventions for the JavaServer PagesTM Version 1.x Language

A, B 두개의 파일을 A 에다가 Merge 하면 A 에서 B 의 내용을 볼 수 있다. 인덱스도 검색가능하다. 단, B 가 지정된 경로에 존재해야 한다.
병합하는 방법은 아래와 같다.
* 부모 .chm 파일의 [MERGE FILES] 섹션에 자식 .chm 파일을 포함시키기
3. 클릭 Add
* 부모 와 자식 인덱스 모두 binary 인덱스여야 한다.
2. Compiler 클릭
3. Create a binary index 체크 박스 선택
* 아래와 같은 Topic 이 추가되어야 한다.
INCLUDE: childchm.chm::\childchm.hhc
2. Insert File 클릭
3. .chm 파일명과 .hhc 파일 명 기입
4. 파일을 찾을 수 없다고 하더라도, 그냥 Yes 를 선택한다.
* 알려진 버그로 인해, 컨텐츠 테이블이 병합되지만, 토픽이 올바르게 들여쓰기 되지 않는다.
예를 들어 아래처럼 보여야 할 목록이
Mybook Chapter 1 Chapter 2 Chapter 3 |
아래 처럼 보여질 수 있다.
Mybook Chapter 1 Chapter 2 Chapter 3 Chapter 4 |
이 버그를 해결하기 위해서는, 메모장에서 부모 .hhc 파일을 변경해야 한다. 모든 부가적인 <UL> 과 </UL> 태그를 모두 삭제하고, .hhc 파일을 저장, 그리고 부모 .chm 파일을 재 컴파일 한다.
참고 : http://support.microsoft.com/kb/311151/en-us?fr=1
Expert 탭에서,
* KSC-5601 CharSet 은 UNX에서는 EUC-KR 이란 encoding으로 표현되고, 윈도우즈에서는 cp949란 encoding 으로 표현된다.
Doxygen 에서 인코딩은 libiconv (http://www.gnu.org/software/libiconv/) 를 사용하는데, 한글은
- EUC-KR, CP949, ISO-2022-KR, JOHAB
근데, 한글 문제는 그렇다 치고 IE에서 번짐 현상이 있다. 이건 IE 문제인 것 같다. Firefox 에서는 정상적으로 동작하니깐... 다행. 휴~
Doxygen 주석 활용 [VC++ 스타일]

//////////////////////////////////////////////////////////////////////////
/// @brief Test Class for an example of doxygen usage
/// @remark More Information
/// @author Jihoon.Yim
/// @version V1.0
/// @date 3/21/2008
//////////////////////////////////////////////////////////////////////////
/// @note I changed my mind.
/// @todo I will have to think more complex design on this class.
class Test
{
int Add(int i, int j);
int Sum(int i, int j);
};
//////////////////////////////////////////////////////////////////////////
/// @brief Add two parameters and then return the sum
/// @param i Integer value
/// @param j Integer value
/// @exception Throws an exception when error occurs.
/// @return Return (i+j)
/// @retval -1 Failed to add
/// @remark More Information
/// - Item 1
/// -# Sub Item 1
/// -# Sub Item 2
/// .
/// - Item 2
/// .
/// @code
/// int i=3;
/// int j=3;
/// try
/// {
/// int result = Add(i, j);
/// }
/// catch
/// {
/// ...
/// }
/// @endcode
/// @author Jihoon.Yim (A company)
/// @author Gildong.Hong (B consulting company)
/// @date 3/21/2008
//////////////////////////////////////////////////////////////////////////
/// @bug [Fixed 3/22/2008 Jihoon.Yim] That was not correct in some cases.
/// @bug [Fixed 3/21/2008 Jihoon.Yim] I forgot some calculation. (Fixed 3/23/2008)
/// @warning Watch out when using this class.
int Test::Add(int i, int j)
{
return (i+j);
}
//////////////////////////////////////////////////////////////////////////
/// @brief Add two parameters and then return the sum
/// @param i Integer value
/// @param j Integer value
/// @return Return (i+j)
/// @retval -1 Failed to add
/// @author Jihoon.Yim
/// @date 3/21/2008
//////////////////////////////////////////////////////////////////////////
int Test::Sum(int i, int j)
{
return (i+j);
}