« first day (1625 days earlier)      last day (1555 days later) » 

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 14 commits. 2 closed issues. 1 issue comment. 5192 additions. 6010 deletions.
 
Note to self: Practice atomic commits. #QuitCrossingTheStreams
Too easy to be sloppy and merge commits that shouldn't be together.
 
I got used to using git add -p instead
 
I couldn't understand what that does.
 
@IvenBach I'm guessing you don't mean "atomic commits" as in "nuke from orbit commits".
 
No. As in each commit is self containing. Doesn't inadvertently mix in something else.
I still get too many hairs in the batter because I'm not the best at atomic commits.
 
12:10 AM
geez I'm bad at this
I spent like half an hour on trying to figure out a way to put Func into a generic type specification when I didn't need to in the first place
 
I love generics.
They are so ...
generic lol
 
hey, I'm down to 4 failed tests
one broke, the rest broke so hard that they weren't even counted
 
Grrrr... The stupid resx designers aren't updating for a merge commit.
 
'course not
IMO we shouldn't even be versioning them, tho
so there's that
 
12:33 AM
Home Time.
 
30 mins till home time!
 
AV isn't exactly ripping it up on speed today. Almost 15 minutes now...
 
the Core build process isn't really fast, yeah
 
@Vogel612 I always wondered about that one
why aren't we excluding it from git?
 
dunno, actually
 
12:41 AM
@Vogel612 It also doesn't help that it's the bottleneck between the 2 groups of projects
Core can't build without any of 8ish projects, and nothing else can get built until Core is built.
 
I wasn't originally talking about Rubberduck.Core, but... yes
 
oh my bad
 
Oh you're fully correct
 
[rubberduck-vba/Rubberduck] build for commit 2ed334e4 on unknown branch: AppVeyor build succeeded
 
speaking of building...
 
12:42 AM
I may have fixed it
 
but it's a bit rather fugly still
 
it being what?
 
the tests and the renaming thing
 
cool. What's ugly about it?
 
12:44 AM
multistage mock setup
and mock setup while executing prod code
 
IIRC there's a sequential setup for Moq
need to remind myself why twice, though.
 
because show has two overloads and at that place we don't know which of the two is called
so we set up both with the same thing
yea... down to 22 failing
 
at least you can abstract that into a function
 
none inconclusive, though
 
and more importantly, that means that even if the presenter changes, test code shouldn't change.
 
12:48 AM
@this that's in the PerformExpectedVersusActualRenameTests, so I won't just yet
I took the libery to move a ton of test execution stuff out of the testclass, though
 
cool
 
just to keep my sanity when scrolling through either of the four intermingled concerns
 
i'll admit it gave me a headache to look at the test class and figure out what we were really testing
 
ugh. for whatever effing reason VS thinks it must run CodeAnalysis before running tests
and that makes executing a single unit test slow AF
something for another time tho
 
1:00 AM
@Duga hmm I might have messed that up
so to see that i understood - we don't want the designers enumerated in the csproj?
 
No, I'd just mucked around with the project to force them back into sync.
 
because I actually did the same thing when I merged my other PR
thinking we needed to enumerate them
 
Forgot to change it back after I built. I think my merge may have gotten them out of sync.
@this Couldn't hurt, but that proj file had all the localizations that don't actually need to be built.
I think the problem might be when you switch branches it messes up the build because it doesn't pick up the change to the .resx file coming via SC.
Just spit-balling there though. No clue why that breaks it.
 
that sounds consistent with what I saw before
problems usually happens only after switching branches, AFAIHS
 
I should address some of the 591 build warnings.
 
1:09 AM
maybe the answer is here: stackoverflow.com/a/12206011/643342
nah. we need 75 more.
 
I could do 75 more warnings in a heartbeat.
 
then it'll be fully-certified ThunderCodeâ„¢.
 
@this I don' t think that would be a bad idea at all. At very least we'd all be building the same thing as AV locally.
 
yeah, a bit of sledgehammer but that'll ensure that clean actually cleans.
IDK if that'll fix the designers, though - aren't they in the same directory as the source files, though?
 
1:16 AM
A bunch of these are just adding sealed to classes with explicit implementations.
 
[rubberduck-vba/Rubberduck] build for commit 3643c7ec on unknown branch: AppVeyor build succeeded
 
we can suppress most of the MIDL compiler's warning by passin gin a command line, too
I don't care about not using variant - ours are dual interface so it's OK
 
TTGTB.
Toodles!
 
night!
 
'night
@this I thought we wanted to pass variants because of the permissive assert thing.
i.e. bypass the marsaller
 
1:25 AM
nah
permissive assert just need to call oleaut functions
if necessary, we can make permissive assert class marshal their stuff as IntPtr
that should keep marshaller's grubby paws off it.
so I'd just suppress both MIDL2400 and MIDL2401 and worry about other warnings more.
 
Down to 391
 
i need to update the deployment so I'll take care of that
 
@this Right, but if RD is passed a Variant and marshals it to a managed object, how do we reversibly get the native Variant back to pass to oleaut?
Granted, there are a bunch we shouldn't care about.
I think the IDisposable interfaces are next...
 
[rubberduck-vba/Rubberduck] retailcoder pushed commit 6fc894d2 to next: closes #4479
[rubberduck-vba/Rubberduck] retailcoder pushed commit 685204af to next: added property accessor type to tab name
Merge pull request #4519 from retailcoder/bugfix

Include property accessor type in the "search results" tab
 
CA1060 might want to be its own PR too.
 
1:31 AM
 
@Comintern we don't need it. Just take it as IntPtr and forward to the oleaut.
 
I was thinking of marshaling to a Variant struct, but that works too.
 
and if we really do need the object, Marshal.VariantToObject (or however it's spelt) will do it for us
GetObjectForNativeVariant(IntPtr)
KISS
Yeah, actually CA1060 is one of the item on Vogel's tech-debt list.
 
Yeah, that will work.
 
[rubberduck-vba/Rubberduck] comintern pushed commit 0b93e503 to next: Add new inspection for Excel UDFs hidden by cells.
[rubberduck-vba/Rubberduck] comintern pushed commit 62dfc351 to next: Add inspection defaults to Settings.settings
[rubberduck-vba/Rubberduck] comintern pushed commit 2ed334e4 to next: merge next
[rubberduck-vba/Rubberduck] comintern pushed commit 3643c7ec to next: Roll back change forcing resx designers back into sync
Merge pull request #4488 from comintern/validref

Add new inspection for Excel UDFs hidden by cells.
[rubberduck-vba/Rubberduck] build for commit 83e94b22 on next: AppVeyor build succeeded
 
2:03 AM
Hmmm... So ICommandBar implements ISafeComWrapper, which is also implemented via ISafeComWrapper<T> by SafeComWrapper<T>, which CommandBar inherits from. WTH does that mean that CommandBar should explicitly override the base class dispose method?
I can't see any conceivable situation where the base Dispose wouldn't be called.
 
@Comintern doesn't best practices (at least as sez by Microsoft) decree that all derived class ought to override the Dispose(bool Disposing) method?
 
Yes, but I'm not sure that's relevant here. The point in doing that is that GC.SuppressFinalize(this); is called, but in this case it's called in the base class.
 
hmm. are finalizers the same for all hierarchy?
or does each node get their own finalizer?
 
Hmmm... Not sure.
 
2:14 AM
would hvae to review the dispose pattern to be sure
they can't have written warning just for funnies.
 
The warning text seems to indicate it violates this rule: "IDisposable is reimplemented in the class."
> Warning CA1063 Microsoft.Design : Remove IDisposable from the list of interfaces implemented by 'VBProjects' and override the base class Dispose implementation instead.
It seems to want IDisposable removed from the IVBProjects interface, which makes no sense at all.
Ahhh... Finalizers are not inherited.
 
makes sense.
ctors aren't. why would dtors be?
 
@this base ctor always runs first though, given a base class
 
Wouldn't that imply that the dtors run in reverse order?
 
True but that's not true inheritance, is it?
normally when there's no parameterless ctor, we must provide our implementation of the ctors even if it's an empty body
 
2:21 AM
the base default ctor always runs...
 
for all I know, dtors might have its own rule apart from the ctors.
 
I wonder if it just wants this:
    private bool _disposed;
    protected override void Dispose(bool disposing)
    {
        if (_disposed)
        {
            return;
        }

        base.Dispose(disposing);
        _disposed = true;
    }
That seems silly if there isn't any work in the derived class though.
 
do you even need all that, though? just calling base.Dispose(disposing) ought to suffice.
 
...and that's exactly what it wants
 
2:24 AM
@this then why override at all?
 
the base.Dispose should already have the _disposed to guard against redundant calls.
 
Probably not.
 
feh. I know nothing.
 
LOL. If you remove everything but this...
    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
    }
... it gives a new warning for redundant override.
It does clear the CA1063 though.
 
[rubberduck-vba/Rubberduck] build for commit 599e852d on unknown branch: AppVeyor build succeeded
 
2:25 AM
ha! see? :p
 
Where do I complain?
 
there's gotta be a better way to clear it?
 
hmm i'm a bit foggy but could it be because we have IDisposable used more than one time?
 
pragma ignore
 
like defined on the interface then again on the class?
 
2:28 AM
Although that's one line of code, just like protected override void Dispose(bool disposing) => base.Dispose(disposing);
 
CA1063 lists "Dispose() is overridden." under "causes"
IOW "Implement IDisposable correctly: don't"
 
I thought at first it was because it inherits the implementation from 2 different interface paths.
 
seal it
 
sealed makes no difference.
 
hmm can you seal the base's dispose method?
the article seems to imply you can
 
2:32 AM
You mean remove the virtual?
 
yeah, i guess
 
> If you create an unsealed type that declares and implements the IDisposable interface, you must define Dispose(bool) and call it.
 
I was looking more at this:
> The Dispose() method is not public, sealed, or named Dispose.
 
"The Dispose() method is not ... named Dispose". yup. 500000K unit tests.
 
TBH I can't imagine how they could implement the IDisposable interface and not have a Dispose method named..... Dispose.
 
2:34 AM
> Rename your dispose method to Dispose and make sure that it's declared as public and sealed.
 
WTF?
MyDispose()?
 
#Unpossible
 
basically I read it as the IDisposable.Dispose shouldn't be overridden, and the base class must supply a templated method for the inherited behavior.
 
Right - Dispose(bool) should be protected and have an override.
It just seems pedantic if it only called the base.
 
but we're talking about Dispose() - you said it's virtual?
 
2:37 AM
No, the base class follows the correct pattern.
 
ok.
 
protected virtual void Dispose(bool disposing)
^ That's what it's whinging about apparently.
 
there's this, though....
> If you create an unsealed type that declares and implements the IDisposable interface, you must define Dispose(bool) and call it. For more information, see Clean up unmanaged resources (.NET guide) and Dispose pattern.
 
is it called?
 
It wants all the derived classes to override that.
 
2:38 AM
ah
 
The Dispose() method is public and not virtual.
 
which is kind of lame since we have nothing extra to do.
 
IKR?
 
@this IMO the docs are describing the templated method there
 
I guess if nothing else it means that if we ever do need to add something it will be clear the base class needs to be called.
Which is completely obvious to begin with...
 
2:39 AM
hmm. apparently you can seal methods.
 
^ yeah
 
memo to myself- re-study why virtual even exists if a method can be sealed
 
because methods aren't virtual by default in C#. they are in Java though ;-)
 
What c# version. I can't figure out where it wants the keyword.
 
public sealed void foo
 
2:42 AM
Isn't everything virtual in Java?
Ahhh... you can only seal an override.
public sealed string ToString()
 
I like this:
> When to suppress warnings
Do not suppress a warning from this rule.
 
I already have one :-D
We shouldn't ever dispose the dockable hosts
 
can they not be IDisposable?
 
@this The inherit from an IDisposable base class.
 
2:53 AM
of course. would have been too easy.
they do have finalizer, though?
 
Yep.
I think.
It might just get cleaned up by the OLE detach call - I'll have to check.
 
i'm pretty sure hte way it's working now is fine.
we shouldn't be throwing any more exceptions on shutdown (we were until Wayne worked around that bug in the interop code)
sigh. VS, VS, VS. I say to clean a project. Surely you know the difference beetween a project and a solution
 
[rubberduck-vba/Rubberduck] web-flow pushed commit c08afbad to next: Update README.md
 
@Duga tbh i liked the prior icon - seemed more fitting for the masthead
 
WTH is going on here?
        public void Dispose() => ((IDisposable)this).Dispose();

        private bool _isDisposed;
        void IDisposable.Dispose()
        {
            if (_isDisposed) return;
            _isDisposed = true;

            foreach (var element in _list)
            {
                element.Dispose();
            }
        }
Why the 2 overloads?
 
3:06 AM
one with an explicit interface implementation
 
not sure that's a case to need a explicit implementation, though.
I'd try and get rid of it. See if it makes VS cry.
 
The one dispose pattern fired 5 different warnings.
 
> Add path checks & directory creation for missing folders.
Add pragmas to generated IDL files to ignore MIDL 2400 and 2401 warnings.
 
@Comintern you might need to write to the mothership
 
@this any idea how to get rid of the borders?
eh, you're right.. it needs an actual banner
 
They would say to not use a table
i think you need an inline style to make tvable border transparent
with div, borders are already transparent but you would still have to align them to get grid like layout
 
[rubberduck-vba/Rubberduck] build for commit bbfce561 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] web-flow pushed commit f9881bce to next: Update README.md
 
3:35 AM
#ProblemSolved
 
304 down, 287 to go.
 
@MathieuGuindon heh clever
 
note to self: avoid git pull upstream next with a large diff and VS opened.
@this #4491 is good to go right?
 
4:29 AM
Where did all these conflicts or failed tests come from?
 
@IvenBach Which conflicts and/or failed tests?
The build warnings?
 
@MathieuGuindon afaik, yes. Unless. Others has a contrary opinion
 
It seems like you and Vogel both are conquering failed tests.
I've only been somewhat following chat.
 
Vogel is working on my half assed pr for refactoring dialog refactor
 
I'm working on code analysis warnings. Those are basically tech debt.
 
4:32 AM
this one has 500 broken tests give or take 250 Yay me.
 
That's what we get for allowing noobs to work on the RD code base.
 
Nah, they're everyone's.
 
^
 
The Dispose stuff is just laziness for the most part.
 
Is it just part of the learning process everyone's gone through with RD?
 
4:34 AM
No, it's trying to remember the overly pedantic pattern that MS looks for with Dispose.
 
It is always a learning process
 
I'll have to understand it after I see it. Isn't it just Foo.Dispose()?
 
Hmm.. @Comintern. Any reasons why we aren't using SafeHandle. Apparently MS recommends it over IDisposable.
 
SafeHandle is a monumental PITA.
Not that our current setup isn't...
 
Oh? GTK.
 
4:45 AM
There are some legit issues in the CA warnings.
CA1901 picked up a couple bad signatures.
 
5:30 AM
@Vogel612 ^ Referring back to the German meal that was made for me. That's one of the items I snuck a photo of. Do you know that brand/is it any good?
 
5:50 AM
> Most of this is implementing the proscribed Dispose pattern, although there are a couple of legit warnings that were fixed and a couple non-legit ones that were suppressed.
[rubberduck-vba/Rubberduck] build for commit ef02b69d on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
 
4 hours later…
10:06 AM
@IvenBach dunno, that's Bavarian. Never seen it before
 
 
4 hours later…
 
2 hours later…
@Duga isn't this now violating the best practice RE: dispose? Or was there actually a problem with using the Dispose(false) in the finalizer?
 
@this The finalizer should only need to call dispose if there are unmanaged resources.
 
@Comintern I see. I thought it had unmanaged resources but I see that's not the case.
However, there's a UserControl there, too. Not sure if we're supposed to dispose it (IIR, it's disposable but I might be wrong)
@ThunderFrame hope you're doing well! I hope you don't mind me working on your awesome PR. I'm cleaning it up and will make it compatible with VB6; in middle of putting in the necessary abstractions.
 
Is the UserControl disposed by the IOleWrapper?
 
ah i see - i thought that was WPF. That's actually WinForms.
 
4:34 PM
Oh wait, no - that should be cleaned up by the SubclassingWindow via the message pump.
 
there's this comment
> // WARNING: Disposal of _userControl / _cachedClientSite should be handled in IOleObject::Close(), not here, see top comments
so the code is just fine as it is (not disposing the usercontrol)
given that both WPF and WinForms has UserControl it might do us good to be clear in labeling those....
 
I thought so - those have crap that needs cleanup all over the place.
 
or at least a comment to link to that comment above. It wasn't evident from reading the DockablePresenter alone who owned the usercontrol.
(and we have many code like that... :-\ )
 
I hope they'll get IDisposable analyzers updated soon, so we can use it, and encourage annotating. That'd go long way toward clarity when reviewing the code, especially those "here-be-dragons" sections.
 
4:41 PM
@Duga I would prefer interfaces never to be in the same file as an implementation.
 
Unfortunately, we have a number of files like that.
I think it was mostly out of laziness since there was only one implementation.
I would agree that it'd be necessary mandatory to split once there's more than one implementation.
but am ambivalent about one file housing both single interface + single implementation.
 
[rubberduck-vba/Rubberduck] build for commit 5c4b51c2 on unknown branch: AppVeyor build succeeded
 
@M.Doerner Generally I agree. I'm not a big fan of multiple classes per file either.
 
@Comintern are you planning on addressing the other remaining warnings (besides the ones about P/Invoke) with the PR?
 
I was planning on working my way through the list. Nothing that says they need to be in the same PR though.
 
4:50 PM
cool
bbl
 
5:09 PM
 
5:23 PM
How contributing works - is this accurate/applicable for RD?
And are you guys using the GitHub Extension for VS or some other means to manage the GitHub related things? (I've seen @Vogel612 mention command line, though I'm not sure in what context that was.)
 
@Inarion Both. IIR the GH extension will also install the CI tools.
 
5:40 PM
@Comintern I see. Thanks!
How much space does one branch consume? Not much, I guess? (In the regime of MBs?)
 
more like bytes
 
@Inarion this wiki page means to have everything you need to know for the initial setup: github.com/rubberduck-vba/Rubberduck/wiki/Contributing
 
possibly kilobytes, but probably not even that
 
@Vogel612 that's good. Needed to remove a couple of programs to make room for VS.
@MathieuGuindon I've got that page open - but my current steps seem to precede what's written there. :)
 
@Inarion with SVN, each branch is a folder, so branches cost quite a lot. With Git, the working directory is whatever the current branch is, so git branches are very lightweight - ideally when you start a work item you make a new branch just for it, and then PR off that branch. that way your "next" branch can be kept in sync with the central repo (aka "upstream"), and it's easy to make new, parallel branches
That said the RD repo weights something close to 10GB
 
5:48 PM
@MathieuGuindon You're saying upstream pulls directly from the individual branches, instead of my origin?
Or, rather: It should do that.
This then results in more atomic PRs to the central repo, right? I guess that makes tracking issues back to specific changes easier?
 
no, upstream isn't a branch, it's a remote - it's https://github.com/rubberduck-vba/Rubberduck.git
origin is also a remote: it's your fork
when you clone your fork, you get a local, working copy. You make changes, commit them; then you push the commits to your fork, and then make a PR from your fork to the central repo
 
@MathieuGuindon huh? It's just 1GB on my machine
what have you done?
 
@MathieuGuindon Ok, I think I got that. I'm probably a bit inaccurate on the vocabulary, but that's seems easy enough. :)
 
@Vogel612 wah, I'll check again...
 
Alright, now I've got a Rubberduck project open in VS. Will figure out how to proceed after cooking/having dinner. Later!
 
6:02 PM
@MathieuGuindon and? still at 10 gigs?
 
6:44 PM
Uninstalling all my tech stuff.
I need to re-install it on my D drive.
 
 
3 hours later…
9:16 PM
Hm, I guess it's building fine.
 
9:28 PM
So, to sum it up, @Vogel612: It took me several hours making room for and installing Visual Studio. (Though that wouldn't really count towards getting RD ready, I guess.)
Getting familiar with GitHub, forking RD, getting VS to show the local branch, building, running tests, verifying that the newly-build RD is actually the one running in my Excel - that all took about 2-2.5 hours. This is coming from someone who has never really touched VS, so a lot of this time was spent wondering where I am and what's going on. ;) After all, it should present a reasonable baseline for newbie-contributors
 
9:42 PM
okay, that's... a lot of time
 
Nice! As it is a wikiyou are welcome to add notes and fill in gaps Don't worry if it is completely accurate. Just get it in and others will expand as needed
 
10:14 PM
 
@Vogel612 did I show my ignorance and choose the wrong country?
 
nah, Bavaria is just the German equivalent of Texas
 
11:06 PM
Good to know.
 
11:45 PM
I just realized I've never actually looked into how RD starts in the code base. Now #CuriousMindsWantToKnow.
 

« first day (1625 days earlier)      last day (1555 days later) »