This is a migrated thread and some comments may be shown as answers.

JustCode vs Resharper

20 Answers 686 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Asit Aithal
Top achievements
Rank 2
Asit Aithal asked on 02 Dec 2010, 01:41 AM
I already have JustCode. Do I need Resharper? If no, what will I miss?

20 Answers, 1 is accepted

Sort by
0
Michel Corbin
Top achievements
Rank 1
answered on 14 Jan 2011, 04:34 AM
No reply for this question. Humm.... Does Telerik afraid to compare his product with Resharper.
Ok, ok, resharper is a very mature product with a nice Unit test runner and powerful refactoring engine but I think the Unit test Runner of Telerik have a very good potential.
Personnally, I use Resharper with DevExpress because both have feature that is great to type a ton of code in a minute.
Let's wait for Telerik to show me what this new product have to grant to the world of Visual studio productivity add-in.
0
Dan
Top achievements
Rank 1
answered on 11 Feb 2011, 09:56 PM
The "Complete Statement" or "Smart Enter" feature that Resharper and Coderush have is what I miss.  Other than that, I'd be happy with JustCode so far.
0
Stacey
Top achievements
Rank 1
answered on 17 Feb 2011, 11:54 PM
I wish JustCode could work with HTML in .cshtml files. Other than that, I love it. Would love CSS support.
0
Mike
Top achievements
Rank 1
answered on 08 Feb 2012, 06:14 AM
Hi

I have been using Just Code on and off for 6 months or so , more off than on sadly  I must admit. I have recently had major memory error issues with R# and have finally binned it  in favour of Just Code.

My overall reaction is very positive , any shortfall in features hasn't had me running back to R# yet, and I do have to navigate a lot of "unknown code" so that aspect certainly shines.

The code analysis is on a separate thread out side of the IDE, it may slow the PC slightly overall but it doesn't slow the IDE and more importantly keeps the memory footprint of the IDE down-- A very Big Point for me.

In terms of features , R# does have a few more , the snippets hadling is better with their macro ability , but so far the Code Generation of Just Code has not let em down or disappointed me, nor have any "missing features" been that obvious.

Navigation etc is hard to pick between , code analysis ditto., TestRunning I havn't tried yet.

The bit I miss is Enhanced Intellesence (eg snippets in the suggestion list , etc) and File structure (I must suggest a feature request here) , but at the moment I am running Viusal Assist X as well , they seem to play well, to make up for that.

I am committed to using rather than trying JC and maybe will respond later with experiences if that please people.

Mike
0
Jon
Top achievements
Rank 1
answered on 02 Aug 2013, 07:19 PM
I've been using ReSharper for the past 2+ years and just 2-weeks ago started with a company that is using JustCode.  So far it seems ok but there are annoyances.  However, there are annyouance with ReSharper as well.  You can tell that ReSharper is a pretty mature tool and JustCode is a bit less mature.  But I think given time, JustCode will certainly catch up and maybe overtake ReSharper.  But I don't see that just yet.

Probably the biggest annoance I have so far with JustCode is that I have a box in the status bar that says "2201 errors in 99 files".  When in fact there are no errors.  It seems be struggle with Structures.  I don't use structures often, but the applicaiton that I started working on a few weeks ago, the previous developer used them all over the place.

I also do not like that JustCode has issue identifying dead code. 

One of my favorite things about ReSharper is it's ability to refactor Foreach loops into LINQ and other advanced LINQ refactoring.  I haven't seen that in JustCode, but then I have only been using it for a few weeks, so it may be there somewhere.

I was a bit suprized to find out that JustCode is more expensive that ReSharper.  I figured it would be less expensive since it still has a lot of maturing to do to catch up.

But all in all I like JustCode.  I don't plan to go back to ReSharper any time soon.  I want to get used to JustCode and see how it comes along in the next release.  But if it continues to have lots of issues with things like dead code and structures, at some point I would abandon it and go back to ReSharper.       

0
Zdravko
Telerik team
answered on 06 Aug 2013, 09:09 AM
Hi Jon,

 We really appreciate users' feedback and I am glad that you have pointed where we should work to make JustCode better tool according to your needs.

As you can see in this article we have a Linq conversion, but indeed there is more to be done and the feature is not completely perfect.

The thing that worries me most are the false positives "2201 errors in 99 files" that you mentioned.
I would be grateful if you can send me a project or provide some information (project type, framework version and so on) that will help me to reproduce them so we could investigate and fix. We also have a command that reports 'Good Code Reds', but sometimes the issue is context related and a project is the best way to reproduce correctly the problem.
If you decide to send us your project I want to assure you that it will be used only for the purpose of errors fixing.

"I also do not like that JustCode has issue identifying dead code."

We will appreciate an example or some hints for reproducing.
Thank you.

I look forward to hearing from you.

Regards,
Zdravko
Telerik
Share what you think about JustCode with us, so we can help you even better! You can use the built-in feedback tool inside JustCode, our forum, or our JustCode feedback portal.
0
Jon
Top achievements
Rank 1
answered on 06 Aug 2013, 04:30 PM
Thanks for your feedback and comments.  I have looked at the LINQ support and it looks interesting.  I will definately use that going forward to get a feel for how it works.  

After looking a bit closer at this issue, I think the issue is not with JustCode, but that .Net has the ability to deal with this error and fixes it where JustCode just displayes it as an error, as it should be an error. Something is odd here and.Net allows it when I think it should get an error. But the code works fine.  It seems that .Net is able to deal with it.  Let me explain...

I cannot attach a project without creating a ticket, so I just pasted a VERY simple sample that recreats this issue.  Just setup a new solution with a winForm project and two class libraries.  Then copy the code below and add a label to Form1 in the winForm project.  Reference both class libraries in the winForm project and referenced class library 2 from class library 1.

Now, in class-library-2 I have setup two structures.  One is public and one is internal.  In class-library-1 I create new objects for both structures.  Now I should NOT be able to create one for the internal structure because the class-libarary-2 assembly is seperate from the class-library-1 assemblt and the structure is internal... but .Net allows it and JustCode gives me an error.  The public structure is fine and neither .Net nor JustCode give me an error.  

Now, start by leaving the error with the internal structure and just run the code.  Note that it works fine.  JustCode said it was an error, but .Net doesn't seem to care.  Now jump into class-library-1.class1 and look at the errors JustCode is giving you.  These are valid, as the MenuButton strucuture is internal.  But .Net seems to have flipped it to public because it deteremined it should be public.  But JustCode seems to be considering it internal, as it probalby should. 

Now flip the structure to public... everything is fine.  No errors.

So the question is... why does .Net allow it?  Maybe JustCode should just give a warning?  Not sure.  It sounds like JustCode is correctly reporting it as an error and .Net just flips it to public to deal with the error.  Interesting.

If you want to create a ticket, I can attach my sample app that recreates this issue.

Best regards,
Jon Rothlander


ClassLibrary1.Class1 
- Add a reference to classlibrary2 after you create it.
Imports ClassLibrary2.Class1
  
Public Class Class1
  
    Private newPropertyValue As MenuButton
    Public Property NewProperty() As MenuButton
        Get
            Return newPropertyValue
        End Get
        Set(ByVal value As MenuButton)
            newPropertyValue = value
        End Set
    End Property
  
    Public Sub New()
  
        ' Note:  The following line will give an error if the structure in classlibrary2.class1 is internal.
        '
        '        - Flip it to public and JustCode doesn't mark it as an error
        '       
        ' Now it looks like JustCode is handle this correct.  However, why doesn't .Net give you an error when 
        ' it is internal and why does the code actually work in either case?  Does .Net just flip it to public 
        ' because it is being used as if it was public?  It seems so. 
        newPropertyValue = New MenuButton("tag", "name", "tooltip button name", True)
  
        ' Note: This one does not give the error because the structure is public.
        Dim obj2 As New MenuToolStrip
  
    End Sub
  
End Class

ClassLibrary2.Class1
Public Class Class1
  
    Structure MenuButton
        Private m_Indexer As String
        Private m_ButtonTag As String
        Private m_MenuStripName As String
        Private m_ToolTipButtonName As String
        Private m_IsVisible As Boolean
  
        Public Property Indexer() As String
            Get
                Return Me.m_Indexer
            End Get
            Set(ByVal value As String)
                Me.m_Indexer = value
            End Set
        End Property
  
        Public Property ButtonTag() As String
            Get
                Return Me.m_ButtonTag
            End Get
            Set(ByVal value As String)
                Me.m_ButtonTag = value
            End Set
        End Property
  
        Public Property MenuStripName() As String
            Get
                Return Me.m_MenuStripName
            End Get
            Set(ByVal value As String)
                Me.m_MenuStripName = value
            End Set
        End Property
  
        Public Property ToolTipButtonName() As String
            Get
                Return Me.m_ToolTipButtonName
            End Get
            Set(ByVal value As String)
                Me.m_ToolTipButtonName = value
            End Set
        End Property
  
        Public Property IsVisible() As Boolean
            Get
                Return Me.m_IsVisible
            End Get
            Set(ByVal value As Boolean)
                Me.m_IsVisible = value
            End Set
        End Property
  
        Sub New(ByVal p_buttontag As String, ByVal p_menustripname As String, ByVal p_tooltipbuttonname As String, ByVal p_isvisible As Boolean)
            m_Indexer = ""
            m_ButtonTag = p_buttontag
            m_MenuStripName = p_menustripname
            m_ToolTipButtonName = p_tooltipbuttonname
            m_IsVisible = p_isvisible
        End Sub
  
        Sub New(ByVal p_Indexer As String, ByVal p_buttontag As String, ByVal p_menustripname As String, ByVal p_tooltipbuttonname As String, ByVal p_isvisible As Boolean)
            m_Indexer = p_Indexer
            m_ButtonTag = p_buttontag
            m_MenuStripName = p_menustripname
            m_ToolTipButtonName = p_tooltipbuttonname
            m_IsVisible = p_isvisible
        End Sub
    End Structure
  
    Public Structure MenuToolStrip
        Private m_ToolStripTag As String
        Private m_IsVisible As Boolean
  
        Public Property ToolStripTag() As String
            Get
                Return Me.m_ToolStripTag
            End Get
            Set(ByVal value As String)
                Me.m_ToolStripTag = value
            End Set
        End Property
  
        Public Property IsVisible() As Boolean
            Get
                Return Me.m_IsVisible
            End Get
            Set(ByVal value As Boolean)
                Me.m_IsVisible = value
            End Set
        End Property
  
        Sub New(ByVal p_toolstriptag As String, ByVal p_isvisible As Boolean)
            m_ToolStripTag = p_toolstriptag
            m_IsVisible = p_isvisible
        End Sub
    End Structure
  
End Class


Form1.vb
- Add a label1 to the form.  Reference class library 1 and 2.
Imports ClassLibrary2.Class1
  
Public Class Form1
  
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim obj As New ClassLibrary1.Class1
        Dim menuItem = obj.NewProperty()
        Label1.Text = menuItem.ButtonTag
  
    End Sub
  
End Class

0
Zdravko
Telerik team
answered on 07 Aug 2013, 01:04 PM
Hi Jon,

 Thanks for the reply.
This is really weird issue. Structures in VB are public when no access modifier is set. It makes no sense to be fixed when the 'Public' keyword is added.
We will definitely investigate and fix this.
As a reward for your assistance you receive 1000 Telerik points to your account.
Thank you.

Regards,
Zdravko
Telerik
Share what you think about JustCode with us, so we can help you even better! You can use the built-in feedback tool inside JustCode, our forum, or our JustCode feedback portal.
0
Jon
Top achievements
Rank 1
answered on 07 Aug 2013, 02:21 PM
Yeah, this stumped me as well, at least at first.  But after some poking the .Net documentation I final ran into something that I had forgotten... that structures are internal by default, unlike classes which are public by default.  But more importantly here, and what is stumping us, is that a default structure inherits its visibility from it's parent object.  That is why this is happening.  JustCode is not checking the parent object for structures that are set with a default visibility. 

In summary, my structure is internal by default but because the class that contains it is public, the structure is public.  But JustCode is seeing it as internal.  JustCode needs to look at the parent class for a structure with a default visibility.  I was able to get around JustCode missing this by adding public to the structure so that JustCode understood what I was doing.  But .Net was already seeing it as public.     
 
Personaly, I like the fact that JustCode caught this because putting public on the structure is what the original developer should have done and probably missed because it did not cause an error.  But I think JustCode should be able to check the parent object and if it sees the parent is public and the structure is internal, offer a warning to the user that a public class is exposing an internal structure as public and recommend that for maintainability and clarity, that the structure be defined as public as well. That would be a very nice warning, as I imagine plenty of developers have ran into similar situations without realizing structures work this way.  It takes a LOT of time to work through something like this and realize what is going on.  Getting back to the origional posting... that would be a very nice feature for JustCode beyound what ReSharper and other offers.
0
Zdravko
Telerik team
answered on 07 Aug 2013, 03:10 PM
Hello Jon,

 Thanks for the reply.
According to this article  Structures are Public if no other modifier is set and so their fields. It is not said that they inherit their access modifier from the parent, but maybe the article is not complete.
However, the issue is logged and a fix awaits. 
Thank you.

Regards,
Zdravko
Telerik
Share what you think about JustCode with us, so we can help you even better! You can use the built-in feedback tool inside JustCode, our forum, or our JustCode feedback portal.
0
Jon
Top achievements
Rank 1
answered on 07 Aug 2013, 03:52 PM
Yeah, I have seen different articles say different things.  You have to set up a test to prove which one is correct.  That is what I had to do with my sample.  Actually, I think they are all correct but they are just not explaining it very well by mistated something or by not giving you the full story.  I did find one article on MSDN that says the structures with a default access modifier pull it from the parent.  Here's an article on MSDN that says they default to internal.  But this one goes on to provide the rest of the story.  http://msdn.microsoft.com/en-us/library/ms173121.aspx

"Classes and structs that are declared directly within a namespace (in other words, that are not nested within other classes or structs) can be either public or internal. Internal is the default if no access modifier is specified."

Then a few lines down...

"The access level for class members and struct members, including nested classes and structs, is private by default."
 
I think this is the key.  If a structure is a member of a class, it defaults to private because it is inheriting it from the parent class, which has the default of private since it is a class.  So logically the structure is inheriting it from the parent in that case.  To prove this, just change the parent class to FRIEND (internal in C#).  Note that the structure is now FRIEND as well.  The structure with a default access modifier always has the visibility of the parent object.  Through a simple test like mine, you can prove/disprove this. 

Very confusing!  Even Microsoft seems to disagree with their selves on this one.  I hope that working through this helps.  I know it has helped me understand this better.  In the end, just don't use the default access modifiers on structures... they are just too confusing!  Maybe that is what JustCode could recommend as a warning.
0
Zdravko
Telerik team
answered on 08 Aug 2013, 02:13 PM
Hello Asit,

 I just want to point you that the article you have found is C# Programming Guide and your code is in VB as the article I sent you. It seems both languages has this architectural difference which makes them specific.
Thank you.

Regards,
Zdravko
Telerik
Share what you think about JustCode with us, so we can help you even better! You can use the built-in feedback tool inside JustCode, our forum, or our JustCode feedback portal.
0
Jon
Top achievements
Rank 1
answered on 08 Aug 2013, 03:11 PM
Nice catch!  There is difference between C# and VB.Net in this regards! 

Now I can see that JustCode was written for the C# version of this and only has an issue with the VB.Net version.  I converted everything to C# and everthing worked fine.  So I even sent so far as to merge VB.Net and C# class in different paterns to identify where the issue was.  After running this back and forth a few times, you can see that in C# all of the rules that you would expect, do in fact work as expected and JustCode has no issues with them.  But in VB.Net is where they do not work as you would expect and JustCode has a problem.

In C# a struct with a default access modifier, the modifier is internal even when the parent class is public.  I beleive this goes against the article you referenced, as they were VB and not C#.  But test it out and you can see it in action and see how it defines the visiblity of the structure.  In VB.Net if the class in public and the structure is set to default, the structure is private!  In C# if you create a public class and a struct inside the class and do not set an access modifier, the structure is internal.  Interesting. 

I'm not going based on any of the articles, as I no longer trust tehm.  Just based on setting it up and testing it.  JustCode seems to handle the C# fine but has an issue with the VB.Net default access modifier on a structure.  It looks like the VB.Net ONLY rule where it pulls it's visibility from the parent, that rule is being ignored in JustCode.  But don't trust me or the articles.  Test it yourself and you will see. 


0
Jon
Top achievements
Rank 1
answered on 08 Aug 2013, 03:13 PM
Final lesson learned... Don't use default access modifiers on VB.Net structures!   
0
Isidro Padilla
Top achievements
Rank 1
answered on 09 Aug 2013, 06:33 AM
JustCode will be a great competitor for CodeRush and Resharper. Both CodeRush and Resharper are two good tools but Telerik been shown in several of their tools they can even outperform its competitors. I hope so...
0
Felickz
Top achievements
Rank 2
answered on 11 Oct 2013, 05:48 PM
Just code needs style cop support.
0
Mike
Top achievements
Rank 1
answered on 12 Oct 2013, 07:44 PM
Hi

A Long thread , but back on the original course !!

I finally gave in and bought a  64 Bit PC and my R# woes went away

JustCode still doesn't have the File Structure (or whatever we call it ) that R# has and Intellesence is still missing , from my view point these are essential bits of a productivity add in. I have been using a mix of Visual Assist X and R# for 10 years now and really cannot work without these features, which both the competitors have. CodeRush is simply "just different" and is difficult to compare with the other 3

Just Code showed big improvements initially but I am afraid still lags behind R# which is a very mature product . Ad to that its significantly cheaper to buy and maintain

Mike
0
Carlitos
Top achievements
Rank 1
answered on 25 Feb 2016, 06:23 PM
I haven't used JC yet. So far R# does all I need/want/love. Any new ideas/features for 2016 as this post is a bit old?
0
Nikolay Valchev
Telerik team
answered on 01 Mar 2016, 03:38 PM
Hello,

About a year ago, we announced that JustCode for Visual Studio 2015 is going to be rebuilt to step on Roslyn API, you can read the article - What’s Ahead for JustCode.
This major change required from us to reimplement all of our C# and Visual Basic features to be re-implemented using this API and it shaped up as our top priority. Since then, we have aligned a lot of our most requested and important features with the ones brought by JustCode for the previous version of Visual Studio, but there is still some work to be done, so it remains as our main focus. Of course, we are always open to new feature requests or any other kind of suggestions and I can assure you that they would be rightly prioritized.

Best Regards,
Nikolay Valchev
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
0
Isidro Padilla
Top achievements
Rank 1
answered on 02 Mar 2016, 11:50 AM

Agree, I will continue this interesting development. Thank you very much for theinformation.

Isidro Padilla

Tags
General Discussions
Asked by
Asit Aithal
Top achievements
Rank 2
Answers by
Michel Corbin
Top achievements
Rank 1
Dan
Top achievements
Rank 1
Stacey
Top achievements
Rank 1
Mike
Top achievements
Rank 1
Jon
Top achievements
Rank 1
Zdravko
Telerik team
Isidro Padilla
Top achievements
Rank 1
Felickz
Top achievements
Rank 2
Carlitos
Top achievements
Rank 1
Nikolay Valchev
Telerik team
Share this question
or