Mercurial > mplayer.hg
changeset 13290:fb8f8882fb6a
adding the code documentation guide lines
now everyone has to follow them
author | attila |
---|---|
date | Thu, 09 Sep 2004 01:13:26 +0000 |
parents | 2cb80075204c |
children | 67759438903c |
files | DOCS/tech/code-documentation.txt |
diffstat | 1 files changed, 124 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/tech/code-documentation.txt Thu Sep 09 01:13:26 2004 +0000 @@ -0,0 +1,124 @@ +Code documentation guidelines +============================= + +About this guide +---------------- + +Due to the ever increasing complexity and size of MPlayer it became quite hard +to maintain the code and add new features. Part of this problem is the lack +of proper documentation what the code in question does and how it is doing it. +To tackle this problem every part of MPlayer should follow these guidelines +on what and how code should be documented. + + +Doxygen +------- + +MPlayer uses doxygen for its code documentation. It generates HTML files +which contain the specially tagged comment lines from the code including +cross references. To generate it type `make doxygen` in the source root +directory. It will generate the files in DOCS/tech/doxygen. To clear them +again, you can use `make doxygen_clean`. +For further information about doxygen and its sources please have a look +at their website: http://doxygen.sf.net + + +What should be documented? +-------------------------- + +- every function, no matter whether it is globally or just locally used + * what the function does + * all parameters and return values of the function and their valid ranges + * all side effects (to passed parameters, globals etc) + * all assumptions made within the function + +- global, file local and important variables + * what it is used for + * its valid range + * where it is set (optional) + * where validity checking is done (optional, mandatory for variables which + are set by something external, eg user parameters, file information etc) + +- #define, typedefs, structs + * all global definitions + * all local definitions whos use is not imediatly clear by their name + (as a rule of thumb, it's better to document too much then not enough) + * all dependencies + +- non-trivial parts of the code + * tricky parts + * important parts + * special side effects + * assumptions of the code + * string operations and why they are safe + +- workarounds + * why they are needed + * how they work + * what side effects they have + +If you are unsure whether a comment is needed or not, add one. + + +How should it be documented? +---------------------------- + +All comments should be in correct and clear English. Any other language is +not allowed. The language used should be kept simple as the code will be +read mostly by non-native speakers. For function and variable documentation, +a style usable by doxygen should be used. See section 3 "Documenting the code" +of the doxygen manual for an introduction. A very short overview follows: + +Doxygen includes only special comments in the documentation, those are: + +/// This is a line used by doxygen. + +/** this one, too */ + +/** these +here +of +course, +too */ + +//! this form can be also used + +// This line isn't included in doxygen documentation. + +/* Neither is this. */ + +There are a couple of special tags for doxygen: + +\brief <one line text> + Gives a brief description of a function. +\param <parameter> <text> + Describes a specific <parameter>. +\return <text> + Describes the return value. +\a <word> + Mark next word as a reference to a parameter. +\e <word> + Use italic font for the next word. +\b <word> + Use bold font for the next word. +\c <word> + Use typewriter font for the next word. +\sa <references> + Adds a section with crossreferences. +\bug <text> + Describe a known bug. +\todo <text> + Add a todo list. +\attention <text> + Add a section for something that needs attention. +\warning <text> + Add a section for a warning. +\anchor <refname> + Set an invisible anchor which can be used to create a link with /ref. +\ref <refname> [<text>] + Add a link to <refname>. + +For a complete list of tags please read section 20 "Special commands" of the +doxygen manual. + +