Product Comparisons
Below is a comparison of the Documentation Comment generation tools available for recent
versions of Visual Studio. We keep this table up to date with recent releases (updated
every couple of months), and have tried to be totally objective, so if you feel 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
- GD: GhostDoc (2022.x),
- GDP: GhostDoc Pro (2022.x),
- APD: Atomineer Pro Documentation (10.x),
Please note that some other commercial add-ins provide simple 'boilerplate'-based comment creation, and
others provide advanced documentation authoring and export processes. However, neither of these types
of add-in provide the source-code documentation-generation features that are being compared here, so are
not directly comparable. Historically other comment generation addins were available (.NET Documentor,
CommentMakerPro), but they all appear to have been discontinued.
Supported Languages | VS | GD | GDP | APD |
Visual Basic |  |  |  |  |
C# |  |  |  |  |
C++/CLI | - |  |  |  |
C++ | - |  |  |  |
C | - | - | - |  |
Java | - | - | - |  |
TypeScript | - | - | - |  |
JavaScript | - | - | - |  |
JScript | - | - | - |  |
Python | - | - | - |  |
PHP | - | - | - |  |
UnrealScript | - | - | - |  |
Supported Documentation Formats | VS | GD | GDP | APD |
Documentation XML |  |  |  |  |
Doxygen | - | - | - |  |
JavaDoc | - | - | - |  |
Qt QDoc | - | - | - |  |
JSDoc | - | - | - |  |
JSDuck | - | - | - |  |
Natural Docs | - | - | - |  |
Support for Multiple Documentation Formats | VS | GD | GDP | APD |
Independent documentation formats/styles for each Language | - | - | - |  |
Independent documentation formats/styles for each Solution | - | - | - |  |
Independent documentation formats/styles for each Project | - | - | - |  |
Configurable comment generation for any other filetype | - | - | - |  |
Documentation Block Features | VS | GD | GDP | APD |
Generate new Doc Comment block |  |  |  |  |
Create comments for all code elements in a Scope in one pass | - | - | - |  |
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 Open Files in one pass | - | - | - |  |
Create comments for all code elements in a Project in one pass | - | - |  |  |
Create comments for all code elements in a Solution in one pass | - | - | - |  |
Remove all doc comments from a file 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 restrict documentation to public/protected/internal | - | - | - |  |
Independent configuration settings per-Solution or per-Project | - | - | - |  |
Documentation Entry Features | VS | 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 Class/Method type-parameters | - |  |  |  |
Templates and 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 | 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 | GD | GDP | APD |
Documentation-generation rules | 0 | ~203 | ~203 | 3217 |
Abbreviation expansions | 0 | 0 | 0 | 607 |
'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') cleanup | - | - | - |  |
Configurable suffix (e.g. 'value_u32') cleanup | - | - | - |  |
Documentation Block Updating | VS | 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 comments for all code elements in a Solution 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 | - | - | - |  |
Locate auto-generated comments | - |  |  | - |
Documentation Block Conversions | VS | 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, JSDoc, JSDuck, QDoc and Natural formats | - | - | - |  |
User-editable parsing code to allow conversion of legacy comment blocks | - | - | - |  |
Documentation/Comment Block Live Editing Helpers | VS | GD | GDP | APD |
Create a new doc-comment as /// (C#) or ''' (VB) is typed |  | - | - |  |
Create a new doc-comment as /// or /** (C++/CLI, C++, C, Java, Unrealscript) is typed | - | - | - |  |
Highlight doc comments with a background fill colour | - | - | - |  |
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 | - | - | - |  |
Optionally navigate between doc entries with tab/shift-tab | - | - | - |  |
Spelling checker | - | - |  |  |
Special features | VS | GD | GDP | APD |
Even works on code that doesn't compile | - | - | - |  |
Rich-text documentation viewer | - | - |  |  |
Rich-text documentation editor | - | - |  |  |
CHM documentation export | - | - |  | - |
|