You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thank you very much for taking the time to contribute!
4
+
5
+
The following is a set of guidelines and links to helpful resources to get you started.
6
+
7
+
## Code of Conduct
8
+
9
+
Rubberduck as of now has no formalized Code of Conduct.
10
+
Yet the following guidelines apply in no particular order:
11
+
12
+
- Apply common sense?!
13
+
- Show and deserve respect
14
+
- Be nice
15
+
- We don't bite :)
16
+
- Assume people's best intentions unless proven otherwise
17
+
18
+
## How can I contribute?
19
+
20
+
### Bug Reports
21
+
22
+
The development team is always happy to hear about bugs. Reported bugs and other issues are opportunities to make Rubberduck even better.
23
+
24
+
Before you report your bug, please check the [GitHub Issues](https://github.com/rubberduck-vba/Rubberduck/issues).
25
+
The team spends quite some time to label the issues nicely so that you can find already known problems.
26
+
27
+
To enable the fastest response possible, please include the following information in your Bug report wherever applicable:
28
+
29
+
- The Version of Rubberduck you are running.
30
+
- Steps to reproduce the issue (Code?).
31
+
- A **full and complete** logfile, preferrably at TRACE-level
32
+
- Screenshots?
33
+
- ...
34
+
35
+
When posting a CLR/JIT stack trace, please avoid cluttering the issue with the "loaded assemblies" part; that (very) long list of loaded DLL's isn't relevant.
36
+
37
+
### Suggesting Enhancements
38
+
39
+
The team is always happy to hear your ideas. Please do make sure you checked, whether someone else already requested something similar.
40
+
The label [enhancement] will be a good guide.
41
+
42
+
Do note that despite the rather large scope of Rubberduck, some things are just **too large** or **too complex** for Rubberduck to effectively support.
43
+
Please don't be discouraged if your idea gets declined, your feedback is very valuable.
44
+
45
+
As with Bug Reports the more exact you define what's your gripe, the quicker we can get back to you.
46
+
47
+
### The Wiki
48
+
49
+
The Rubberduck Wiki is open for editing to everybody that has a Github account.
50
+
This is very much intentional.
51
+
Everybody is welcome to improve and expand the wiki.
52
+
53
+
### Coding and Related
54
+
55
+
So you want to get your hands dirty and fix that obnoxious bug in the last release?
56
+
Well **great**, we like seeing new faces in the fray :)
57
+
Or you just want to find something that you can contribute to to learn C#? Or ...
58
+
Well whatever your motivation is, we recommend taking a look at issues that are labeled [\[up-for-grabs\]](https://github.com/rubberduck-vba/Rubberduck/issues?q=is%3Aissue+is%3Aopen+label%3Aup-for-grabs).
59
+
60
+
Our Ducky has come quite the long way and is intimidatingly large for a first-time (or even long-time) contributor.
61
+
To make it easier to find something you can do, all issues with that label are additionally labelled with a difficulty.
62
+
That difficulty level is a best-guess by the dev-team how complex or evil an issue will be.
63
+
64
+
If you're new to C#, we recommend you start with \[difficulty-01-duckling\]. The next step \[difficulty-02-ducky\] requires some knowledge about C#, but not so much about how Rubberduck works
65
+
66
+
Then there's \[difficulty-03-duck\] which requires a good handle on C# and at least an idea of how the components of Rubberduck play toghether.
67
+
And finally there's \[difficulty-04-quackhead\] for when you really want to bang your head against the wall.
68
+
They require both good knowledge of C# and a deep understanding of how Rubberduck works.
69
+
70
+
In addition to this, a few people have put together some helpful resources about how Rubberduck works internally and help contributors tell left from right in the ~250k Lines of Code.
71
+
72
+
You can find their work in the [github wiki](https://github.com/rubberduck-vba/Rubberduck/wiki). If something in there doesn't quite seem to match, it's probably because nobody got around to updating it yet. You're very welcome to **improve** the wiki by adding and correcting information. (see right above)
73
+
74
+
In case this doesn't quite help you or the information you need hasn't been added to the wiki, you can **always** ask questions.
75
+
Please do so in the ["War room"](https://chat.stackexchange.com/rooms/14929).
76
+
Note that you will need an account on any of the Stack Exchange sites with at least 20 reputation points to ask questions there.
77
+
Other than that, you can also open an issue with the label \[support\], but it may take longer to get back to that.
78
+
79
+
In that room the core team talks about the duck and whatever else comes up.
80
+
N.B.: The rules of the Stack Exchange Network apply to everything you say in that room. But basically those are the same rules as those in the [CoC](#Code_of_Conduct).
81
+
82
+
Whether you create an issue or a pull request, please avoid using `[` square brackets `]` in the title, and try to be as descriptive (but succinct) as possible. Square brackets in titles confuse our chat-bot, and end up rendering in weird broken ways in SE chat. Avoid riddles, bad puns and other would-be funny (or NSFW) titles that don't really describe the issue or PR.
83
+
84
+
### Translations
85
+
86
+
Rubberduck is Localized in multiple languages.
87
+
All these translations have been provided by volunteers.
88
+
We welcome both new translations as well as improvements to current translations very much.
89
+
90
+
The resource files are RESX/XML files easily editable in any text editor, but comparing resource keys across languages/translations is much easier done with @Vogel612's [Translation Helper](https://github.com/Vogel612/TranslationHelper) tool, which automatically adds missing keys and highlights entries that need a new translation.
91
+
92
+
If you contribute a translation for a brand new previously unsupported language, keep in touch with the dev team so that new resource keys can be translated when a new release is coming up; abandoned languages/translations will end up getting dropped.
93
+
94
+
## What comes out of it for me?
95
+
96
+
Well ... the eternal gratitude of all Rubberduck users for one :wink:
97
+
Aside from that, all contributors are explicitly listed by name (or alias) in the "About Rubberduck" window.
98
+
In addition to that, there is some [Contributor-only Rubberduck swag](https://gofundme.com/rubberduckvba), that can be sent to you, at the discretion of @retailcoder.. while supplies last.
If you like this project and would like to thank its contributors, you are welcome to support our GoFundMe campaign to finance Rubberduck swag and international shipping - contributors will be getting t-shirts, mugs, and other cool things.
It's an add-in for the VBA IDE, the glorious *Visual Basic Editor* (VBE) - which hasn't seen an update in this century, but that's still in use everywhere around the world. Rubberduck wants to give its users access to features you would find in the VBE if it had kept up with the features of Visual Studio and other IDE's in the past, oh, *decade* or so.
22
-
23
-
Rubberduck wants to help its users write better, cleaner, maintainable code. The many **code inspections** and **refactoring tools** help harmlessly making changes to the code, and **unit testing** helps writing a *safety net* that makes it easy to know exactly what broke when you made that *small little harmless modification*.
24
-
25
-
Rubberduck wants to bring VBA into the 21st century, and wants to see more open-source VBA repositories on [GitHub](https://github.com/) - VBA code and **source control** don't traditionally exactly work hand in hand; unless you've automated it, exporting each module one by one to your local repository, fetching the remote changes, re-importing every module one by one back into the project, ...is *a little bit* tedious. Rubberduck integrates Git into the IDE, and handles all the file handling behind the scenes - a bit like Visual Studio's *Team Explorer*.
If you're learning VBA, Rubberduck can help you avoid a few common beginner mistakes, and can probably show you a trick or two - even if you're only ever writing *macros*. If you're a more advanced programmer, you will appreciate the richness of [Rubberduck's feature set](https://github.com/retailcoder/Rubberduck/wiki/Features). See the [Installing](https://github.com/rubberduck-vba/Rubberduck/wiki/Installing) wiki page.
30
-
31
-
If you're a C# developer looking for a fun project to contribute to, see the [Contributing](https://github.com/rubberduck-vba/Rubberduck/wiki/Contributing) wiki page.
32
-
33
-
---
34
-
35
-
##License
34
+
## License
36
35
37
36
Rubberduck is a COM add-in for the VBA IDE (VBE).
38
37
39
-
Copyright (C) 2014-2016 Mathieu Guindon & Christopher McClellan
38
+
Copyright (C) 2014-2017 Mathieu Guindon & Christopher McClellan
40
39
41
40
This program is free software: you can redistribute it and/or modify
42
41
it under the terms of the GNU General Public License as published by
@@ -53,148 +52,10 @@ along with this program. If not, see http://www.gnu.org/licenses/.
53
52
54
53
---
55
54
56
-
#Attributions
57
-
58
-
##Software & Libraries
59
-
60
-
###[ANTLR](http://www.antlr.org/)
61
-
62
-
As of v1.2, Rubberduck is empowered by the awesomeness of ANTLR.
63
-
64
-
> **What is ANTLR?**
65
-
66
-
> *ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It's widely used to build languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees.*
67
-
68
-
We're not doing half of what we could be doing with this amazing tool. Try it, see for yourself!
LibGit2Sharp is the library that has allowed us to integrate Git right into the VBA IDE (and as a nice bonus, expose a nice API that handles the nitty gritty of importing source files to and from the IDE to a repo for you).
75
-
76
-
> LibGit2Sharp brings all the might and speed of libgit2, a native Git implementation, to the managed world of .Net and Mono.
77
-
78
-
**Okay, so what is [libgit2](https://libgit2.github.com/)?**
79
-
80
-
> libgit2 is a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library with a solid API, allowing you to write native speed custom Git applications in any language which supports C bindings.
81
-
82
-
Which basically means it's a reimplementation of Git in C. It also [happens to be the technology Microsoft uses for their own Git integration with Visual Studio](http://www.hanselman.com/blog/GitSupportForVisualStudioGitTFSAndVSPutIntoContext.aspx).
83
-
84
-
###[AvalonEdit](http://avalonedit.net)
85
-
86
-
Source code looks a lot better with syntax highlighting, and AvalonEdit excels at it.
87
-
88
-
> AvalonEdit is a WPF-based text editor component. It was written by [Daniel Grunwald](https://github.com/dgrunwald) for the [SharpDevelop](http://www.icsharpcode.net/OpenSource/SD/) IDE. Starting with version 5.0, AvalonEdit is released under the [MIT license](http://opensource.org/licenses/MIT).
89
-
90
-
We're currently only using a tiny bit of this code editor's functionality (more to come!).
91
-
92
-
###[WPF Localization Using RESX Files](http://www.codeproject.com/Articles/35159/WPF-Localization-Using-RESX-Files)
93
-
94
-
This library makes localizing WPF applications at runtime using resx files a breeze. Thank you [Grant Frisken](http://www.codeproject.com/script/Membership/View.aspx?mid=1079060)!
95
-
96
-
> Licensed under [The Code Project Open License](http://www.codeproject.com/info/cpol10.aspx) with the [author's permission](http://www.codeproject.com/Messages/5272045/Re-License.aspx) to re-release under the GPLv3.
97
-
98
-
##Icons
99
-
100
-
We didn't come up with these icons ourselves! Here's who did what:
101
-
102
-
###[Fugue Icons](http://p.yusukekamiyamane.com/)
103
-
104
-
This beautiful suite of professional-grade icons packs over 3,570 icons (16x16). You name it, there's an icon for that.
105
-
106
-
> (C) 2012 Yusuke Kamiyamane. All rights reserved.
107
-
These icons are licensed under a [Creative Commons Attribution 3.0 License](http://creativecommons.org/licenses/by/3.0/).
108
-
If you can't or don't want to provide attribution, please [purchase a royalty-free license](http://p.yusukekamiyamane.com/).
Icons in the `./Resources/Custom/` directory were created by (or modified using elements from) the SharpDevelop icon set licensed under the [MIT license](https://opensource.org/licenses/MIT).
Since the project's early days, JetBrains' Open-Source team has been supporting Rubberduck - and we deeply thank them for that. ReSharper has been not only a tool we couldn't do without; it's been an inspiration, the ultimate level of polished perfection to strive for in our own IDE add-in project. So just like you're missing out if you write VBA and you're not using Rubberduck, you're missing out if you write C# and aren't using ReSharper.
121
60
122
61
<sub>Note: Rubberduck is not a JetBrains product. JetBrains does not contribute and is not affiliated to the Rubberduck project in any way.</sub>
123
-
124
-
---
125
-
126
-
# Overview
127
-
128
-
The first thing you will notice of Rubberduck is its commandbar and menus; Rubberduck becomes part of the VBE, but at startup you'll notice almost everything is disabled, and the Rubberduck commandbar says "Pending":
129
-
130
-

131
-
132
-
This button is how Rubberduck keeps in sync with what's in the IDE: when it's Rubberduck itself making changes to the code, it will refresh automatically, but if you make changes to the code and then want to use Rubberduck features, you'll need Rubberduck to *parse* the code first.
133
-
134
-
The status label will display various steps:
135
-
136
-
-**Loading declarations**: Rubberduck noticed new project references and is retrieving information from the COM type libraries.
137
-
-**Parsing**: Rubberduck is creating a parse tree for each new module, and/or updating the parse trees for the modified ones.
138
-
-**Resolving declarations**: The parse trees are being traversed to identify all declarations (variables, procedures, parameters, locals, ...line labels, *everything*).
139
-
-**Resolving references**: The parse trees are being traversed again, this time to locate all identifier references and resolve them all to a specific declaration.
140
-
-**Inspecting**: At this point most features are enabled already; Rubberduck is running its inspections and displaying the results in the *inspection results* toolwindow.
141
-
142
-
That's if everything goes well. Rubberduck assumes the code it's parsing is valid, compilable code that VBA itself can understand.
143
-
144
-
It's possible you encounter (or write!) code that VBA has no problem with, but that Rubberduck's parser can't handle. When that's the case the Rubberduck commandbar will feature an "error" button:
145
-
146
-

147
-
148
-
Clicking the button brings up a tab in the *Search Results* toolwindow, from which you can double-click to navigate to the exact problematic position in the code:
149
-
150
-

151
-
152
-
The *Code Explorer* will also be displaying the corresponding module node with a red cross icon:
You'll find the *Code Explorer* under the *Navigate* menu. By default the Ctrl+R hotkey to display it instead of the VBE's own *Project Explorer*. The treeview lists not only modules, but also every single one of their members, with their signatures if you want. And you can make it arrange your modules into folders, simply by adding a `@Folder("Parent.Child")` annotation/comment to your modules:
157
-
158
-

159
-
160
-
The *inspection results* toolwindow can be displayed by pressing Ctrl+Shift+i (default hotkey), and allows you to double-click to navigate all potential issues that Rubberduck found in your code.
Rubberduck also features a port of the popular "Smart Indenter" add-in (now supports 64-bit hosts, and with a few bugfixes on top of that!), so you can turn this:
165
-
166
-
````vb
167
-
SubDoSomething()
168
-
WithActiveCell
169
-
With.Offset(1,2)
170
-
If.value>100Then
171
-
MsgBox"something"
172
-
Else
173
-
MsgBox"something else"
174
-
EndIf
175
-
EndWith
176
-
EndWith
177
-
EndSub
178
-
````
179
-
180
-
Into this:
181
-
182
-
````vb
183
-
SubDoSomething()
184
-
WithActiveCell
185
-
With.Offset(1,2)
186
-
If.value>100Then
187
-
MsgBox"something"
188
-
Else
189
-
MsgBox"something else"
190
-
EndIf
191
-
EndWith
192
-
EndWith
193
-
EndSub
194
-
````
195
-
196
-
...with a single click.
197
-
198
-
---
199
-
200
-
There's *quite a lot* to Rubberduck, the above is barely even a "quick tour"; the project's [website](http://www.rubberduckvba.com/) lists all the features, and the [wiki](https://github.com/rubberduck-vba/Rubberduck/wiki) will eventually document everything there is to document. Feel free to poke around and break things and [request features / create new issues](https://github.com/rubberduck-vba/Rubberduck/issues/new) too!
0 commit comments