[cfe-dev] Getting Involved
Dmitri Gribenko
gribozavr at gmail.com
Thu Oct 2 02:27:37 PDT 2014
On Wed, Oct 1, 2014 at 9:55 PM, andy lawrence <ajlawrence at acm.org> wrote:
> Hello,
>
> I am interested in getting involved in the development of clang. I was
> thinking I liked the sound of the following project from the project list:
>
> Implement an tool to generate code documentation
Hi Andy,
I would be happy to answer your questions, help with design and review patches.
This year we had a GSoC proposal for this topic, but, unfortunately,
it was not implemented. Here it is:
Prior Work
* clang already understands doxygen-style comments to a degree and
attaches them to the AST:
http://llvm.org/devmtg/2012-11/Gribenko_CommentParsing.pdf
* doxygen can already use clang as a backend
http://comments.gmane.org/gmane.comp.compilers.clang.devel/29490
* there already is a cldoc https://github.com/jessevdk/cldoc
Project Plan
The project will be split in several stages, each depending on the
previous. A completed stage should be able to stand as a smaller
useful contribution by itself.
Fully parse doxygen comments
* implement comments for macros
* fully parse the doxygen language and produce a complete comment AST
* extend the XML representation of comments to encompass the comment
AST and unresolved references
* resolve links within the translation unit to a Decl* or a USR
Indexing Files
To resolve links across translation units it will be necessary to
retain information from each translation unit.
* define exactly what kind of information should be retained while
indexing the translation unit in order to be able to resolve links
against it
* implement indexing info as side-car files that can be consumed by a tool
Index Database
Depending on how the project progresses it would be possible to design
and implement a
* defining a schema for a DB to store information about possible link targets
* populating DB with information from TUs in the project
Documentation Generator
As a final step the new functionality (CommentAST/XML + indexing files
or indexing database) should be used to implement a simple HTML/LaTeX
documentation generator.
Dmitri
--
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
More information about the cfe-dev
mailing list