Zurück zum Ranking

rubberduck-vba/Rubberduck

C#rubberduckvba.com

Every programmer needs a rubberduck. COM add-in for the VBA & VB6 IDE (VBE).

vbac-sharpidemetaprogrammingstatic-code-analysisrefactoringsunit-testingvba-ideindentationparsingdot-netcom
Sterne-Wachstum
Sterne
2.1k
Forks
329
Wochenwachstum
Issues
721
1k2k
Nov. 2014Sept. 2018Aug. 2022Juli 2026
README

Support us on ko-fi.com

Releases


License (GPLv3)

Copyright © 2014-2023 Rubberduck project contributors.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


What is Rubberduck?

The Visual Basic Editor (VBE) has stood still for over 20 years, and there is no chance a first-party update to the legacy IDE ever brings it up to speed with modern-day tooling. Rubberduck aims to bring the VBE into this century by doing exactly that.

Read more about contributing here:

contribute!

The add-in has many features - below is a quick overview. See https://rubberduckvba.com/features for more details.

Enhanced Navigation

The Rubberduck command bar displays docstring for the current member.

command bar

The Code Explorer drills down to member level, has a search bar, and lets you visualize your project as a virtual folder hierarchy organized just the way you need it.

All references to any identifier, whether defined in your project or any of its library references, are one click away. If it has a name, it can be navigated to.

Static Code Analysis, Refactorings

Rubberduck analyses your code in various configurable ways and can help avoid beginner mistakes, keep a consistent programming style, and find all sorts of potential bugs and problems. Many code inspections were implemented due to frequently-asked VBA questions on Stack Overflow, and on many occasions, an automatic quick-fix is available.

Rename variables to meaningful identifiers without worrying about breaking something. Promote local variables to parameters, extract interfaces and methods from a selection, encapsulate fields into properties, reorder and/or delete parameters, and automatically update all callers.

Unit Testing

Write code that provably works, by invoking it from small test procedures that setup the conditions for a test case and assert that the expected outcome happened. Rubberduck provides a rich MSTest-inspired API, and soon an experimental mocking framework (a COM-visible wrapper around Moq) that can automatically implement VBA interfaces and configure mock objects.

test explorer

Smart Indenter

A port of the popular 32-bit add-in by Office Automation Ltd., whose legacy VB6 source code was generously made freely available for Rubberduck under GPLv3 by the legendary Stephen Bullen and Rob Bovey themselves! Rubberduck will prompt to import your Smart Indenter settings on first load if detected.

Annotations

Special comments that become a game changer with Rubberduck processing them: organize modules in your project using @Folder annotations, synchronize VB_Description and VB_PredeclaredId hidden attributes without manually exporting, editing, and re-importing modules with @Description and @PredeclaredId annotations.

More?

Of course there's more! There's tooling to help synchronizing the project with files in a folder (useful for source/version control!), some auto-completion features like self-closing parentheses and quotes; there's a regular expression assistant, a replacement for the VBE's add/remove references dialog, and so many other things to discover, and yet even more to implement.


Tips

Rubberduck isn't a lightweight add-in and consumes a large amount of memory. So much, that working with a very large project could be problematic with a 32-bit host, and sometimes even with a 64-bit host. Here are a few tips to get the best out of your ducky.

  • Start small: explore the features with a small test project first.
  • Refresh often: refresh Rubberduck's parser every time you pause to read after modifying a module. The fewer files modified since the last parse, the faster the next parse.
  • Review inspection settings: there are many inspections, and some of them may produce a lot of results if they're directly targeting something that's part of your coding style. Spawning tens of thousands of inspection results can significantly degrade performance.
  • Avoid late binding: Rubberduck cannot resolve identifier references and thus cannot understand the code as well if even the VBA compiler is deferring all validations to run-time. Declare and return explicit data types, and cast from Object and Variant to a more specific type whenever possible.

Join us on our Discord server for support, questions, contributions, or just to come and say hi!

For more information please see Getting Started in the project's wiki, and follow the project's blog for project updates and advanced VBA OOP reading material.


Roadmap

After over two years without an "official" new release, Rubberduck version jumped from 2.5.2 to 2.5.9, adding minor but interesting features to an already impressive array.

The road ahead

Rubberduck 2.x is now planned to end at 2.5.9.x, perhaps with a number of small revisions and bug fixes, but nothing major should be expected, as the developers' attention is shifting to the 3.0 project:

  • Parsing and understanding VBA code is moving to a language (LSP) server
  • We're making a new editor inside (for now) the Visual Basic Editor that will be the LSP client
  • Baseline server-side feature set for 3.0 is everything 2.5.9 does
  • Baseline client-side feature set for 3.0 is the 2.5.x UI (perhaps tweaked a bit/lot) hosted in the Rubberduck Editor

Fully controlling the editor opens Rubberduck to everything we ever dreamed of:

  • In-editor syntax and static code analysis reporting and quick-fixing
  • Full editor theming, custom syntax highlighting

See the Rubberduck3 repository for more information.

Ähnliche Repositories
qax-os/excelize

Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets

GoGo ModulesBSD 3-Clause "New" or "Revised" Licensexlsxexcel
xuri.me/excelize
20.8k1.9k
decalage2/oletools

oletools - python tools to analyze MS OLE2 files (Structured Storage, Compound File Binary Format) and MS Office documents, for malware analysis, forensics and debugging.

PythonPyPIOtherpythonpython-library
decalage.info/python/oletools
3.4k605
tafia/calamine

A pure Rust Excel/OpenDocument SpreadSheets file reader: rust on metal sheets

Rustcrates.ioMIT Licenserustexcel
2.3k236
sevagas/macro_pack

macro_pack is a tool by @EmericNasi used to automatize obfuscation and generation of Office documents, VB scripts, shortcuts, and other formats for pentest, demo, and social engineering assessments. The goal of macro_pack is to simplify exploitation, antimalware bypass, and automatize the process from malicious macro and script generation to final document generation. It also provides a lot of helpful features useful for redteam or security research.

PythonPyPIApache License 2.0pentestsocial-engineering
blog.sevagas.com
2.3k414
outflanknl/EvilClippy

A cross-platform assistant for creating malicious MS Office documents. Can hide VBA macros, stomp VBA code (via P-Code) and confuse macro analysis tools. Runs on Linux, OSX and Windows.

C#GNU General Public License v3.0ms-officemalware
2.2k395
LastAncientOne/Stock_Analysis_For_Quant

Various Types of Stock Analysis in Excel, Matlab, Power BI, Python, R, and Tableau

Jupyter NotebookMIT Licensestock-marketstock-analysis
2k516
Jonathan-LeRoux/IguanaTex

A PowerPoint add-in to insert LaTeX equations into PowerPoint presentations on Windows and Mac

VBAOtherinsert-latex-equationspowerpoint-presentations
jonathanleroux.org/software/iguanatex/
1.4k77
decalage2/ViperMonkey

A VBA parser and emulation engine to analyze malicious macros.

PythonPyPIvbaemulation
1.1k190
areed1192/sigma_coding_youtube

This is a collection of all the code that can be found on my YouTube channel Sigma Coding.

Jupyter NotebookMIT Licensevba-excelpowerpoint-vba
1.1k777