Skip to content

Releases: rubberduck-vba/Rubberduck

2.0 Beta Release Update 2

18 Jun 04:13
Compare
Choose a tag to compare
Pre-release

The second release after the beta, fixing many more bugs, and featuring many parsing/resolving improvements.

  • Hotkeys:
    • Now ensures the VBE has focus before executing the command.
  • Settings:
    • After saving inspection settings, we immediately refresh your inspection list.
  • Source Control:
    • Now allows you to open an external, user-customizable shell program.
  • Parser/resolver:
    • Now resolves asynchronously as well, which should be a huge speed improvement.
    • Allows reserved keywords as UDT members.
    • Detects default parameter values as such.
  • Code Explorer:
    • Correctly updates view on parser error.
  • Test Explorer:
    • Allows running unit tests in multiple projects.

2.0 Beta Release Update 1

10 Jun 23:52
Compare
Choose a tag to compare
Pre-release

The first release after the beta, fixing many bugs reported from the beta and many new Source Control features.

  • Settings:
    • Inspection setting list no longer reorders when you change the inspection severity.
  • Source Control:
    • Now only allows you to merge local branches, as merging remote ones was a problem.
    • Now marks added and removed files as such, and removes removed files from the working directory.
    • Added a context menu to the lists of published and unpublished branches.
    • Notifies when files are modified externally from the VBE and prompts for a reload.
    • Renaming a component no longer results in the deletion of the old file and the creation of a new one in the source control versioning, but rather correctly handles renaming the old component.
  • Parser:
    • Fixed a grammar bug that caused a parser error when declaration section statements were indented.
    • No longer starts the resolver task when a parse task failed.
  • Code Explorer:
    • Now updates as soon as parsed declarations are available, instead of waiting for the resolver and inspections to complete.
    • No longer crashes when a folder node is double-clicked.
  • Test Explorer:
    • Now updates as soon as parsed declarations are available; still not perfect, but already faster than previous release.
  • Teardown:
    • Excel should no longer crash/restart when it is closed.

2.0 Beta Release

08 Jun 02:23
Compare
Choose a tag to compare
2.0 Beta Release Pre-release
Pre-release

Since 2.0 alpha release, Rubberduck has had many features extensively revised, improved, and added.

  • Settings: All settings fully work now, as does the indenter settings preview. The dialog can now be resized, too!
  • Code Explorer: The Code Explorer really works, and is a full replacement for the Project Explorer. It even offers virtual folders to organize your members by—just add a '@Folder("folder1.folder2.folder3") comment to the top of each module, with the . signifying a folder nested in the previous folder. The . delimiter can be set to a slash (/) instead of a period (.) in Rubberduck’s settings.
  • Source Control: The Source Control window received a bug fix or two and a slightly updated UI for messages.
  • Inspections: The Inspections window now wraps the text at the bottom of the window correctly. Many inspections sport new bug fixes as well.
  • Refactorings: Multiple bug fixes make the refactorings more reliable.
    • Extract Method refactoring has been completely rewritten and is now much more robust, thanks to the awesomeness of @grleachman (yes I mean it, Gareth!); user interface and function extraction should be back for next release.
  • Resolver: A completely rewritten resolver will help prevent Rubberduck from not being able to resolve valid code. The parser also has many improvements, the least of which is not speed.
  • Unloading: Unloading the addin correctly removes it from the VBE. There are still some issues when reloading it.
  • Smart Indenter: Now allows you to indent an entire project, or all components in a folder, or to mark a component to not be indented. See the Code Explorer for this feature. Also sports several bug fixes.
  • Translations: Thanks to the dedicated work of INOPIAE and Vogel 612, the German translations are still up-to-date. The French translation is also done. Other translations are coming soon.
  • Unit Testing: The unit testing feature now works off the parser, updating its list of known tests with each reparse. It also allows ignoring tests with the “'@ignoretest” attribute and correctly displays them, unlike the last release. Best of all, Rubberduck now supports unit tests in Outlook, Project and Visio.

Known Issues

This beta release isn't perfect - it wouldn't be a "beta" if it were. All known issues are documented in our issues list. The most important ones are:

  • Unit test discovery working off the parser makes it much, much slower than it should be.
  • Occasional crash upon closing the host application.
  • Some built-in classes' (documents) events aren't recognized as such... yet. This impacts a number of inspections, that fire up results, when they shouldn't.
  • The type of document modules isn't known.... yet. This also impacts a number of inspections, that don't fire up results, when they should.

2.0 Alpha Preview (hotfix 1)

25 Apr 06:49
Compare
Choose a tag to compare
Pre-release

Note: This is a PREVIEW release. If you're looking for a stable version, please see v1.4.3

This release addresses the following issues from release v2.0a.pre:

  • Fixed crash during parse when VBE contains one or more protected projects.
  • Fixed COM event sink disposal
  • Implements ProjectName.ClassName qualified references now parse correctly.
  • COM return types now acquired recursively; references to Err object and its members now resolve properly
  • "as type" binding resolution now coherent with VBA specs

See v2.0a.pre release notes for more information.

Also note, if you're running an anti-virus software, you may need to explicitly authorize this executable to run on your computer.

Known issues include a timing problem (race condition perhaps) with the parsing/resolving, which causes Ready state to occur before all modules have parsed and resolved - this glitch is responsible for a number of false-positive code inspection results, affects refactorings and menu commands' CanExecute result.

vbe2

2.0 Alpha Preview

23 Apr 06:41
Compare
Choose a tag to compare
2.0 Alpha Preview Pre-release
Pre-release

Note: This is a PREVIEW release. If you're looking for a stable version, please see v1.4.3

This version will throw an exception if the VBE contains a protected project. A hotfix will be issued shortly.

Rubberduck 2.0 features a brand new WPF UI for all docked toolwindows, a redesigned settings dialog... TONS of bug fixes (no worries, tons of new bugs, too!). We're issuing this alpha release because even without the Code Explorer, there's enough new and working material here, that we just couldn't wait to finish everything 2.0 to release them.

Thank you for your support, we hope you'll enjoy Rubberduck at least as much as we like working on it!

Installing

If you're running an earlier version of Rubberduck, uninstall it first - this version is a new major version, and introduces a number of breaking changes, both in its own code base, the exposed COM API, and the deserializable contents of configuration files.

The installer must be executed with administrative privileges. See the Installing wiki page for all the details and troubleshooting.


None of the below lists are exhaustive.

New Features

  • Smart Indenter "indent procedure" and "indent module" functionalities are now embedded into Rubberduck. If you're running 64-bit Office and you miss Smart Indenter (written in VB6, only worked in a 32-bit VBA environment), you might like this one.
  • IDE-Integrated Git Source Control is here as well.
  • "Reflection" API to write sentient VBA meta-code, e.g. iterate all methods in a VBA project.
  • Rubberduck CommandBar we're using it pretty much as a status bar really.
    • "Refresh" button parses anything that's new or modified
    • "Current selection" button, when project is parsed and unmodified, returns information (start/end of selection, declaration type, etc.) about the current selection (tooltip displays VB_Description procedure attribute if there's one)
    • "Parser Error" status button brings up "Parser Errors" search result toolwindow, to navigate any parser errors (please let us know of any code that compiles but doesn't parse, we can't seem to come up with any!)
  • Mouse and Keyboard Hooks
    • We can now track the caret position in the IDE, and evaluate menu commands' enabled state based on current selection (e.g. "Encapsulate field" is only enabled when Rubberduck recognizes you're on a public field; "Extract Method" is only enabled when the current selection would be valid for that refactoring, etc.)
    • We can now map and configure hotkeys to commands
  • Unit Tests now work in AutoCAD and Corel DRAW hosts.
  • When possible, inspection quick-fixes can be applied to an entire module/project at once
  • Inspections can be ignored using an @Ignore InspectionName annotation
  • Inspection severity can be set to DoNotShow in one click by selecting "Disable this inspection" in the inspection results toolwindow
  • New Code Inspections
    • EmptyStringLiteralInspection (replaces "" with vbNullString)
    • EncapsulatePublicFieldInspection (makes fields private, exposes them as properties)
    • MoveDeclarationCloserToUsageInpsection (reduces variable scope)
    • ProcedureCanBeWrittenAsFunctionInspection (procedure uses a ByRef parameter as a return value)
    • SelfAssignedDeclarationInspection (warns about "As New" local object variables)
    • UntypedFunctionUsageInspection (warns about use of Variant-returning functions when String returning version exists)
    • UseMeaningfulNameInspection (warns about numbered and disemvoweled identifiers)
    • WriteOnlyPropertyInspection (warns about public properties that don't expose a getter)
  • New Refactorings
    • EncapsulateField
    • ExtractInterface
    • ImplementInterface
    • IntroduceParameter
    • MoveCloserToUsage

Parser Improvements

  • Countless grammar bugs were fixed
  • Now parses asynchronously and resolves much, much faster than 1.4.x
  • Reads and accounts for module attributes (e.g. VB_PredeclaredId, VB_UserMemId, etc.)
  • Built-in declarations are now acquired by actually loading and inspecting the referenced COM type libraries
  • Precompiler directives are interpreted: "dead" code is effectively ignored (using module-scope precompiler constants)

Missing Features & Known Issues

  • Translations are not done yet (except German - thanks to @INOPIAE and @Vogel612!).
  • Code Explorer toolwindow is missing - '@Folder annotations are supported, but have no effect for now; Code Explorer 2.0 will use them to determine a "virtual folder structure" to organize code files in.
  • Indenter Settings preview box isn't updating with selection changes
    • "Undo indent" isn't implemented yet
  • Built-in declarations acquired through COM interop
    • Constants' value isn't extracted (that's a regression)
    • VT_PTR return types aren't walked to determine the "AsTypeName" of object-returning functions, which limits member call resolution of built-in references
  • Project-wide precompiler constants aren't accounted for
  • Browse v2.0 opened issues

ParameterCanBePassedByVal quickfix and RemoveParametersRefactoring hotfix

08 Jul 06:24
Compare
Choose a tag to compare

This version fixes the following (minor) issues:

  • Quickfix for inspection result "Parameter can be passed by value" no longer breaks code when parameter is explicitly passed by reference (previous 1.4 releases would result in a parameter with both ByRef and ByVal modifiers).
  • "Remove parameters" refactoring no longer allows breaking the code by removing the last parameter of a Property Let or Property Set class member.
  • Added a few French translations that were missing, in the ToDo Exporer feature.

Installation

  • If this is a new install, simply download and run the setup executable.
  • If you already have a previous version of Rubberduck, please uninstall it before proceeding; this installer will not automatically remove a previous installed version.
  • If you're running an anti-virus software, you may need to authorize this executable to run on your computer.
  • Administrative privileges are required for proper registration of the COM-visible API that enables unit testing and other API's.

Installation will register the add-in for the administrator account. If you want to use Rubberduck from a non-admin account, you need to run the following PowerShell commands to create the registry keys for your user:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

New-Item -Path 'HKCU:\Software\Microsoft\VBA\VBE\6.0\AddIns\Rubberduck.Extension' -Force

New-ItemProperty -Path 'HKCU:\Software\Microsoft\VBA\VBE\6.0\AddIns\Rubberduck.Extension' -Name Description -PropertyType String -Value 'Rubberduck'

New-ItemProperty -Path 'HKCU:\Software\Microsoft\VBA\VBE\6.0\AddIns\Rubberduck.Extension' -Name FriendlyName -PropertyType String -Value 'Rubberduck'

New-ItemProperty -Path 'HKCU:\Software\Microsoft\VBA\VBE\6.0\AddIns\Rubberduck.Extension' -Name LoadBehavior -PropertyType DWord -Value 3

See version 1.4 release notes for more information.

Cancel Rename and Resolver Hotfix

05 Jul 06:40
Compare
Choose a tag to compare

This release fixes an issue with cancelling the Rename dialog which, depending on how the refactoring was invoked, could lead to crashing Rubberduck and the VBE.

It also fixes an issue with the resolver, involving ambiguous identifiers (i.e. same name) inside a returning member (i.e. Function or Property Get members).

This code now correctly resolves all Foo's:

Function Foo() As Integer
    With New Foo
        With .Foo
            .Foo = 42
        End With
        Foo = .Foo.Foo
    End With
End Function

Installation

  • If this is a new install, simply download and run the setup executable.
  • If you already have a previous version of Rubberduck, please uninstall it before proceeding; this installer will not automatically remove a previous installed version.
  • If you're running an anti-virus software, you may need to authorize this executable to run on your computer.
  • Administrative privileges are required for proper registration of the COM-visible API that enables unit testing and other API's.

See version 1.4 release notes for more information.

Resolver Hotfix

03 Jul 05:55
Compare
Choose a tag to compare

This release fixes a number of resolver issues:

  • #677 Shorthand notation for accessing string-indexed default property (rs!Name) is no longer a problem.
  • #676 Fixed grammar and rebuilt parser to pick up rs!Name as a member call. This fixes a false positive with the "type hint usage" inspection, since the grammar was picking them up as type hints.
  • Fixed an issue involving With blocks, where the qualifier and its type were being referenced at the same Selection coordinates, causing an InvalidOperationException when FindAllReferences was being launched from that selection.

Installation

  • If this is a new install, simply download and run the setup executable.
  • If you already have a previous version of Rubberduck, please uninstall it before proceeding; this installer will not automatically remove a previous installed version.
  • If you're running an anti-virus software, you may need to authorize this executable to run on your computer.
  • Administrative privileges are required for proper registration of the COM-visible API that enables unit testing and other API's.

See version 1.4 release notes for more information.

Rubberduck 1.4

29 Jun 16:54
Compare
Choose a tag to compare

This version introduces a number of new features, and addresses a number of important and/or annoying bugs and/or issues, notably:

  • Fixed memory leak / Excel crashing on exit
  • Parser/resolver now displays a progress status instead of just freezing up the IDE
  • Code Explorer parses asynchronously, without blocking the IDE
  • Code Inspections run asynchronously as well*

*Note: modifying the code while inspections are running can (read: will) throw off the navigation of issues, and can lead to unexpected results when applying quick-fixes.

Installation

  • If this is a new install, simply download and run the setup executable.
  • If you already have a previous version of Rubberduck, please uninstall it before proceeding; this installer will not automatically remove a previous installed version.
  • If you're running an anti-virus software, you may need to authorize this executable to run on your computer.
  • Administrative privileges are required for proper registration of the COM-visible API that enables unit testing and other API's.

New Features

  • Form designer context menu now enables refactor/rename on form controls
  • Project Explorer context menu now includes items from the Code Explorer context menu
  • Navigation
    • Go to implementation: finds all implementations of an implemented interface class, or of an implemented interface method.
    • Find symbol: search for and navigate to any identifier.
  • Refactorings
    • Remove parameters: remove unused parameters from a procedure's signature, and ripple to all call sites.
    • Reorder parameters: change the order of parameters in a procedure's signature, and ripple to all call sites.

Beta Features

  • GitHub-Integrated Source Control: it's here, it works. It's just not as perfect as we'd like it to be, so we're calling it a "beta feature". Works both locally & remotely.

Source Control API

  • Licensing

    In order to allow you to use the Source Control API under the MIT license and stay in compliance with the GPL license of the overall project, we have to provide a separate distribution. If you want to license code you write using SC API under anything other than the GPL, you'll need to download the Rubberduck.SourceControl.zip. If you're okay with with the GPL license, then all you need is the Setup.exe file.

  • Changes

    There were breaking changes to the library between RD v1.22 and v1.4. Please see the Source Control API change log for details.

Code Inspections HotFix

05 May 03:02
Compare
Choose a tag to compare
Pre-release

This release is a hotfix release that addresses the code inspections regression bugs of 1.3, more specifically:

  • #431 ObsoleteCallInspection throwing an ArgumentNullException
  • #432 to #438 QuickFixes throwing a NullReferenceException

Also... #430 variables in Input# and Line Input# statements are now considered as assigned.

Also, added more communities and contributors to the about box: many thanks to @rossknudsen for his hard work on the InnoSetup script that unified the installers!

Still marking as pre-release, for the reasons described in this Rubberduck News entry


This installer also addresses #440, which means the default install folder has changed yet again, hopefully for the last time.