Atomineer Pro Documentation Development Summary
This extension began development in 1996 (for Visual Studio C++), and has been evolving and improving
through constant use by software professionals ever since. More recent developments are listed below...
- Atomineer now includes the new Atomineer Spelling
extension (Beta) for Visual Studio 2010, 2012, and 2013. This provides spell checking as you type in
comments. Follow the link above for more information on installation and usage.
- Auto-punctuation now detects and cleans up accidental double periods ('..') at the end of a comment.
- Improvements to conversion of legacy JavaDoc comments.
- Improvements to StyleCop compatibility mode (Atomineer now ensures a blank line prior to
single-line and enum-entry comments; A <content> entry is now used on partial class declarations
that don't match their filename - this ensures that all partial class parts except for the main one
have an XML doc comment to satisfy StyleCop, but do not contribute chaff to the generated
documentation. The main part of the partial class is documented as normal).
- Improved the undo experience after insertion of comments when typing /// or '''.
- Fixed a regression that stopped Interface documentation being correctly duplicated.
- Fixed a glitch in generation of seealso entries for methods with optional parameters.
- Added 'see' as an accepted alias for 'sa' in Doxygen comments.
- Fixed duplicated interface name in seealso when generated from an explicitly implemented interface member.
- Fixed a few rules that used an incorrect matching pattern and thus produced unexpected descriptions.
- Stopped '\commands' being split across two lines in doxygen comments if the \ happened to occur
on the last usable character column in the first line during word wrapping.
- Fixed a poorly reported error when attempting to update a file header comment during debugging.
- Inheritdoc support. Updating doc comments containing 'inheritdoc' entries now disables
duplication of documentation from base classes and auto-generation of new doc entries, so that the
inheritance is correctly preserved.
- Added an option to the 'restrict documentation by access level' feature. Previously, comments
that were not allowed under this restriction were automatically deleted. This option can now be
disabled (via the check-box at the bottom of the Doc General tab of the Options), in which
case Atomineer will simply ignore any existing comment on restricted code elements.
- Fixed an issue in 'Document All in This Solution' where sub-projects were sometimes
skipped during processing. Some improvements to Output window reporting during processing.
- Fixed a broken help link in the preferences dialog.
- Fixed a case where %containingclass% could lose generic suffixes from the classname.
- Fixed a parsing glitch in seealso generation for generics, which could add junk entries
for the 'where' clauses in cases where intellisense data was unavailable.
- The documentation rules no longer generate '[in,out]' or '(optional)' in StyleCop
- Tested and updated for compatibility with Atmel Studio 6.2.
- The Atomineer rules now support user-configurable text for 'true', 'false', 'null' and 'nullptr'. To
configure different text from the default (true, false, null, nullptr), go to the Atomineer
options, Doc Advanced tab, and click the 'User %variables%' button. Edit the variables for
true/false/null/nullptr - e.g. to output 'true' as "<c>true</c>" use
- Exceptions thrown within properties are now documented.
- Resolved a rare installation situation where VS would not pick up the addin after installation.
- Fixed a tiny bug in conversion of // comments into summary documentation, which
could cause parts of URLs to be 'lost' during the conversion.
- Fixed a failure caused by a regression in parsing a C# code element when preceded by an attribute
on a single line
- Fixed incorrect use of tabs rather than spaces (when configured in Visual Studio editor settings)
in C++ accessor generation and end-of-line comments.
- Fixed a case with single-line enum value comments in DocXml format when using a multiline C++ comment
style, where the documentation entry was emitted without comment /* ... */ delimiters.
- Fixed a glitch that could occur in handling of parameters after some forms of regex pre-processing.
- We suffered a catastrophic hardware failue this month and it took a lot of time to resurrect our systems from
our backups and then test our new builds to be sure that everything still works. We were hoping to deliver
a major new feature for this release, but this has unfortunately had to be deferred for a bit...
watch this space!
- Happy New Year! We wish you all the best for a great 2014!
- Added Attribute auto-doc support. For each attribute applied to the code element being documented,
Atomineer now creates an 'attr-???' variable for use in the Rules, containing the parameter-list for
the attribute (e.g. [Conditional("DEBUG")] will generate a variable 'attr-conditional' with the
value 'DEBUG'). To support this in Rules, you can now use tests of the form
<If defined="attr-name"...> to test if a variable is defined. This is
used by new rules to extract data from attributes and include it in the generated documentation text.
For example, if the conditional attribute above is assigned, Atomineer will now prefix the
summary documentation with '(Only available in DEBUG builds)'
- General improvements to conversion of double-slash comments into doc summaries. In addition,
double-slash comments are no longer converted into summaries if they appear to be
- Popup reports will no longer be split across screens on mulit-monitor systems.
- Added new 'Doc All in Chosen Files' command. This offers a front-end user-interface for the other Doc All
commands which allows you to set a number of additional options before the documentation process
begins, including file filtering and greater control over what documentation is generated. It also
provides a new documentation mode, to document all open files.
- Updated preferences now allow you to customise Atomineer Menus. This allows you to remove unwanted
items from the Tools > Atomineer menu and also to show extra commands on the Text Editor's context
menu if you wish. These new options are in the 'General Settings' tab of the preferences.
- Doc All... and Delete Documentation commands now report information on the projects, files and
code elements they have processed. This is shown in the Visual Studio 'Output' window (choose
'Atomineer Pro Documentation' entry in the 'Show output from' combo box to see this output)
- Doc All... commands now report completion using a temporary "tooltip" style window, which disappears
automatically after a few seconds or if it is dismissed with a click.
- Changed the way Atomineer inserts text into the document in some cases to work around a problem
in VS 2013 where certain other addins were occasionally found to interfere with the insertion process.
- Added 'ClassDecl' regular-expression preprocessing, which works exaclty like the existing 'MethodDecl'
preprocessing, but for class/struct/interface members.
- Fixed a glitch in derived documentation duplication that sometimes caused a param entry to be
- Fixed a bug introduced in v8.10 when handling C++ projects. A small additional check added in the
menu-item state code in 8.10 was requesting Intellisense information from Visual Studio, sometimes causing
an Intellisense loading-progress dialog to be shown momentarily, which in turn closed the menu, making
it impossible to open the Atomineer menu. This check has been removed and the menu now operates
correctly once more.
- Added 'Doc all in Project' and 'Doc all in Solution' commands.
These allow you to update documentation for thousands of code elements in a single pass,
which is particularly useful when converting legacy documentation to a new style. Note that
this processing can take a considerable amount of time on a large project/solution, and is
- New algorithm for 'Doc All In Scope/File/Project/Solution' processing: Under some circumstances
the Visual Studio Intellisense information used by these commands could become slightly out of step
with the source code during processing, causing Atomineer to miss occasional code elements out. The
core processing algorithm has been completely rewritten to resolve this issue.
- Significant speed-ups to all 'Doc All in...' commands.
- 'Doc All in Scope/File' commands all now create a single undo step for their processing rather than
an undo step for each code element documented.
- Improved 'Doc All in...' handling of enum entries.
- Improved 'Doc All in...' status line progress handling.
- Added 'Delete Documentation from this File' command. To be used with care, this command deletes
all documentation comments from a source code file. This can be useful for stripping away legacy
documentation or forcing a complete regeneration of documentation (when used with Doc all in File)
- Added support for __declspec() on classes in C++
- The Documentation Viewer window now reopens on startup if it was open when Visual Studio last quit.
- Added a tutorial to the website,
Making the Most of Atomineer.pdf
which offers a number of hints and tips about how to get the best results out of Atomineer.
- Upgraded the 'word wrap comment' feature to detect most forms of 'separator' line at the top and
bottom of comments and exclude them from the word wrapping pass.
- A small improvement to the auto-punctuation feature to suppress spurious punctuation in one rare case
- A small improvement to generation of file header comments in 'Doc All in this File'
- Began adding support for MVC code. If you use MVC and find examples of MVC-specific classes or methods
that Atomineer does not document well, please let us know so we can improve our coverage of
- Many improvements to the rules, especially in cases where generic/template types are used.
- Improved the a/an autocorrection algorithm.
- Added two 'inverted' (white on black) colour schemes for the documentation viewer.
- Added a preference (not exposed in user interface) that allows Atomineer to correct the behaviour
of other addins that incorrectly add their menu items into the Atomineer menu. If you experience
this problem, please contact us for details of how to enable the workaround.
- Atomineer has now been verified compatible with Visual Studio 2013 Preview. (But please let us
know if you find any unexpected behaviour in VS2013). To get Atomineer working in 2013, just
run the 8.05 installer to update as normal - there is no need to uninstall first.
- The installer now displays the version number (and '(Trial)' for trial versions) in its
title bar so you can easily see which version you are about to install.
- The installer will now warn you if you attempt to install over a full version with a trial version.
- Fixed a loophole in the installer that allowed users to inadvertently install two or more copies
of Atomineer (when changing the install location without uninstalling first). This could lead
to Visual Studio running the old version, and the installer no longer appearing to update anything.
- Some refactoring of the installer code.
- Atomineer is now fully code-signed to provide proper company information in UAC prompts during
installation, and confidence that the addin has not been tampered with since leaving Atomineer.
- Updated the 'configuring Atomineer' tutorial to describe the new preferences user interfaces.
- Shuffled a couple of preference items to more logical places in the preferences dialog.
- Fixed a small glitch in backwards compatibility for VB preferences
- Added a 'clip column' preference for the separator lines, allowing them to be clipped at an absolute
column so that indentation of the comment block does not cause the right hand side of the block
to extend any further to the right. By default clipping is disabled, but if enabled it is usually set
to the same column as the word wrap column to give a consistent block layout and ensure that none
of the comment flows out of the desired display/print boundaries - but some users may prefer to
extend the separators a couple of characters beyond the word wrapping column.
- Fixed a rare bug in the word wrapping (on the first line of flowed entries, when the previous entry text
started with a blank line, too much text to be added to the first line, causing it to flow past the wrap
- Fixed a minor parsing glitch when commenting operator<= and operator<<, which caused them to
be incorrectly treated as a generic in one processing pathway.
- Significantly redesigned the Atomineer preferences window layout, exposing a couple of new preferences,
adding a welcome page and embedded help links to the Atomineer website.
- Documentation system, formatting and layout preferences can now be configured separately for each
code language directly within the preferences dialog. (This was possible in the past using per-solution/project
Rules Paths, but is now considerably faster and easier to set up, and applies on a per-source-file basis
so you can work in mixed codebases much more easily).
- Reskinned the preferences and wizard forms to the new Atomineer graphical design.
- Fixed a generic parameter parsing glitch in Visual Basic.
- Improvements to the parsing of properties and exceptions in Visual Basic
- Added optional support for converting Doxygen ///< or /*!< ... */ end-of-line comments on enum entries
and variables into regular XML documentation comments. (If you would like to use this conversion, please
email us for details of how to enable the feature)
- Oops! Removed a debugging behaviour that slipped into the last release, which was causing the
documentation viewer to reopen whenever Add Doc Comment was executed, if you had previously closed the view.
- Added handling for '@' prefixed strings in parameter attributes.
- Added the Documentation Viewer.
This displays documentation comments in a human readable style (similar to the sort of output you can generate
with tools like Sandcastle, Doxygen, and JavaDoc) so that documentation can be easily browsed as cursor moves
through source code.
- Added support for inline ReSharper code-inspection suppression comments. Atomineer will no longer convert
comments of the form '// ReSharper disable RedundantThisQualifier' into DocComments. Instead, the code
element will be considered undocumented and a new comment will be inserted without consuming the ReSharper
- Added support for per-parameter attribute decorations as used by ExcelDNA. Atomineer will now
correctly handle these attributes embedded within the method declaration. In addition, if a
'Description="..."' attribute value is present it is assumed to be a description of
the parameter, and used as the default text for the parameter description that Atomineer generates.
- Fixed the missing menu separators in VS 2010 and 2012.
- Fixed a problem with parsing one very special case: single-line auto-brief Doxygen/Javadoc/Qt comments.
Atomineer would classify this particular case as a 'separator line' rather than a documentation comment
due to the lack of any documentation entry syntax in the line. It now recognises this particular case
and updates it as expected.
- Declare/Implement method: updated to correctly process method declarations occurring on the same line
as the access specifier, and removed a problem with C++/CLI handles (^) in return values.
- Added support for constructor-style member variable initialisation syntax.
- Improved conversion of /** ... */ comments when they are not configured as the primary Atomineer
format. This increases the number of common documentation styles that Atomineer can convert
automatically (without needing any explicit tweaking of conversion settings).
- A few small improvements to the setup Wizard application.
- Fixed a small issue in the uninstaller that caused it to silently fail in rare circumstances.
- Tested Atomineer for compatibility with the Atmel Studio 6.1 Beta, added installation support
for this new version of Atmel Studio, and launched Atomineer on the
- Implemented a small but important missing feature - updating parameter descriptions
to include or exclude auto-generated (Optional) tags as appropriate when default values
are added or removed, or when documentaiton is copied from other same-named parameters.
- Fixed an update problem with [in, out] parameter tagging.
- Removed a minor caching issue that meant documentation updates did not work properly until after
a restart of Visual Studio when changing between JavaDoc and Qt style comments
- Added conversion support for end of line comments (on parameters and member variables).
If a parameter or member variable is followed by an end-of-line comment (a // comment, or
a documentation comment prefixed with ///< or //!<), Atomineer will now merge the text
of the comment into the documentation block. The original comment will be removed (This is
added as a separate undo step so you can undo through the history of changes after converting
a code element's comment). This can be used to convert EOL comments into entries within doc
comment blocks, or (if Atomineer is configured to generate EOL comments for single-line entries)
to convert EOL comments into the configured Atomineer format. This feature also promotes
consistent behaviour when reapplying Atomineer to code elements that are already documented.
- Added conversion support for single line /** ... */ documentation comments that occur prior to
a code element. (Previously Atomineer would only pick up this style of comment if the closing */
occurred on a different line to the opening /**).
- Implemented support for editing custom preference files in solution-relative and project-relative
rules paths. Creating new custom rules files now reports the filename of the generated file to
make troubleshooting easier.
- Adjusted Atomineer to work around a minor compatibility issue introduced in the latest version of
Atmel Studio 6, which was causing blank doc comments to be generated.
- Improved handling in the case where Add Doc Comment was executed on the last line of a scope
preceeding the code element to be commented. This would incorrectly insert the new comment just
inside the previous scope, but now handles this case correctly.
- Member variables and enum members are now commented properly if decorated with attributes.
- Fixed a failure that could occur when trying to document during debugging under conditions that
made the source file read-only (e.g. edit and continue unavailable).
- Fixed a small parsing error in C++ exception specifiers that could cause an invalid exception
entry to be added under rare circumstances.
- Improvements to the 'stylecop compatibility' mode, which now provides MSDN-like descriptions
for more common .Net cases, even though these are not actually checked by StyleCop.
- Improvements to the generated documentation for operators, including handling of explicit
and implicit operators.
The version history for versions prior to this date is archived here