github rubberduck-vba/Rubberduck 1.3

latest releases: Prerelease-v2.5.92.6381, Prerelease-v2.5.92.6373, Prerelease-v2.5.92.6371...
pre-release10 years ago

This version brings us a rebuilt grammar, lexer & parser with improved parser support for 64-bit VBA, and addresses a number of long-standing grammar issues. It also brings us a much more robust way of discovering identifiers and their respective references.

We have fixed a number of installation issues, but since we've changed the installer from InstallShield to InnoSetup, we recommend a manual uninstall first.

One script to rule them all

This download is meant to work out of the box, for both 32-bit and 64-bit versions of Office.


New Features

The biggest, most visible new features are the new rename refactoring and find all references tool:

This version introduces a context menu in the code pane and Code Explorer:

code pane context menu
code explorer context menu

The options dialog had a facelift:

new Rubberduck options dialog

It's just a sexier UI, really - no new functionality was added here.. except there's no more message box when closing the dialog (changes are still only applied after reloading the add-in, as the General Settings tab indicates).

There's a number of new code inspections and quick-fixes, too:

  • ProcedureNotUsedInspection finds all procedures that are never used, and its quick-fix lets you remove this dead code with a single click.
  • ObsoleteTypeHintInspection will locate all usages of type hints, and its new quick-fix replaces the declaration with the corresponding explicit type, and removes type hints on all references of that identifier, wherever they are.

Bug Fixes

  • #368 Applying the quick-fix for an implicitly typed constant when it's declared along with other constants in the same instruction, no longer wipes out all other declarations in that instruction. Thank @comintern for that one.
  • #283 Applying a quick-fix that would change the signature of a method that's implementing an interface (making the code non-compilable), is no longer allowed. Thank @PetLahev for that one.
  • #378 "Parameter can be passed by value" is now only recommended for primitive types, thanks to @daFreeMan's feedback. This prevents applying a change that could result in a decreased performance.
  • #259 "Function returns no value" is now ignoring interface members (but not their implementations) - note that an interface is only recognized as such if it's implemented somewhere. The wording for that inspection result has also been modified a bit - it now reads "Return value for member '{0}' is never assigned", which is much clearer what the inspection result means.
  • #356 the new parsing strategy fixes a number of false positives as far as identifier usage inspections are concerned; if an identifier usage inspection returns a false positive, the issue likely isn't with the inspection, but with the parsing - which means an identifier usage issue would also affect the find all references and refactor/rename features.

Known Isuses

There are a number of things that slipped, and will be addressed in the next few releases:

  • Parser is still application-independent, so ProcedureNotUsedInspection will return false positives for handler procedures attached to worksheet controls.
  • Project references are stil ignored, so cross-project identifier usages are not accounted for.
  • Refactor/Rename will warn you if you're renaming a method that's implementing an interface, but not if you're renaming an event handler - renaming an event handler will break the code.
  • There is no "Rename" command available in the UserForm designer, so the only "proper" way of renaming controls (and their handlers) is by selecting a reference to that control in the code. This isn't ideal and will be addressed as soon as possible.
  • See our issues list for everything else on the roadmap.

Don't miss a new Rubberduck release

NewReleases is sending notifications on new releases.