Legal impact when using reflector ?

I'm working on a test runner plugin and I have been using reflector a lot.

The test runner plugin needs to use some classes that are internal in resharper, so I have to duplicate their functionality.
Also there's a lot of code that will be very similar to the nunit/mstest runners (and some available open source test runner plugins).

I want to make this plugin open source, but I am unsure about the legal impact of using decompiled code from resharper.

Can someone give me any guidance ?

0
4 comments

We feel it is better to talk to us about making required API, classes and methods public, if you need them. It is likely that internal API has some public extension and interoperability points you could use instead. Or we can open this API for you, or provide even better way to interact with ReSharper.

0

The problematic classes are:

UnitTestExplorerContextBaseAction (internal):

I add another context menu entry, exactly like "Debug unit tests", but the class is internal so I cannot inherit from it to get the same behavior.

DebugTaskRunnerHostController:

I am basically making a host controller that is exactly the same, except for the debugger engine guid.
So I have exactly the same class, except in the Run method, I'm passing another value to guidLaunchDebugEngine.
I tried inheriting from it and overriding the Run method, but I soon ran into problems with references.
It would be great to have a way to use the debugger with another debugger engine guid. A virtual method maybe ?

These problems were in the latest 4.5 release of resharper, I have not looked at the 5.0 beta's.

0

Please, take a look a ReSharper 5.0 RC. During this release we improved Unit Test Integration pretty much (have you heard about dotCover already?)

0

Yes I have heard of dotCover and I will certainly try it out.

I've checked the R# 5 RC code, and I see that the UnitTestExplorerContextBaseAction class is made public, so that is great.

I still have the problem with the DebugTaskRunnerHostController class.

The problem is the myRunId field, the myTargetInfo field and the ThreadProc method are private.

Override the method does not allow me to change the properties of the myTargetInfo field in my plugin.
I need to change the value of the guidLaunchDebugEngine before the ThreadProc thread is started.

The most ideal situation for me would be that the Run method would call another public virtual method with the myTargetInfo as argument.
This wouldn't be a breaking change in the R# code.

0

Please sign in to leave a comment.