Doxyfile 없는 Doxygen 문서 제작 및 Doxyapp
이 기사는 DoxygenPreviwer 메이킹 2탄으로 이번에는 Doxy app과 Doxygen의 원본 코드를 배회하는 이야기(그리고 못 갔던 곳)를 쓰고 싶다.
하고 싶은 일.
해결하고 싶은 문제는 전에도 썼는데 이거죠.
솔루션:
Doxygen의 프로그램에서 어떤 해석을 진행했는지, 분석한 데이터를 가로로 가져와 이용할 수 있는지 알아보기 위해 Doxygen의 내용을 조사했다.
Doxygen 의 컨텐츠 조사
doxygen 프로그램의 구조
src/main.cpp
int main(int argc,char **argv)
{
initDoxygen();
readConfiguration(argc,argv);
checkConfiguration();
adjustConfiguration();
parseInput();
generateOutput();
return 0;
}
이런 느낌으로 Parse Input generate는 Output을 합니다.각 함수의 실체는 잠시 src/doxygen입니다.cpp에서.src/doxygen.cpp 이하doxygen 프로그램은 전체적으로 클래스c++를 사용하지만 c와 같은static 함수와 전역 변수의 사용 방법도 매우 많기 때문에 처리와 데이터의 흐름을 추적하기 어렵다.
또한, Doxygen의 코드는 Doxygen에 대한 평론이 매우 적다.
어떻게 칠하지?
parseInput () 를 파면doxygen 특수 명령을 해석하는 곳을 찾을 수 있습니다.
src/cmdMapper.cpp
Mapper *Mappers::cmdMapper = new Mapper(cmdMap,TRUE);
Mapper *Mappers::htmlTagMapper = new Mapper(htmlTagMap,FALSE);
int Mapper::map(const char *n)
{
QCString name=n;
if (!m_cs) name=name.lower();
int *result;
return !name.isEmpty() && (result=m_map.find(name)) ? *result: 0;
}
src/cmdMapper.cppCommandMap cmdMap[] =
{
{ "a", CMD_EMPHASIS },
{ "addindex", CMD_ADDINDEX },
{ "anchor", CMD_ANCHOR },
{ "arg", CMD_LI },
:
특수 명령 목록을 비추고 해석 결과를 정수로 표시합니다.parse가 만든 데이터는 어떻게 됐어요?
이 데이터 구조가 엿볼 수 있는 곳은 대략 여기에 있다.
src/docparser.cpp
if (Debug::isFlagSet(Debug::PrintTree))
{
// pretty print the result
PrintDocVisitor *v = new PrintDocVisitor;
root->accept(v);
delete v;
}
디버그 플래그를 설정하거나 코드를 다시 작성하려면 다음과 같은 디버그 표시를 볼 수 있습니다.<root>
.<para>
..<simplesect type=note>
...<para>
....hogehogehoge
...</para>
:
이 root->accept(v);
루트에 무슨 데이터가 있는지 추측해 보세요.방문 상황을 보면 나무와 같은 구조, 데이터의 유형을 알 수 있다.이 데이터의 클래스는Qt의 클래스를 바탕으로 하지만 독립적으로 실시된 것이기 때문에 제3자가 한눈에 분석할 수 있는 대체품도 아니다.그래서 나는 이 데이터를 이용하는 것을 포기했다.
Doxygen 문서와 Doxy app을 소스 코드로 단일화합니다.
데이터 사용을 포기했지만 전체 소스 코드에서 배회할 때, 나는 Doxygen의 소스 코드 집합에 addon 폴더가 있고, 그 안에 Doxy app가 있다는 것을 발견했다.
doxy app의brief라고 쓰여 있습니다.
Example of how to use doxygen as part of another GPL applications
(GPL이 좀 신경 쓰여서) Doxygen을 맞춤형으로 만들 수 있을 것 같아요.
이동을 시도하면 Doxyfile 동작이 없는 것 같습니다. 원본 코드를 분석하고 기호를 꺼냅니다.
그래서 조금만 개조하면 Doxyfile 없이 Doxygen 문서를 만들 수 있어요.어떻게 개조했는지 보세요소스 코드.
총결산
전반적으로 말하면, 다른 사람의 코드를 보는 것은 여전히 매우 어렵다.Doxygen은 매일 유지보수를 하고 있지만 그걸 가지고 노는 게 대단하다고 생각해요.
그리고 이 일련의 기사의 방문도 그리 대단한 것은 아니기 때문에 지금 C를 위해 필사적으로 문서를 만드는 사람들도 줄어들고 있죠.
Reference
이 문제에 관하여(Doxyfile 없는 Doxygen 문서 제작 및 Doxyapp), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hakua-doublemoon/items/150a485770d07262eb6c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)