[Development] Documentation and Modularization

Frederik Gladhorn gladhorn at kde.org
Sun Sep 23 12:25:42 CEST 2012


Hi,
since we were discussing how to maintain QDoc and how to fix issues, I poked at 
doxygen again.
I also sent a mail to it's maintainer who responded quickly and friendly.
I'm not sure if we want to go down this route, but it seems an option to me.
It means a lot of work, but so does maintaining qdoc and extending it (does 
anyone feel like adding template support there?).

Below are my initial findings (looking at qtcore only). Feel free to correct me 
or add your experience with doxygen.

Cheers
Frederik


Big issues:
  - QML
  - No support for tables?
      \table \header \row ...

Tag Files:
  see Linking to external documentation
  while possible to have circular dependencies this requires re-runs of 
doxygen afaict
    (check mail from Marc Mutz on devel mailing list, this approach favors 
"incremental" documentation builds)
    as all solutions this means running the tool twice, there is no explicit 
switch to only generate tags/docs as far as I can see

Open Questions:
  * inheritance
  \reimp ?
  * snippet markers need begin and end?
  * no support for \section1 \section2 etc in class documentation, only in 
pages (\section \subsection ...)
  * xml output is different from dita I think, I didn't look into this and I 
don't think dita is required any more
  * is the license a problem? I'd say no: Doxygen is GPL, but:
    "Documents produced by doxygen are derivative works derived from the input    
     used in their production; they are not affected by this license."
  * is speed an issue? is it slower/faster than qdoc? I don't think it matters 
that much, but we'd like to have the make docs step run when building Qt by 
default...

Work needed in doxygen config:
  * generally macro expansion needs fine-tuning
    \macro ? there is preprocessing leading to macro expansion (optional)
    with PREDEFINED it's prossible to replace macros with different source code 
(eg nothing)
  \l - see custom commands - should work
  \threadsave
  \reentrant
  \tt
  \b
  section labels \section1 seems to not work
  \module -> \defgroup
  \inmodule -> \ingroup
  \since needs to expand to boiler plate text

Work needed on Qt documentation:
  * enums - inline value documentation
    \value -> enums in header

Todo:
  * write config files
  * integrate with build system (two runs during build?)
  * integrate with stylesheets and adopt html templates etc

Nice stuff:
+ output formats
+ searching client and server side
+ graphs, inheritance diagrams
+ lists in bb style possible (less typing)
+ seemingly better template support (needs checking)
+ automatically documents typedefs (?)
+ link to source files possible
+ inline enum documentation
+ maintainer reacted to mail within a day and was happy about potential qml 
contributions



More information about the Development mailing list