Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
250 commits
Select commit Hold shift + click to select a range
43c0bed
model draft1
retailcoder Dec 20, 2017
d59326f
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
retailcoder Dec 20, 2017
1efb48b
added WinForms dialog and XAML user control files.
retailcoder Dec 20, 2017
8c37b30
something like the beginnings of a UI
retailcoder Dec 21, 2017
44632fb
Added ApplyButtonText resource key
retailcoder Dec 22, 2017
97f08f7
UI completed
retailcoder Dec 22, 2017
a719779
minor UI tweaks
retailcoder Dec 22, 2017
64d3319
cleaned up image resources, added some bindings
retailcoder Dec 22, 2017
bc7acb3
added resource keys
retailcoder Dec 30, 2017
eec6cf1
removed duplicate .resx file
retailcoder Dec 30, 2017
49a3ea5
merge with conflicts
retailcoder Dec 30, 2017
a43db43
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
retailcoder Dec 30, 2017
938a48b
extracted ImageSourceConverter base class, made InspectionSeverityIma…
retailcoder Dec 30, 2017
3147d52
added RegisteredLibraryFinderService
retailcoder Dec 31, 2017
cda0896
implemented library finder
retailcoder Dec 31, 2017
bb4e8dc
Merge pull request #3658 from retailcoder/ProjectRefs
retailcoder Dec 31, 2017
b42d69b
woopsie
retailcoder Dec 31, 2017
9ec87fc
added MoveDown button, binding to VbaProjects.
retailcoder Dec 31, 2017
3a004bf
Merge pull request #3659 from retailcoder/ProjectRefs
retailcoder Dec 31, 2017
dd3ce3c
Adds PredeclaredClassModule resource
ThunderFrame Jul 22, 2018
34ad8a6
Adds PredeclaredClassModule menu item
ThunderFrame Jul 22, 2018
461934a
Adds AddPredeclaredClassModuleCommand
ThunderFrame Jul 22, 2018
35a490b
overloads AddComponent to accept a file path to import
ThunderFrame Jul 22, 2018
c6a33ba
Adds AddPredeclaredClassModuleCommand
ThunderFrame Jul 22, 2018
e09a69f
overloads AddComponent method
ThunderFrame Jul 22, 2018
35afc8d
builds Predeclared Class Module Text
ThunderFrame Jul 22, 2018
852b9ae
Adds AddPredeclaredClassModuleCommand to Code Explorer context menu
ThunderFrame Jul 22, 2018
d2aecfa
Adds comment to explain lack of VB_Name attribute
ThunderFrame Jul 22, 2018
dd41026
Refines Declaration inserttions
ThunderFrame Jul 22, 2018
a04219f
Adds AddPredeclaredClassModule to the ViewModel
ThunderFrame Jul 22, 2018
668f46f
Extract Rewrite out of the IModuleRewriter
MDoerner Oct 24, 2018
41d327e
Introduce the IRewriteSession and IRewritingManager
MDoerner Oct 27, 2018
31c4bb0
Wire up the IRewritingManager
MDoerner Oct 27, 2018
52be1e0
Expose the IRewritingManager on the RubberduckParserState
MDoerner Oct 27, 2018
e28fadd
Optionally pass a IRewriteSession to quickfixes
MDoerner Oct 27, 2018
ee12ff5
Provide IRewriteSessions to quickfixes in QuickFixProvider
MDoerner Oct 27, 2018
0eb245d
Make the quickfixes use the IRewritesession (DOES NOT COMPILE)
MDoerner Oct 30, 2018
76426be
Adjust the quickfix tests to the new setup of rewriting
MDoerner Nov 1, 2018
13f7f41
Remove RewriteAllModules from RubberduckParserState
MDoerner Nov 1, 2018
3deccdb
Move creating ModuleRewriters out of the parser
MDoerner Nov 1, 2018
e28d67c
Rewire and streamline the ModuleRewriter tests
MDoerner Nov 2, 2018
a297eab
Remove _projectsProvider from ReorderParameter refactoring
MDoerner Nov 2, 2018
fa74ea3
Add some comment to quickfixes not using the IRewriteSession handed t…
MDoerner Nov 2, 2018
e927aa8
Make the RenameRefactoring use a QualifiedSelection? to store the ini…
MDoerner Nov 2, 2018
fa2dd3b
Rewire the RenameRefactoring and its tests
MDoerner Nov 2, 2018
3d55d22
Rewire the ReorderParametersRefactoring and its tests
MDoerner Nov 2, 2018
df91612
Rewire the MoveCloserToUsageRefactoring
MDoerner Nov 2, 2018
245e0fc
Rewire the EncapsulateFieldRefactoring
MDoerner Nov 2, 2018
15a9530
Rewire the IntroduceParameterRefactoring
MDoerner Nov 3, 2018
2ad16f6
Rewire the IntroduceFieldRefactoring
MDoerner Nov 3, 2018
d3267ce
Rewire the ImplementInterface- and ExtractInterfaceRefactoring
MDoerner Nov 3, 2018
5f5ffe7
Rewire the RemoveParameterRefactoring
MDoerner Nov 3, 2018
f22b5cc
Remove the rewriters from the ModuleStates and RubberduckParserState
MDoerner Nov 3, 2018
7a81d8f
Remove the RewriteManager from the RubberDuckParserState
MDoerner Nov 3, 2018
2c5bd70
Merge branch 'next' into ReorganizingRewriting2
MDoerner Nov 3, 2018
0b93e50
Add new inspection for Excel UDFs hidden by cells.
comintern Nov 3, 2018
5539581
Additional leaks plugged
bclothier Nov 4, 2018
b03a59d
Add IDisposable Analyzer and assess its usefulness. Fix some legitima…
bclothier Nov 4, 2018
14665a3
Add missing Dispose for conditional returns.
bclothier Nov 4, 2018
9bfbca0
Fix a failing unit test due to not passing in the mocked vbe object.
bclothier Nov 4, 2018
62dfc35
Add inspection defaults to Settings.settings
comintern Nov 4, 2018
84503b7
Address PR comments
bclothier Nov 5, 2018
0ded26b
Add tests for IRewriteSession implementations
MDoerner Nov 5, 2018
1d1b55a
Remove unneeded Dispose
bclothier Nov 6, 2018
06ae0be
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
bclothier Nov 6, 2018
16a5607
Add tests for the RewritingManager
MDoerner Nov 6, 2018
7450c58
Merge branch 'next' into ReorganizingRewriting2
MDoerner Nov 6, 2018
d73230d
Use Sunburst SDK for build.
comintern Nov 7, 2018
f3f990f
Forgot to disbar comintern.
comintern Nov 7, 2018
e16113e
sync with next
comintern Nov 7, 2018
09ac9cb
Remove extra whitespace.
comintern Nov 7, 2018
4494b8d
Change Rewrite to TryRewrite
MDoerner Nov 7, 2018
bd9c9c2
Amend doc-comments in IModuleRewriter
MDoerner Nov 7, 2018
ab357c3
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
IvenBach Nov 8, 2018
57ebb43
Merge branch 'next' into ReorganizingRewriting2
MDoerner Nov 12, 2018
92090a3
merge commit
comintern Nov 13, 2018
bbb9d72
fixes #4486
retailcoder Nov 13, 2018
15671d8
Fix bindings.
comintern Nov 13, 2018
479f27e
Removed commented code.
comintern Nov 13, 2018
0d880c1
fixes #3765
retailcoder Nov 13, 2018
b4f45bf
fixes #4036
retailcoder Nov 13, 2018
4629f48
removed comented-out code
retailcoder Nov 13, 2018
a6355ac
fixed broken tests
retailcoder Nov 13, 2018
71034ff
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
bclothier Nov 13, 2018
bbb3103
fixes #4361 (bindings)
retailcoder Nov 13, 2018
5e9668e
fixed scrolling
retailcoder Nov 13, 2018
869f783
Address PR comments
bclothier Nov 13, 2018
b5bdb03
Merge pull request #4515 from retailcoder/bugfix
retailcoder Nov 13, 2018
0c22259
Merge branch 'next' into ReorganizingRewriting2
MDoerner Nov 13, 2018
3ce3791
fix min and max properties
comintern Nov 13, 2018
184d32a
Add missing resource string.
comintern Nov 13, 2018
f77e868
Merge branch 'next' of https://github.com/comintern/Rubberduck into c…
IvenBach Nov 13, 2018
c0e451e
Fix OnPropertyChanged arguments.
comintern Nov 14, 2018
20f8d3b
Merge branch 'next' of https://github.com/comintern/Rubberduck into next
comintern Nov 14, 2018
f79d6d5
Merge pull request #4501 from comintern/next
retailcoder Nov 14, 2018
6fc894d
closes #4479
retailcoder Nov 14, 2018
685204a
added property accessor type to tab name
retailcoder Nov 14, 2018
76cfd9a
Sort out dlls for different versions.
comintern Nov 14, 2018
7f10696
Add a check for easy hook's nuget package from nguet cache to ensure …
bclothier Nov 14, 2018
adae41a
Fix version formatting, review comment.
comintern Nov 14, 2018
7513796
Check VBEKind instead of namespace.
mansellan Nov 14, 2018
3280404
Add using.
comintern Nov 14, 2018
41ef344
Fixes 4349...take two
BZngr Nov 14, 2018
cd62988
Fix comments per review.
comintern Nov 14, 2018
299e08a
Make some minor stylistic adjustments
MDoerner Nov 14, 2018
5986308
Merge branch 'next' into ReorganizingRewriting2
MDoerner Nov 14, 2018
bf75416
Merge pull request #4465 from MDoerner/ReorganizingRewriting2
Vogel612 Nov 14, 2018
dd6eae5
Change Stable-Release Tags to be more upfront
Vogel612 Nov 14, 2018
7441e18
Name AppVeyor Tags even more aggressively
Vogel612 Nov 15, 2018
274aca9
Merge branch 'rubberduck-vba/next' into 4349_RenameClash_2
BZngr Nov 15, 2018
1c38368
Removed issue # from test member
BZngr Nov 15, 2018
0994d59
Merge pull request #4521 from Vogel612/appveyor-conf
bclothier Nov 16, 2018
a2fdffc
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
bclothier Nov 16, 2018
c5c9083
Merge pull request #4520 from BZngr/4349_RenameClash_2
bclothier Nov 16, 2018
d3a1111
Merge pull request #4517 from comintern/next
bclothier Nov 16, 2018
1991a0c
Merge pull request #4518 from bclothier/FixEasyHookCopy
bclothier Nov 16, 2018
2ed334e
merge next
comintern Nov 17, 2018
3643c7e
Roll back change forcing resx designers back into sync
comintern Nov 17, 2018
83e94b2
Merge pull request #4519 from retailcoder/bugfix
retailcoder Nov 17, 2018
9fa002d
Seal classes with explicit interface implementations. Addresses CA1033
comintern Nov 17, 2018
fb0f9b7
Merge pull request #4488 from comintern/validref
retailcoder Nov 17, 2018
599e852
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
bclothier Nov 17, 2018
c08afba
Update README.md
retailcoder Nov 17, 2018
bbfce56
Add path checks & directory creation for missing folders.
bclothier Nov 17, 2018
3d129b6
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
bclothier Nov 17, 2018
7681361
Update README.md
retailcoder Nov 17, 2018
f9881bc
Update README.md
retailcoder Nov 17, 2018
1dd686f
Rearrange Dispose methods to make MS happy. Addresses CA1063
comintern Nov 17, 2018
9a77667
Change exceptions raised, addresses CA1065.
comintern Nov 17, 2018
71f2464
Don't call GetLastWin32Error in interpolated string. Addresses CA1404
comintern Nov 17, 2018
66c272c
Fix size of atoms, size_t parameters. Addresses CA1901
comintern Nov 17, 2018
7a8e57d
Avoid problems with multibytechar* by explicitly using unicode. Addre…
comintern Nov 17, 2018
4d1f2db
Extend EventArgs, addresses CA1009
comintern Nov 17, 2018
5ac4ecf
Change to internal visibility, addresses CA1401
comintern Nov 17, 2018
5c1cd5a
Suppress CA2202
comintern Nov 17, 2018
a4d65e6
Remove redundant Dispose calls in using block. Addresses CA2202
comintern Nov 17, 2018
5606073
Remove redundant Loggers. Addresses CS0108
comintern Nov 17, 2018
ef02b69
Fix debug logging.
comintern Nov 17, 2018
b5bb7cf
Fix missed cast to ushort on prior commit.
comintern Nov 17, 2018
862e722
Merge pull request #4525 from bclothier/FixDeployment
retailcoder Nov 17, 2018
5c4b51c
Address review comments.
comintern Nov 17, 2018
2ee7b0a
Suppress implement IDisposable warnings (CA1001).
comintern Nov 17, 2018
08783ee
Merge pull request #4491 from bclothier/CleanComSafeLeakRound2
retailcoder Nov 18, 2018
660986e
Update CONTRIBUTING.md
retailcoder Nov 19, 2018
60dafe1
updated French translations
retailcoder Nov 19, 2018
08a3b06
lowered logging level for swallowed exception
retailcoder Nov 20, 2018
5d0e923
Merge branch 'next' of git://github.com/rubberduck-vba/Rubberduck int…
retailcoder Nov 20, 2018
18d1cc7
DP tweaks
retailcoder Nov 20, 2018
c414f37
Suppress warnings - this should not be disposable
comintern Nov 21, 2018
5c24424
mergewith next
comintern Nov 21, 2018
a0a59f5
fix merge conflict
comintern Nov 21, 2018
f7c152c
Create a path provider to provide an uniform method for getting the r…
bclothier Nov 22, 2018
2223f39
Initial implementation of template subsystem
bclothier Nov 22, 2018
242e6ef
Initial draft for integrating the templates into code explorer
bclothier Nov 22, 2018
cc2c6b6
Avoid NRE when running in VB6 when accessing HostApplication
bclothier Nov 22, 2018
a514ec9
Dry the code explorer's menu system
bclothier Nov 22, 2018
0c0f94b
Add back the EXT_Key attribute (which (no longer needed original esca…
bclothier Nov 22, 2018
992a776
Fix up unit tests and some code cleanup
bclothier Nov 22, 2018
3a516b2
Merge branch 'next' of https://github.com/rubberduck-vba/Rubberduck i…
bclothier Nov 22, 2018
d1fef1f
Add Template string as a resource
bclothier Nov 22, 2018
ecaafd7
Revert the botched merge of the xaml control
bclothier Nov 22, 2018
9a0e65f
Clean up one missed spot and weird whitespace artifact
bclothier Nov 22, 2018
6f2a131
Restore a icon reference that shoudln't have been replaced
bclothier Nov 22, 2018
dae8848
added red/repro tests for #4531
retailcoder Nov 23, 2018
a2c78dd
fixes #4531
retailcoder Nov 23, 2018
8ec9af9
fixes shutdown bug introduced in #4475 (early disposal of IVBE instance)
retailcoder Nov 23, 2018
ade4fee
fixes #4318;
retailcoder Nov 23, 2018
b0e6d66
ref. #4037
retailcoder Nov 23, 2018
b9fa741
added ducky icon to splash
retailcoder Nov 23, 2018
15a4137
removed extraneous disposal
retailcoder Nov 23, 2018
6946f0e
removed keys not in neutral (en-US) .resx file
retailcoder Nov 23, 2018
d0a638d
Fix the resources' designer association in VS (partially -- still doe…
bclothier Nov 23, 2018
d445c4b
Restore WinForms designer
bclothier Nov 23, 2018
660797d
Merge pull request #4527 from retailcoder/translations
retailcoder Nov 23, 2018
bf83c99
Clean up missed dropped RESX keys
Vogel612 Nov 23, 2018
822347b
Add missing German translations
Vogel612 Nov 23, 2018
10ac1f0
Merge pull request #4225 from ThunderFrame/next
retailcoder Nov 24, 2018
c83d525
Release correct TypeAttr pointer... Closes #3938
comintern Nov 24, 2018
e988773
Merge pull request #4546 from comintern/cco
comintern Nov 24, 2018
7067cf8
Add a new unit test for bracketed expression
bclothier Nov 24, 2018
5e79359
Add a filter to exclude groups that don't have a project node at all.
bclothier Nov 24, 2018
2f1dfb4
fixes #4545
retailcoder Nov 24, 2018
08fc6fe
bail out given class member call
retailcoder Nov 24, 2018
74e3b9e
Address i18n review
Vogel612 Nov 24, 2018
5c40f06
extracted parameter finder logic to DeclarationFinder
retailcoder Nov 25, 2018
23625ac
extend ByRefAssignment check to VariableNotAssigned inspection
retailcoder Nov 25, 2018
a64b339
added red test for #4543
retailcoder Nov 25, 2018
9c5117e
fixes #4543
retailcoder Nov 25, 2018
b25458a
fixed possible NRE
retailcoder Nov 25, 2018
48fcd2f
Merge pull request #4542 from Vogel612/i18n-de
retailcoder Nov 25, 2018
7f73cf3
extended ByRefAssignment logic to UnassignedVariableUsage inspection
retailcoder Nov 25, 2018
89cd68d
ignore broken test
retailcoder Nov 25, 2018
fac8d17
attempt at fixing numberpicker bindings
retailcoder Nov 25, 2018
588cb23
Merge pull request #4547 from bclothier/Fix4060
retailcoder Nov 25, 2018
d4b3bbc
inlined numberpicker control to get the bindings to work
retailcoder Nov 25, 2018
86aeffe
readability fix
retailcoder Nov 25, 2018
8a0d7dd
updated arrow glyphs, made buttons a notch larger
retailcoder Nov 25, 2018
0692667
Merge pull request #4529 from retailcoder/bugfix
retailcoder Nov 25, 2018
0b1a810
Bump version to 2.3.0
Vogel612 Nov 25, 2018
d1840ac
Merge pull request #4550 from rubberduck-vba/next
Vogel612 Nov 25, 2018
f442210
merge next
comintern Nov 26, 2018
d0bcf61
Merge pull request #4536 from bclothier/FixWinFormDesigner
retailcoder Nov 26, 2018
b25e5be
Merge pull request #4526 from comintern/next
retailcoder Nov 26, 2018
6c6791f
Fix two premature disposals of SCWs
MDoerner Nov 26, 2018
74ae2dd
Some minor improvements in projects usage
MDoerner Nov 26, 2018
2d0dfc2
Fix another premature disposal
MDoerner Nov 26, 2018
bde616d
Merge pull request #4559 from MDoerner/FixSomeScwDisposal
retailcoder Nov 27, 2018
62c4bd2
Add failing test for unexpected behaviour from issue #4558
MDoerner Nov 27, 2018
2ba2ef8
Adjust tests for new IllegalAnnotations and annotation resolution spe…
MDoerner Nov 27, 2018
8c5f900
Make tests pass for new annotation scoping design
MDoerner Nov 27, 2018
400ff2f
Remove no longer required part of IllegalAnnotationInspection
MDoerner Nov 27, 2018
908e76e
Merge branch 'next' into FixIllegalAnnotationInspection
MDoerner Nov 27, 2018
bf1840e
fixes #4554
retailcoder Nov 28, 2018
92beed1
added unit test for Call statement SCP
retailcoder Nov 28, 2018
8426ac4
fix for duplicate VBERuntime and VbeRuntime
Nov 28, 2018
3a6aee5
Merge pull request #4572 from SonGokussj4/next
bclothier Nov 28, 2018
3058303
Merge branch 'next' into FixIllegalAnnotationInspection
MDoerner Nov 28, 2018
fbbe89e
Replace backticks in ignored test
MDoerner Nov 28, 2018
b524fb7
Ensure Refresh command from main menu is enabled at startup
retailcoder Nov 29, 2018
0bda237
Merge pull request #4568 from MDoerner/FixIllegalAnnotationInspection
retailcoder Nov 29, 2018
b6fdeef
Fix case for image references in Resources
MDoerner Nov 29, 2018
8ee81f5
Fix casing in build action
MDoerner Nov 29, 2018
1e1cc06
Fix library case and minor reference versions in tests
MDoerner Nov 29, 2018
e73ecef
Deactivate SCW release messages
MDoerner Nov 29, 2018
715d8a1
Re-arrange project tree, inital CE support for references
comintern Nov 29, 2018
8bea806
Add failing test for #4577
comintern Nov 30, 2018
3e68474
Verify identifier use in FindParameterFromArgument. Closes #4577
comintern Nov 30, 2018
44f173a
Transfer correct properties to model from VM. Closes #4571
comintern Nov 30, 2018
7ca1197
Wrap Application start logging in try block. Closes #4556
comintern Nov 30, 2018
d5b900d
Merge pull request #4569 from retailcoder/bugfix
retailcoder Nov 30, 2018
73c950d
Prevent early exit from BracketedExpression pseudo-projects. Closes #…
comintern Nov 30, 2018
87f612b
Merge pull request #4580 from MDoerner/CaseCorrections
retailcoder Nov 30, 2018
54cf6ee
Address review comments.
comintern Nov 30, 2018
64ef35f
Strong type OpenDesignerCommand to allow property injection. Closes #…
comintern Dec 1, 2018
d7c8bbf
Make IgnoreOnceQuickfix able to handle modules
MDoerner Dec 1, 2018
10114ad
Reflect resources for localization. Closes #4534
comintern Dec 1, 2018
27f3dab
Add null check in FindEvents(Declaration). Closes #4259
comintern Dec 1, 2018
b8b0b7d
Allow multiple WithEvents declarations in variable list. Closes #4591
comintern Dec 1, 2018
b011dff
Rewrite the IgnoreOnceQuickfix
MDoerner Dec 2, 2018
1fb36ef
Minor stylistic change based on review comment
MDoerner Dec 3, 2018
33eb1f5
Aways deem annotations with GeneralAnnotation flag legal
MDoerner Dec 3, 2018
a6d6d18
Merge pull request #4593 from MDoerner/FixIgnoreOnce
retailcoder Dec 4, 2018
14547be
Merge pull request #4599 from MDoerner/FixGeneralAnnotations
retailcoder Dec 4, 2018
77fa481
Merge pull request #4581 from comintern/next
retailcoder Dec 4, 2018
b40a96e
Add remove references UI implementation.
comintern Dec 4, 2018
d49b82b
merge with next
comintern Dec 4, 2018
dc2da1b
Fix reference merge.
comintern Dec 4, 2018
2c58513
Fix reference icons.
comintern Dec 4, 2018
eeb3083
Remove references node from Code Metric tree.
comintern Dec 4, 2018
04e1e00
Rewire add remove references in context menu.
comintern Dec 4, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 11 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,15 @@ Our Ducky has come quite the long way and is intimidatingly large for a first-ti
To make it easier to find something you can do, all issues with that label are additionally labelled with a difficulty.
That difficulty level is a best-guess by the dev-team how complex or evil an issue will be.

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
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 - 02/ducky issues usually make a good introduction to using Rubberduck's internal API.

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.
Then there's \[difficulty-03-duck\] which requires a good handle on C# and how the components of Rubberduck play toghether.
And finally there's \[difficulty-04-quackhead\] for when you really want to bang your head against the wall.
They require both good knowledge of C# and a deep understanding of how Rubberduck works.
They require both good knowledge of C# and a deep understanding of how not only Rubberduck, but also COM and well, the VBE, works.

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.

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)
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)

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.
Please do so in the ["War room"](https://chat.stackexchange.com/rooms/14929).
Expand All @@ -79,21 +79,21 @@ Other than that, you can also open an issue with the label \[support\], but it m
In that room the core team talks about the duck and whatever else comes up.
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).

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.
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*.

### Translations

Rubberduck is Localized in multiple languages.
Rubberduck is localized in multiple languages.
All these translations have been provided by volunteers.
We welcome both new translations as well as improvements to current translations very much.

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.
The resource files are RESX/XML files easily editable in any text editor, but our recommendation goes to the [ResXManager](https://marketplace.visualstudio.com/items?itemName=TomEnglert.ResXManager) Visual Studio plug-in:

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.
![ResXManager in Visual Studio](https://user-images.githubusercontent.com/5751684/48683625-1a07f000-eb7c-11e8-914a-10ed80e85e29.png)

If you contribute a translation for a brand new previously unsupported language, please 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.

## What comes out of it for me?

Well ... the eternal gratitude of all Rubberduck users for one :wink:
Well... the eternal gratitude of all Rubberduck users for one :wink:
Aside from that, all contributors are explicitly listed by name (or alias) in the "About Rubberduck" window.

We ran a [fundraiser](https://gofundme.com/rubberduckvba) last summer, and had t-sihrts, mugs, pens, and stickers made - the goods are now unfortunately depleted; we'll probably run another campaign next year!
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<img src="https://user-images.githubusercontent.com/5751684/46327997-aeb98d00-c5d2-11e8-9de5-ba6f9cd1eea3.png" />

<img alt="Rubberduck Open-Source VBE Add-In - VBA6 | VBA7 x86/x64 | VB6" src="https://user-images.githubusercontent.com/5751684/48656196-a507af80-e9ef-11e8-9c09-1ce3c619c019.png" />
<!-- campaign is no longer accepting donations
### Donate!

Expand Down
2 changes: 1 addition & 1 deletion Rubberduck.API/Rubberduck.API.csproj
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Sunburst.NET.Sdk.WPF/1.0.47">
<PropertyGroup>
<Product>Rubberduck.API</Product>
<Description>Rubberduck Reflection API</Description>
Expand Down
24 changes: 10 additions & 14 deletions Rubberduck.API/VBA/Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading;
using Rubberduck.Common;
using Rubberduck.Parsing.ComReflection;
using Rubberduck.Parsing.PreProcessing;
using Rubberduck.Parsing.Rewriter;
using Rubberduck.Parsing.Symbols.DeclarationLoaders;
using Rubberduck.Parsing.VBA;
using Rubberduck.Parsing.Symbols;
using Rubberduck.Parsing.UIContext;
using Rubberduck.Parsing.VBA.ComReferenceLoading;
using Rubberduck.Parsing.VBA.DeclarationCaching;
Expand Down Expand Up @@ -69,10 +67,10 @@ public interface IParserEvents
]
public sealed class Parser : IParser, IDisposable
{
private RubberduckParserState _state;
private SynchronousParseCoordinator _parser;
private IVBE _vbe;
private IVBEEvents _vbeEvents;
private readonly RubberduckParserState _state;
private readonly SynchronousParseCoordinator _parser;
private readonly IVBE _vbe;
private readonly IVBEEvents _vbeEvents;
private readonly IUiDispatcher _dispatcher;
private readonly CancellationTokenSource _tokenSource;

Expand All @@ -98,8 +96,6 @@ internal Parser(object vbe) : this()
var projectRepository = new ProjectsRepository(_vbe);
_state = new RubberduckParserState(_vbe, projectRepository, declarationFinderFactory, _vbeEvents);
_state.StateChanged += _state_StateChanged;

var sourceFileHandler = _vbe.TempSourceFileHandler;
var vbeVersion = double.Parse(_vbe.Version, CultureInfo.InvariantCulture);
var predefinedCompilationConstants = new VBAPredefinedCompilationConstants(vbeVersion);
var typeLibProvider = new TypeLibWrapperProvider(projectRepository);
Expand All @@ -112,7 +108,6 @@ internal Parser(object vbe) : this()
var mainTokenStreamParser = new VBATokenStreamParser(mainParseErrorListenerFactory, mainParseErrorListenerFactory);
var tokenStreamProvider = new SimpleVBAModuleTokenStreamProvider();
var stringParser = new TokenStreamParserStringParserAdapterWithPreprocessing(tokenStreamProvider, mainTokenStreamParser, preprocessor);
var attributesSourceCodeHandler = new SourceFileHandlerSourceCodeHandlerAdapter(sourceFileHandler, projectRepository);
var projectManager = new RepositoryProjectManager(projectRepository);
var moduleToModuleReferenceManager = new ModuleToModuleReferenceManager();
var parserStateManager = new ParserStateManager(_state);
Expand All @@ -133,14 +128,12 @@ internal Parser(object vbe) : this()
}
);
var codePaneSourceCodeHandler = new CodePaneSourceCodeHandler(projectRepository);
var moduleRewriterFactory = new ModuleRewriterFactory(
codePaneSourceCodeHandler,
attributesSourceCodeHandler);
var sourceFileHandler = _vbe.TempSourceFileHandler;
var attributesSourceCodeHandler = new SourceFileHandlerSourceCodeHandlerAdapter(sourceFileHandler, projectRepository);
var moduleParser = new ModuleParser(
codePaneSourceCodeHandler,
attributesSourceCodeHandler,
stringParser,
moduleRewriterFactory);
stringParser);
var parseRunner = new ParseRunner(
_state,
parserStateManager,
Expand Down Expand Up @@ -235,6 +228,9 @@ public void Dispose()
}

_disposed = true;
_parser?.Dispose();
_vbe?.Dispose();
_tokenSource.Dispose();
}
}
}
7 changes: 5 additions & 2 deletions Rubberduck.CodeAnalysis/Inspections/Abstract/QuickFixBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
using System.Linq;
using NLog;
using Rubberduck.Parsing.Inspections.Abstract;
using Rubberduck.Parsing.VBA;
using Rubberduck.Parsing.Rewriter;
using Rubberduck.Parsing.VBA.Extensions;
using Rubberduck.Parsing.VBA.Parsing;

namespace Rubberduck.Inspections.Abstract
{
Expand Down Expand Up @@ -39,7 +40,9 @@ public void RemoveInspections(params Type[] inspections)
_supportedInspections = _supportedInspections.Except(inspections).ToHashSet();
}

public abstract void Fix(IInspectionResult result);
public virtual CodeKind TargetCodeKind => CodeKind.CodePaneCode;

public abstract void Fix(IInspectionResult result, IRewriteSession rewriteSession);
public abstract string Description(IInspectionResult result);

public abstract bool CanFixInProcedure { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
using Rubberduck.Inspections.CodePathAnalysis.Extensions;
using System.Linq;
using Rubberduck.Inspections.Results;
using Rubberduck.Parsing;
using Rubberduck.Parsing.Grammar;

namespace Rubberduck.Inspections.Concrete
{
Expand All @@ -21,7 +23,9 @@ public AssignmentNotUsedInspection(RubberduckParserState state, Walker walker)

protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
{
var variables = State.DeclarationFinder.UserDeclarations(DeclarationType.Variable);
var variables = State.DeclarationFinder
.UserDeclarations(DeclarationType.Variable)
.Where(d => !d.IsArray);

var nodes = new List<IdentifierReference>();
foreach (var variable in variables)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Rubberduck.Inspections.Abstract;
using Rubberduck.Inspections.Results;
using Rubberduck.Parsing.Inspections;
using Rubberduck.Parsing.Inspections.Abstract;
using Rubberduck.Parsing.Symbols;
using Rubberduck.Parsing.VBA;
using Rubberduck.Resources.Inspections;

namespace Rubberduck.Inspections.Inspections.Concrete
{
[RequiredLibrary("Excel")]
public class ExcelUdfNameIsValidCellReferenceInspection : InspectionBase
{
public ExcelUdfNameIsValidCellReferenceInspection(RubberduckParserState state) : base(state) { }

private static readonly Regex ValidCellIdRegex =
new Regex(@"^([a-z]|[a-z]{2}|[a-w][a-z]{2}|x([a-e][a-z]|f[a-d]))(?<Row>\d+)$",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);

private static readonly HashSet<Accessibility> VisibleAsUdf = new HashSet<Accessibility> { Accessibility.Public, Accessibility.Implicit };

private const uint MaximumExcelRows = 1048576;

protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
{
var excel = State.DeclarationFinder.Projects.SingleOrDefault(item => !item.IsUserDefined && item.IdentifierName == "Excel");
if (excel == null)
{
return Enumerable.Empty<IInspectionResult>();
}

var candidates = UserDeclarations.OfType<FunctionDeclaration>().Where(decl =>
decl.ParentScopeDeclaration.DeclarationType == DeclarationType.ProceduralModule &&
VisibleAsUdf.Contains(decl.Accessibility));

return (from function in candidates.Where(decl => ValidCellIdRegex.IsMatch(decl.IdentifierName))
let row = Convert.ToUInt32(ValidCellIdRegex.Matches(function.IdentifierName)[0].Groups["Row"].Value)
where row > 0 && row <= MaximumExcelRows && !IsIgnoringInspectionResultFor(function, AnnotationName)
select new DeclarationInspectionResult(this,
string.Format(InspectionResults.ExcelUdfNameIsValidCellReferenceInspection, function.IdentifierName),
function))
.Cast<IInspectionResult>().ToList();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
var interfaceImplementationMembers = State.DeclarationFinder.FindAllInterfaceImplementingMembers();
var functions = State.DeclarationFinder
.UserDeclarations(DeclarationType.Function)
.Where(item => !IsIgnoringInspectionResultFor(item, AnnotationName))
.Where(item => !IsIgnoringInspectionResultFor(item, AnnotationName) &&
item.References.Any(r => !IsReturnStatement(item, r) && !r.IsAssignment))
.ToList();
var interfaceMemberIssues = GetInterfaceMemberIssues(interfaceMembers);
var nonInterfaceFunctions = functions.Except(interfaceMembers.Union(interfaceImplementationMembers));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,12 @@ public IllegalAnnotationInspection(RubberduckParserState state)

protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
{
var illegalAnnotations = new List<IAnnotation>();

var userDeclarations = State.DeclarationFinder.AllUserDeclarations.ToList();
var identifierReferences = State.DeclarationFinder.AllIdentifierReferences().ToList();
var annotations = State.AllAnnotations;

illegalAnnotations.AddRange(UnboundAnnotations(annotations, userDeclarations, identifierReferences));
illegalAnnotations.AddRange(NonIdentifierAnnotationsOnIdentifiers(identifierReferences));
illegalAnnotations.AddRange(NonModuleAnnotationsOnModules(userDeclarations));
illegalAnnotations.AddRange(NonMemberAnnotationsOnMembers(userDeclarations));
illegalAnnotations.AddRange(NonVariableAnnotationsOnVariables(userDeclarations));
illegalAnnotations.AddRange(NonGeneralAnnotationsWhereOnlyGeneralAnnotationsBelong(userDeclarations));
var illegalAnnotations = UnboundAnnotations(annotations, userDeclarations, identifierReferences)
.Where(annotation => !annotation.AnnotationType.HasFlag(AnnotationType.GeneralAnnotation));

return illegalAnnotations.Select(annotation =>
new QualifiedContextInspectionResult(
Expand All @@ -50,64 +44,5 @@ private static ICollection<IAnnotation> UnboundAnnotations(IEnumerable<IAnnotati

return annotations.Where(annotation => !boundAnnotationsSelections.Contains(annotation.QualifiedSelection)).ToList();
}

private static ICollection<IAnnotation> NonIdentifierAnnotationsOnIdentifiers(IEnumerable<IdentifierReference> identifierReferences)
{
return identifierReferences
.SelectMany(reference => reference.Annotations)
.Where(annotation => !annotation.AnnotationType.HasFlag(AnnotationType.IdentifierAnnotation))
.ToList();
}

private static ICollection<IAnnotation> NonModuleAnnotationsOnModules(IEnumerable<Declaration> userDeclarations)
{
return userDeclarations
.Where(declaration => declaration.DeclarationType.HasFlag(DeclarationType.Module))
.SelectMany(moduleDeclaration => moduleDeclaration.Annotations)
.Where(annotation => !annotation.AnnotationType.HasFlag(AnnotationType.ModuleAnnotation))
.ToList();
}

private static ICollection<IAnnotation> NonMemberAnnotationsOnMembers(IEnumerable<Declaration> userDeclarations)
{
return userDeclarations
.Where(declaration => declaration.DeclarationType.HasFlag(DeclarationType.Member))
.SelectMany(member => member.Annotations)
.Where(annotation => !annotation.AnnotationType.HasFlag(AnnotationType.MemberAnnotation))
.ToList();
}

private static ICollection<IAnnotation> NonVariableAnnotationsOnVariables(IEnumerable<Declaration> userDeclarations)
{
return userDeclarations
.Where(declaration => VariableAnnotationDeclarationTypes.Contains(declaration.DeclarationType))
.SelectMany(declaration => declaration.Annotations)
.Where(annotation => !annotation.AnnotationType.HasFlag(AnnotationType.VariableAnnotation))
.ToList();
}

private static readonly HashSet<DeclarationType> VariableAnnotationDeclarationTypes = new HashSet<DeclarationType>()
{
DeclarationType.Variable,
DeclarationType.Control,
DeclarationType.Constant,
DeclarationType.Enumeration,
DeclarationType.EnumerationMember,
DeclarationType.UserDefinedType,
DeclarationType.UserDefinedType,
DeclarationType.UserDefinedTypeMember
};

private static ICollection<IAnnotation> NonGeneralAnnotationsWhereOnlyGeneralAnnotationsBelong(IEnumerable<Declaration> userDeclarations)
{
return userDeclarations
.Where(declaration => !declaration.DeclarationType.HasFlag(DeclarationType.Module)
&& !declaration.DeclarationType.HasFlag(DeclarationType.Member)
&& !VariableAnnotationDeclarationTypes.Contains(declaration.DeclarationType)
&& declaration.DeclarationType != DeclarationType.Project)
.SelectMany(member => member.Annotations)
.Where(annotation => !annotation.AnnotationType.HasFlag(AnnotationType.GeneralAnnotation))
.ToList();
}
}
}
Loading