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...
- 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 doxumentation 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.
- Improved documentation for enumerated type members. When processing the <Variables> rules, the
%type% variable is now set to 'enum' for members of enumerated types, and 'bitfield' for members of
enums marked with FlagsAttribute. These special types are now used to generate improved documentation
specific to enumerated values (enum) and binary constants (bitfield).
- Added 'camel' and 'pascal' commands for use when expanding variables (e.g. %name:Camel%). This outputs the
name in the form 'camelCasedName' or 'PascalCasedName' respectively. This will of course only be useful for
names in a multi-word format (multi_words or MultiWords)
- Fixed a small glitch in the C++ parser that could stop Atomineer from generating a comment when the
user typed ///. (This problem did not occur with ctrl+shift+D)
- Existing documentation is no longer duplicated for event handler 'EventArgs' parameters
- Optimised and improved the code that searches for base class documentation that can be re-used.
This can significantly improve performance in cases where complex class hierarchies are encountered
(in both user code, and underlying/system libraries).
- Tested Atomineer with Visual Studio 2012 Update 1.
- A few small improvements to generic and template parsing.
- Fixed a problem in 'Doc all in File' caused by C++ macros that inject methods into a class.
These 'non existent' methods could be returned by the Visual Studio intellisense system,
causing Atomineer to try to document members that didn't exist in the source code. They
are now ignored.
- For convenience the preferences dialog can now be minimised to the TaskBar.
- Small improvements to the installer/uninstaller.
- A slightly new look for our website.
- Fixed an unexpected bug introduced in 7.61 - this caused problems when attempting to document code
in C++ header files. If you have 7.61 and wish to document C++ headers, please update to the latest
version (for those with a single-download copy of version 7.61, please
contact us and we'll send
you a free upgrade to 7.62)
- Added a mechanism for conditonally marking documentation entries as 'optional'. This allows entries
to be added to a documentation block for some cases (e.g. overrides) but not others. The conditions use
the same expressions as available in <If> commands. See the description of _optional in the
Rules Guide for details.
- Moved our web hosting to new servers to provide improvements to our online service, and freshened
up the website look and feel.
- Atomineer now has a Facebook page and
a Twitter account, so please look us up, Like us,
and Follow us for announcements about new releases etc.
- If 'Add Doc Comment' is executed within the body of a method or property, Atomineer will now
move the cursor out of the top of the method/property and document it. Note that this relies on the
Intellisense information provided by Visual Studio, so it may not work if the code is in a
non-compiling state or a language for which Visual Studio doesn't provide this information.
- Improvements to the Live Typing Aids when typing and pasting into comment blocks. (Atomineer will no longer break
a comment if you type a double-newline in the middle of it. This was intended to be useful behaviour but
has been found to work poorly in practice. Typing /// in illegal places such as within method bodies will
no longer attempt to insert doc comments. Pasting within multiline comments now pastes verbatim)
- Improved 'Implement/Declare C++ method' command - as well as reading the text from single-line (//) comments
from declarations and using them as summary text for the implemented method, it can now read fully blown
doc comments and duplicate them onto the implemented method. It now also handles existing comments in
the target source file.
- Fixed a localisation issue (only affecting Visual Studio 2012 in a few non-English language locales)
where the Atomineer main-menu items were not appearing.
- Improved handling of seealso entries for Generics/Templates when updating existing comments.
- Fixed a small problem that sometimes interfered with correct handling of [in,out] parameter entries.
- Fixed a breakage in the handling of namespaced MyClass::operator= in C++
- Corrected handling of Doxygen AutoBrief comments when using /// comments without top/bottom separators.
- Fixed a bug from 7.59 that caused Atomineer to fail sometimes when documenting member variables
- Improved handling of XML entities within cref attributes
- Improved handling of C# generic typeparams using 'where T : ...' clauses
- By default, Atomineer will now assume that // comments that contain plain text are to be converted
into a fully-blown doc comment (it assumes that the comment body represents the summary/brief description
to be used in the new doc comment). If this conversion is unwanted, it can be disabled in prefs.xml -
contact us for details of how to do this.
- Improved compatibility with different Atmel Studio versions
- The Installer now registers Atomineer in the Programs And Features control panel,
so it can now be uninstalled directly from Programs and Features as well as by running the
original installer and choosing the Uninstall option.
- Anywhere a %variable% can be used in Atomineer and the Atomineer preferences (e.g. Rules Search paths),
it is now possible to use OS environment variables (An Atomineer variable will take precedence over any
environment variable of the same name)
- Xml Documentation: By adding a <prototype _punctuate='false'/> element to your templates you can
now cause the method signature to be added to the comment, just as for Doxygen comments. This element will be
named 'signature' (currently a fixed name, but contact us if you would like this name to be configurable).
- Improved handling of generic classes in the new class parser.
- Fixed a some minor parsing glitches in C++ (relating to array parameters, namespaced parent class
names, and array-member initialisation lists).
- Added support for UnrealScript (.uc) code syntax.
- When updating interface and abstract methods, exception descriptions are no longer removed.
- Added a preference (on the Doc Comment Style tab, Automatic Tidying section) that controls
removal of 'invalid' entries. By default, if Atomineer finds an unknown doc entry during a
comment update (such as a description for a parameter or exception that is no longer present
in the method), it prepends the entry with '###'. This allows you to see what Atomineer intends
to remove, so you can choose to re-use the description text, or you can execute Add Doc Comment
a second time to clean up the comment and remove all the invalid entries. The new preference
allows you to turn off this safety measure, so Atomineer will silently remove all invalid
- (Related to the previous change) The 'Doc All' commands now force immediate deletion of invalid
doc comment entries, rather than leaving them with a prefix of '###'. This avoids having to
update a large batch of comments twice to clear away invalid entries.
- Added support for optional 'inheritdoc' entries.
- A couple of small improvements to C++/CLI code handling.
- Added handling for __declspec() in C/C++.
- Fixed a case in C++ where seealso entries were being duplicated.
- Extensive testing with Visual Studio 2012 RC. Found and fixed an occasional problem where
incorrect documentation was being generated. (This was due to a breaking change in
Visual Studio's internal 'find' operations, which now interpret regular expressions using
.NET regex syntax)
- Fixed a side effect of improved 'optional' template entry handling, which had inadvertently supressed seealso output.
- Fixed a problem with adding seealso entries in C++.
- Improved handling of 'optional' template entries, which had not been extended to all entry types.
- Now supports Atmel Studio 6.0.
- Some small performance optimisations.
- Significant performance improvement when updating existing comments.
- Rewrote the code-element detection parser. (This is used to determine what kind of code element
is being processed before a more-specific parser is used to actually document that element). This
has provided the following improvements:
- More efficient processing of code elements.
- Better handling of complex multi-line declarations
- Less likely to be 'confused' by different coding styles, especially
when handling class/module/struct/union/interface code elements.
- TypeParams for Generic/Template classes are now supported.
- When adding <seealso> entries to a comment or if <see> entries are being added
to description text (%docBasesWithSee% is true), Atomineer will now add seealso/see entries for
all base classes/interfaces rather than only the primary base.
- When restricting generation of documentation to certain access levels, the default behaviour
is now to only apply the restriction to the commands that generate multiple comments
(i.e. Doc All In Scope/File)- if you deliberately try to document a code element with
'Add Doc Comment' it will allow the comment to be added. There is a new preference (on the
General preferences tab) that extends the restriction to the Add Doc Comment command as well.
The reason for this change to the default behaviour is that it can be very confusing
(e.g. if you type /// and that text is simply deleted without any obvious explanation).
- Fixed an issue with updating single-line comments when using certain comment-block styles.
- Improved the support for duplicating documentation for parameters from elsewhere in a class.
Previously this feature copied appropriate documentation from other parameters in the class,
but it now also considers documentation from Properties and Member Variables as well. In the
case of properties, the <value> documentation will be used if available, or the
<summary> if not (any 'gets or sets' text is stripped in this case to make the generated
parameter description coherent).
- Duplication of parameter documentation is now applied when updating a comment as well as when
creating a new one. This allows the documentation to be duplicated onto parameters that are
subsequently added to methods.
- Hotkeys are no longer assigned to Atomineer commands if they have been bound to other commands in
the 'Global' key context. (Hotkeys used to be assigned only in the 'Text Editor' context, but this
meant they could override global hotkeys)
- Added handling for foreign characters (É, Ø, ß etc.) in code-element names.
The version history for versions prior to this date is archived here