[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