Unlike quite a number of Rubberduck releases, this time we’re not boasting a thousand commits though: we’re looking at well under 300 changes, but if the last you’ve seen of Rubberduck was 2.3.0 or prior, …trying this release you’ll quickly realize why we originally wanted to release it around Christmas.
So, here’s your belated Christmas gift from the Rubberduck dev team!
VBE Project References: CURED!
You may have seen the Introducing the Reference Explorer announcement post last autumn – well, the new feature is now field-tested, works beautifully, instinctively, and is ready for prime time. It’s a beauty!



You’ll never want to use the vanilla-VBE references dialog again!
If you’ve been following the Rubberduck project for quite some time, you may remember something about using annotations together with inspections and quick-fixes to document the presence of module & member attributes. You may also remember when & why the idea was dropped. Keeping in tradition with including new inspections every release… Surprise, it’s coming back!
German, French, and Czech translations have been updated, a number of bugs were fixed in a few inspections, the Code Explorer has seen a number of subtle enhancements, and WPF binding leaks are all but gone.
Code Explorer Enhancements
Adding the Reference Explorer made a perfect opportunity to revisit the Code Explorer toolwindow – our signature navigation feature. Behold, the new Code Explorer:

The new ‘Sync with code pane’ toolbar button (the left/right arrows icon) selects the treeview node closest to the current code pane selection.
There’s a new ‘Library References’ node that shows your project’s library dependencies …whether they’re in use or not:

Find all references can now be used to locate all uses of a given type library – including the built-in standard libraries! Note that rendering lots of search results in a toolwindow will require confirmation if there are too many results to display.
The project reference nodes get new icons:

Classes with a VB_PredeclaredID
attribute set to True
now have their own icon too (and their names now say (Predeclared)
explicitly), and class modules marked with an @Interface
annotation now appear with an “interface” icon, like IGameStrategy
here:

Annotations & Attributes
They’re back, and this time it does work, and it’s another game changer: Rubberduck users no longer need to export any code file to modify module & member attributes!
Module & Member Annotations
At module level, the @ModuleDescription
annotation can be given a string argument that controls the value of the module’s VB_Description
attribute; the @Exposed
annotation controls the value of the VB_Exposed
attribute; the presence of a @PredeclaredId
annotation signals a VB_PredeclaredId
attribute with a value of True
.
At member level, @Description
annotations can be given a string argument that controls the value of the member’s VB_Description
attribute.
Through inspections, Rubberduck is now able to warn about attributes that don’t have a corresponding annotation, and annotations that don’t have a corresponding attributes. Look for inspection results under the “Rubberduck Opportunities” category.
v2.4.x
The months to come will see further enhancements in several areas; there are several pull requests lined up already – stay tuned, and keep up with the pre-release builds by watching releases on GitHub!
I know it is painfully obvious to those who “know” RD intimately, but, for those of us fairly new to it, the use of Annotations is (for me at least) a mystery. Especially with the new implementation it would be great to see how “the pros” use the capability with an explanation of the thinking behind that use.
Also, is there a table somewhere that shows what the icons in the code explorer represent?
Thank you for a great piece of software!
LikeLiked by 3 people
Thanks for the reminder – I need to push updates to the BattleShip project and make it leverage these new annotations!
LikeLike
When I am not mistaken you didn’t find the time to update the BattleShip project yet, right? That is really a pitty, because it would make things a lot easier for non-professionals (like me) …
LikeLike
That’s about right unfortunately (I do have more local changes pending though)… On the other hand there’s now a wiki page documenting attribute annotations: https://github.com/rubberduck-vba/Rubberduck/wiki/VB_Attribute-Annotations
…and another documenting folder annotations: https://github.com/rubberduck-vba/Rubberduck/wiki/Using-@Folder-Annotations
LikeLike