Skip to content

Releases: rubberduck-vba/Rubberduck

2.0 Release Candidate 4

23 Jul 00:39
Compare
Choose a tag to compare
Pre-release

The seventh beta release, featuring many general bug fixes.

  • Unit Testing:
    • Disable the Run commands for certain parser states, including the Parsing and Error states.
  • Refactorings:
    • Fix bugs in the Extract Interface refactoring.
    • Sets the selection after the refactoring completes to avoid losing focus on the code pane.
    • Encapsulate Field now correctly uses the Set keyword on assignments.
    • Encapsulate Field now uses the indenter settings when adding properties.
    • Encapsulate Field now has its own hotkey—CTRL + Shift + E
  • ToDo Explorer:
    • Make the ToDo Explorer update after the parse finishes, rather than waiting for the Ready state.
  • Code Explorer:
    • Fix a bug when sorting by type.
    • Double-clicking in the whitespace no longer opens the code pane for the focused node.
  • Settings:
    • Allow the user to set identifiers to ignore in the Use Meaningful Name inspection. Note that there is a bug when editing an identifier and adding a new value to the list causing the old value to not be saved.
  • Inspections:
    • Use Meaningful Name inspection now ignores user-specified identifiers.
    • Variable Type Not Declared inspection no longer places the explicit As Variant in multiple places.
    • Obsolete Comment Usage inspection quick fixes no longer eat a leading space before the comment.
    • Now disables the quick fix commands when the parser state is not Ready.
    • The quick fix for encapsulating public fields is now working.
  • Source Control:
    • Now correctly clears the view when the tracked project is closed.
    • No longer crashes when opening a repository tracking document-type files that do not exist in the current project.
    • Saves all changes when the project is closed (when the host app is not closed before the project can be closed, anyway).
  • Localization:
    • As always, our German contributors have been keeping the German translation up-to-date.

2.0 Release Candidate 3

18 Jul 17:10
Compare
Choose a tag to compare
Pre-release

The sixth beta release, fixing many more bugs with a special emphasis on the inspections.

  • Parsing/Resolving:
    • Prevent parser/resolver from throwing when creating annotations without arguments for '@Ignore and '@Folder annotations.
  • Inspections:
    • Implement new inspection to check for malformed annotations.
    • Inspections working off the parse tree, such as Obsolete Call Statement, work again.
    • '@Ignore annotation works for parameters and inspections working off the parse tree.
    • Parameter Can Be ByVal inspection now supports inspecting interface implementations and event handlers.
    • Unassigned Variable Usage* inspection now ignores variables passed to the Len and LenB functions, which do not use the variable values.
    • Various bug fixes.
  • Source Control:
    • Now has a hotkey.
  • Find Symbol:
    • Improved performance.
  • Regex Assistant:
    • _NEW!_ Helps you understand your Regex calls.
  • Localization:
    • Inspection quick fix menu has correct localization.
  • Code Explorer:
    • Fixed bug in the Import command.
  • Hotkeys:
    • Individual commands do not run unless they are enabled.
  • Refactorings:
    • Fixed many bugs in Move Closer to Usage.

2.0 Release Candidate 2

09 Jul 00:32
Compare
Choose a tag to compare
Pre-release

The fifth beta release, fixing many more bugs and improving hotkey and parser/resolver performance.

  • Source Control:
    • Remove reference to the Aero2 library known to cause crashes at least occasionally in Windows 7 and lower.
    • Reload changed modules one at a time to prevent losing a bunch of modules if the host crashes in the process.
    • Fix bug causing crash when initializing repository with existing user form.
  • Parser/Resolver:
    • Cancelling a build correctly cancels it now, rather than letting two parse/resolve sequences execute at the same time.
    • Improves performance of resolving declarations by optimizing a very expensive calculation.
    • Querying the status of a removed component no longer throws an exception.
    • Rubberduck correctly parses multiple projects again.
  • Localization:
    • Correctly localizes dockable window captions.
  • Code Explorer:
    • Multiline signatures are now displayed on a single line.
    • Wraps all items in the button panel.
    • Shows type of selected node in the bottom panel.
  • Inspections:
    • Improve performance of the Implicit ByRef Parameter inspection.
    • Fix bug in quick fix causing uncompilable code when adding an explicit type to a parameter with a default value.
  • Unit Testing:
    • Fix multiple bugs that can either disable the add method commands, or throw an exception.
  • Status Bar:
    • Correctly displays user selection again, rather than the declaration selection.
  • Hotkeys:
    • Handles hotkeys when Rubberduck’s dockable windows are focused.

2.0 Release Candidate 1

01 Jul 23:13
Compare
Choose a tag to compare
Pre-release

The fourth release after the beta, fixing many more bugs, fixing some localization bugs, and adding logging to help detect others. Of notable mention is a fix for a bug causing unpredictable COM exceptions in many places throughout the codebase, causing resolver errors, disabled commands, and crashes.

  • Grammar/parser/resolver:
    • Fix bugs in resolver causing errors and incorrectly-resolved variables.
    • Support line-continuations in date literals with grammar.
  • Hotkeys:
    • Ensure the VBE has focus before handling the hotkeys.

2.0 Beta Release Update 3

24 Jun 22:49
Compare
Choose a tag to compare
Pre-release

The third release after the beta, fixing many more bugs, and featuring many grammar fixes, parsing/resolving improvements, and inspection fixes.

  • Startup:
    • Now ensures the Rubberduck folder exists on startup, preventing crashes in the Source Control when trying to initialize a repository and failures to save changes.
  • Grammar/parser/resolver:
    • Fixed the grammar for the Name statement, preventing parser errors.
    • Fixed the grammar rule for line labels, preventing parser errors when line numbers without colons are used.
    • Grammar now supports Access’s Report’s Line method.
    • Supports the @Interface annotation for interfaces—this will be used to improve inspection suggestions in the future.
    • Rubberduck loads references when it detects a component added or removed, rather than waiting for a manual reparse.
    • Enhanced the performance of loading the referenced projects.
    • Document types, such as Documents (in Word), and Worksheets and Workbooks (in Excel) now know what type they are, preventing resolver errors.
    • Resolves references on all components, rather than just unchanged components.
  • Inspections:
    • Fixed a bug in the Constant Not Used inspection.
    • Obsolete Call does not report calls when the lines involved use instruction separators.
  • Code Explorer:
    • Displays error nodes for components that failed to resolve to declarations correctly.
    • Features Open Project Properties in the node context menu.
  • Rename:
    • Renaming a project no longer crashes Rubberduck.
    • Renaming a Document, Workbook, or other “top-level” component in a project should not result in a Resolver Error.
  • Source Control:
    • Allows cloning a private repository without crashing.

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