GSoC/GCI Archive
Google Code-in 2010 Mono Project

Update Gendarme's xmldoc2wiki to use Github's wiki

completed by: Yuri Stuken

mentors: spouliot

Background

Gendarme is a static analysis tool to find problems in .NET software. Gendarme inspects executables and libraries that contain code in ECMA CIL format (Mono and .NET) and looks for common problems with the code, problems that compiler do not typically check or have not historically checked.


Task

Gendarme already has a xmldoc2wiki tool. It's used to convert the XML comments of the rules (only, not the framework xml doc) into mediawiki markup. Files are afterward manually updated on www.mono-project.com. This is repetitive, cumbersome and errorprone. To minimize the inconveniances one page was created per rule assembly (about 15) and only tracks the latest release.

Now Github provides a git-enabled wiki. That can remove the most of the inconveniance of the current system (e.g. easier automated updates) and allow us to get one web(wiki) page per rule (e.g. smaller, better indexed, pages).

 

Deliverable

An updated xmldoc2wiki tool that:

  • Create one directory per release of Gendarme (e.g. /2.8/)
  • Create one index of all (rule) assemblies available in the release (e.g. /2.8/index)
  • Create one directory per (rule) assembly (e.g. /2.8/Gendarme.Rules.BadPractice/)
  • Create one index page per assembly/directory (e.g. /2.8/Gendarme.Rules.BadPractice/index)
  • Create one file per rule, converting the XMLDOC data into readable documentation using github's markup (e.g. /2.8/Gendarme.Rules.BadPractice/AvoidAssemblyVersionMismatchRule)

Instructions and/or scripts to see/review the results locally (without pushing to github);
A visual look and feel similar to the current wiki documentation (on mono-project.com wiki);

 

Resources

* Gendarme web site: http://www.mono-project.com/Gendarme

* Mailing-list / discussions: http://groups.google.com/group/gendarme

* IRC: #gendarme on GimpNET

* Gollum (github wiki system): https://github.com/github/gollum#readme