Skip to content

1.3

Pre-release
Pre-release
Compare
Choose a tag to compare
@rubberduck203 rubberduck203 released this 04 May 04:34

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:

"buzz" referenced on lines 12 and 16; refactor/rename prompts for a new name

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.