Product Comparisons
Below is a comparison of a group of similar Documentation Comment generation tools. These are the most
recently available releases of the tools that we are aware of (updated every couple of months). We have
tried to be totally objective, so if anything is missing or incorrect in this table, please let us know
and we'll double-check our facts.
The systems compared below are:
- VS: the built-in Visual Studio features
- ND: .NET Documentor (1.0)
- CM: CommentMaker (1.9.8)
- GD: GhostDoc (4.5),
- GDP: GhostDoc Pro (4.5),
- APD: Atomineer Pro Documentation (7.67),
Note that some popular commercial add-ins advertise that they include code-documentation support features.
However, these add-ins are not specialised for documentation, and generally offer only very primitive support
in this area (typically insertion of fixed 'boilerplate' comment blocks). As such, they are not directly
comparable to the documentation-specific add-ins listed here.
| Supported Languages (in Visual Studio 2005, 2008, 2010, and 2012) | VS | ND | CM | GD | GDP | APD |
| Visual Basic |  |  | - |  |  |  |
| C# |  |  | - |  |  |  |
| C++/CLI | - |  |  | - | - |  |
| C++ | - | - |  | - | - |  |
| C | - | - | - | - | - |  |
| Java | - | - | - | - | - |  |
| UnrealScript | - | - | - | - | - |  |
| Configurable comment generation for any other filetype | - | - | - | - | - |  |
| Supported Documentation Formats | VS | ND | CM | GD | GDP | APD |
| Documentation XML |  |  | - |  |  |  |
| Doxygen | - | - |  | - | - |  |
| JavaDoc | - | - | - | - | - |  |
| Qt | - | - | - | - | - |  |
| Legacy documentation conversion | - | - | - | - | - |  |
| Documentation Block Features | VS | ND | CM | GD | GDP | APD |
| Generate new Doc Comment block |  |  |  |  |  |  |
| Create comments for all code elements in a type in one pass | - |  |  | - |  |  |
| Create comments for all code elements in a file in one pass | - |  |  | - |  |  |
| Create comments for all code elements in a project in one pass | - |  |  | - | - | - |
| Support single-line comment format, e.g. /// ... |  |  |  |  |  |  |
| Support multi-line comment format, e.g. /** ... */ | - | - |  | - | - |  |
| Optionally place a #region around the doc comment | - | - | - | - | - |  |
| Optionally place a #region around the entire code element | - | - | - | - | - |  |
| Optional, configurable top/bottom separator lines | - | - |  | - | - |  |
| Configurable whitespace within the comment block | - | - |  | - | - |  |
| Configurable whitespace above/below the comment block | - | - | - | - | - |  |
| Configurable ordering of block elements |  | - |  | - |  |  |
| Configurable and custom documentation tags/commands | - | - |  | - | - |  |
| Optionally use end of line ///< comments for variables & enum entries | - | - | - | - | - |  |
| Optionally only document public/protected/internal | - | - | - | - | - |  |
| Independent configuration settings per-Solution or per-Project | - | - | - | - | - |  |
| Documentation Entry Features | VS | ND | CM | GD | GDP | APD |
| Word-wrap entry text | - | - | - | - | - |  |
| File header comments | - | - |  | - | - |  |
| File footer comments | - | - | - | - | - |  |
| Namespace comments | - | - | - | - | - |  |
| Member variable summary | - | - | - | - | - |  |
| Class summary | - | - | - | - | - |  |
| Generic Class type-parameters | - | - | - |  |  |  |
| Interface summary | - | - | - | - | - |  |
| Enum summary | - | - | - | - | - |  |
| Enum entry summary | - | - | - | - | - |  |
| Struct summary | - | - | - | - | - |  |
| Union summary | - | - | - | - | - |  |
| Typedef summary | - | - | - | - | - |  |
| #define summary | - | - | - | - | - |  |
| Method (Sub/Function) summary | - | - | - |  |  |  |
| Method parameters | - | - | - |  |  |  |
| Method [in,out] parameters | - | - |  | - | - |  |
| Method [optional] parameters | - | - | - | - | - |  |
| Generic Method type-parameters | - | - | - |  |  |  |
| Template type-parameters | - | - | - | - | - |  |
| Method exceptions thrown | - | - | - |  |  |  |
| Method returns | - | - | - |  |  |  |
| Property summary | - | - | - |  |  |  |
| Property value | - | - | - | - | - |  |
| Indexer summary | - | - | - |  |  |  |
| Indexer value | - | - | - | - | - |  |
| Events & Event Handlers | - | - | - |  |  |  |
| Delegates | - | - | - | - | - |  |
| Operator overloads | - | - | - |  |  |  |
| Extension methods | - | - | - | - | - |  |
| Code element declaration support (Doxygen) | - | - |  | - | - |  |
| Class/Interface <seealse cref='base-class'/> entries | - |  | - | - | - |  |
| Overridden method/property <seealso cref='base-method'/> entries | - |  | - | - | - |  |
| Deriving documentation from existing documentation | VS | ND | CM | GD | GDP | APD |
| Copy base class method documentation to derived class override | - |  | - |  |  |  |
| Copy interface method documentation to derived class implementation | - |  | - |  |  |  |
| Copy best-match method documentation to sibling overloaded methods | - | - | - | - | - |  |
| Copy best-match parameter documentation to parameters in other methods | - | - | - | - | - |  |
| Copy best-match property documentation to parameters | - | - | - | - | - |  |
| Copy best-match member variable documentation to parameters | - | - | - | - | - |  |
| Auto-generation engines | VS | ND | CM | GD | GDP | APD |
| Documentation-generation rules | 0 | 0 | 0 | ~203 | ~203 | 2274 |
| Abbreviation expansions | 0 | 0 | 0 | 0 | 0 | 555 |
| 'of the' reordering | - | - | - |  |  |  |
| a/an/the correction | - | - | - | - | - |  |
| Heuristic and Dictionary-based acronym handling | - | - | - |  |  |  |
| Configurable word replacement dictionary | - | - | - | - | - |  |
| Pluralisation | - | - | - |  |  |  |
| Punctuation correction | - | - | - | - | - |  |
| Configurable prefix (e.g. 'm_member', 'lpszString', 'IInterface', 'CClass') cleanup | - | - | - | - | - |  |
| Documentation Block Updating | VS | ND | CM | GD | GDP | APD |
| Easy update (allow cursor to be in lines/comments above the code element to update) | - | - | - | - | - |  |
| Update comments for all code elements in a type/file in one pass | - |  | - | - |  |  |
| Update comments for all code elements in a project in one pass | - |  | - | - | - | - |
| Update declaration entries to match edited method signature (Doxygen) | - | - | - | - | - |  |
| Update 'typeparam' and 'param' entries to match edited method signature | - | - | - |  |  |  |
| Update 'returns' entries to match edited method signature | - | - | - | - | - |  |
| Update 'exception' entries to match exceptions thrown in method | - | - | - | - | - |  |
| Update property description (gets, sets, gets or sets) to match implementation | - | - | - | - | - |  |
| Update indexer description (get, set, get or set) to match implementation | - | - | - | - | - |  |
| Word-wrap user-edited documentation entries | - | - | - | - | - |  |
| Optionally convert <, >, & into legal XML/HTML entities | - | - | - | - | - |  |
| Enforce whitespace rules | - | - | - | - | - |  |
| Enforce user-defined entry ordering | - | - | - | - | - |  |
| Configurable removal of 'illegal' block elements | - | - | - | - | - |  |
| Support for custom entry types | - | - | - | - | - |  |
| Documentation Block Conversions | VS | ND | CM | GD | GDP | APD |
| Convert regular // comments into documentation comments | - | - | - | - | - |  |
| Convert end of line ///< or //!< comments into documentation comments | - | - | - | - | - |  |
| Convert between different block styles and layouts | - | - | - | - | - |  |
| Convert between DocXML, Doxygen, Javadoc and Qt formats | - | - | - | - | - |  |
| User-editable (VB) macros to allow conversion of legacy comment blocks | - | - | - | - | - |  |
| Documentation/Comment Block Live Editing Helpers | VS | ND | CM | GD | GDP | APD |
| Create a new doc-comment as /// (C#) or ''' (VB) is typed |  | - | - | - | - |  |
| Create a new doc-comment as /// (C++/CLI, C++, C, Java, Unrealscript) is typed | - | - | - | - | - |  |
| Leave the cursor in a useful place when a doc comment is created |  | - | - | - | - |  |
| Continue comment block with correct indentation when newlines are typed | - | - | - | - | - |  |
| Join comment lines together (stripping prefixes) when deleting newlines | - | - | - | - | - |  |
| Automatically extend bullet-lists when newlines are typed in comments | - | - | - | - | - |  |
| Automatically reformat pasted text to integrate it into comments | - | - | - | - | - |  |
| Spelling checker | - | - | - | - |  | - |
| Special features | VS | ND | CM | GD | GDP | APD |
| Even works on code that doesn't compile | - | - | - | - | - |  |
| Rich-text documentation viewer | - | - | - | - |  |  |
| CHM documentation export | - | - | - | - |  | - |
|