2011-09-17 5 views
3

매우 큰 클래스가 있습니다.이 클래스는 매우 문서화되어 있습니다. Doxygen은 HTML 문서를 만드는 데 사용되지만,이 클래스의 경우 HTML 파일은 ~ 12MB 크기로 내 취향에 비해 너무 큽니다.Doxygen : HTML이 너무 커서

이것은 Doxygen이 클래스의 모든 문서를 한 파일에 나열하기 때문에 발생하지만이 경우 합리적인 페이지를 갖기 위해 클래스 기능 문서를 별도의 페이지로 분할하는 것이 좋습니다.

내가 묻는 바는 이것에 대한 해결책이 있습니까?

아마도이 특별한 옵션/트릭이 있습니까? 아니면 ... 아마이 클래스에 대한 "정상적인"문서를 해제하고 더 나은 조직 페이지에서 클래스 기능 문서를 복사 할 수 있습니까? 이 경우 @copydoc 이러한 기능을 수행 할 것인가?

당신의 조언은 무엇입니까?

+5

솔직히 말해, 나의 충고는 클래스를 작은 부분으로 나누는 것입니다. :-) – CodeCaster

+0

* @ CodeCaster *이 클래스는 160K + 라인 (문서가 포함 된)으로 구성되며 11 개의 파일로 나뉘어져 있습니다 (감사합니다 * partial *!). 자동 생성되므로 다른 클래스로 분리 할 수 ​​없습니다. – Luca

답변

1

가능합니다!

구성 키가 있습니다. 'SEPARATE_MEMBER_PAGES = YES'입니다. 그러면 각 반원마다 다른 페이지가 만들어집니다.

다음 문제는 Doxygen을 생성 파일의 수 (파일 시스템의 악몽)이지만,이 'CREATE_SUBDIRS = YES'을 설정하여 풀 수있다 : 디렉토리에 이상이 스파 스 파일, 그래서 그들을 관리 할 수 ​​있도록. 며칠 후


...


번호 문제는 아직 아니, 그 어느 때보 다 더 나쁘다 ... 존재하는 각 개별 클래스 멤버 페이지 목록을 모든 클래스 멤버 왼쪽 : 4K 멤버 페이지, 각 1MB 만들기 ... 4GB? OMG.

그래서 결과 HTML에서 해당 테이블 목록을 제거하기로 결정했습니다. 다행스럽게도이 섹션은 생성 된 모든 파일에서 동일합니다. 이것을 달성하기위한 유틸리티 프로그램을 만들었습니다. 여기에 (HtmlAgilityPack 사용) 가장 유용한 코드입니다 :

물론
HtmlAgilityPack.HtmlNode divNode = htmlDoc.DocumentNode.SelectSingleNode("//body/div[@class='contents']/table/tr/td/div[@class='navtab']"); 

if (divNode != null) { 
    divNode.ParentNode.RemoveChild(divNode, false); 

    Console.WriteLine("Queued {0}", htmlPath); 

    lock (sReducedHtmlPathsLock) { 
     sReducedHtmlPaths.Add(htmlPath, htmlDoc); 
     sReducedHtmlPathsSemaphore.Release(); 
    } 
} 

내가 너무 별도의 스레드를 별도의 스레드에서 HTML 파일의 무리를로드를 쓰고 멀티 스레드 프로그램을 빌드는 (그렇지 않으면 너무 걸릴 긴).

결과 : 4GB에서 60MB로 넘어갔습니다!

결과에 대해 궁금한 점이 있습니까? this documentation page 링크 페이지를 참조하십시오.

관련 문제