Forums
Forums are Read-Only. Use the new Support Center. To start a general discussion, use the General category when submitting your question.

An Open Letter to Developer Express on the Quality of C++ Support

Last post 2/8/2010 1:54 PM by Mark Miller (DevExpress). 18 replies.
1 2 Next
Sort Posts: Previous Next
  • Richard

    An Open Letter to Developer Express on the Quality of C++ Support

    8/18/2007 9:35 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    Dear Developer Express,

    I've been using your C++ refactoring tool for some time now, mostly version 2.2.2.  First, I'm going to give you the good news.  I've tried out your competitors and you've got the best C++ refactoring support.  SlickEdit wants me to change my entire IDE just to get refactoring support and I'd rather keep using the IDE I already know.  Ref++ doesn't provide any way to evaluate their product without buying it, so I gave them a pass.  Eclipse currently only supports Rename, although its IDE wasn't so hostile that I'd be willing to use it for C++ refactoring if it had better or comparable refactoring support when compared to a commercial tool.

    Now, the bad news.  To be frank, the quality of the C++ support is very weak.  There are numerous fronts on which the quality of lacking and I'll go into these individually.  However, the overall impression I get is that C++ support was tacked on as an afterthought, particularly native C++.  The product seems infected with "manageditis" in that it always wants to insert managed C++ code idioms, or replace my existing native code with managed C++ code idioms.  To be honest, most of the people I know who write managed code use C# or even VB.NET and not C++.  Most of the people I know using C++ are writing native code, possibly for portability reasons among target platforms.  So when your tool keeps assuming that "C++" is equivalent to "Managed C++ for .NET", you really are barking up the wrong tree.  Most C++ code bases are legacy native code bases and not new greenfield development for Managed C++ for .NET.  This is just one example, but the trend repeats itself throughout the documentation which doesn't make it clear if or when refactorings are available in C++.  The same trend follows through all of CodeRush where most of the templates assume I'm writing managed code and insert code that isn't relevant for native C++.

    Documentation: I have to say I'm not too fond of the documentation.  I'd rather have documentation integrated into VS.NET's help facility than have to navigate your odd "Guide" window.  (I just found a bug in its rendering display in 2.5.0 today, while trying to use it.)  Its just different, its not an improvement.  In particular, a lack of a comprehensive table of contents makes navigating the document tedious and painful.  Important information is hidden on pages that have no TOC entry and you have to wander through the other pages in order to find a link to the information you want.  Second, the information in the help pages themselves just isn't very clear most of the time.  In particular, the context in which refactorings are supposed to be available is vague.  Instead of a terse description, there should be examples showing where every refactoring applies.  Today I tried browsing your Guide in order to try and understand how I would add editing support for a new language to VS.NET (syntax highlighting, coloring, supply my own refactorings, etc.).  The current organization of the information makes it very difficult to understand how to even start such a task.  Although I've browsed your web site(s) and forums, I just don't find this information readily available.  It could be that its hidden in there and I'm missing it, but if after searching for some time and not finding it, I'd say that's a documentation bug, particularly if the information is in there.  Information from help files should be easy to find and not require me to go sleuthing.

    ReFactor!Pro: In a short while of using this product, I have found over 50 serious bugs.  Yes, I've reported them all to your support department, but finding this many bugs -- even in simple and common refactorings like Rename -- is disconcerting.  Again, it just feels like the C++ support hasn't even been tested except with baby food cases that always work.  This past weekend I did something very simple to test ReFactor!Pro.  I just sat down in front of a blank source file and attempted to type code that would allow me to exercise each and every refactoring listed in your documentation that could apply to C++.  I ended up filing bugs on almost every refactoring that I tried.  This is not creating torture cases and finding obscure endpoints, this is just exercising the basic functionality offered.  In addition to bugs, there have been performance problems almost constantly.  When I asked about this, the first response I got was an implication that my machine was underpowered for using this tool.  At the time I had 512MB of memory and it was implied that this just simply wasn't enough and my machine was swapping all the time, causing poor response.  To be honest, I was skeptical of this claim, for it was the CPU that spiked when using your products and not the disk drive.  Even running perfmon and monitoring .NET garbage collections didn't indicate excessive garbage being collected.  So I upgraded my laptop to 2GB of RAM and nothing changed.  Your product still made navigating source files noticeably more sluggish than before.  When 2.5.0 came out, the CPU spikes were so frequent that I couldn't even navigate a source file without the CPU spiking on every press of the down arrow key.  Your support department did give me a workaround, but honestly how can something go out the door with such a problem?  This was not a developer nightly build I was using, but the officially released version of the product on the web site.  This is normal activity for a developer in Visual Studio and I can't see how this would go without notice if the product was tested.

    CodeRush: Because ReFactor!Pro had such performance problems, I didn't install CodeRush until later.  Just like Intellisense, its a wash as to whether or not this was a productivity increaser for me.  Most of the time I end up in a situation where I could have simply typed the correct code in less time than with CodeRush.  The problem is that CodeRush keeps inserting extra stuff if I just type the code normally.  Then I have to go back and change what CodeRush inserted, or slow myself down by constantly pressing ESC to dismiss whatever CodeRush wants to insert.  If I was a hunt-and-peck style typer or slow or poor typer, then CodeRush would certainly be of benefit, but for someone who has been touch typing for nearly 30 years its simply noise that gets in the way most of the time.  I think the one that was particularly eggregious was the binding of normal '(' and ')' to apply automatic parenthesis pairs whenever typed.  Amazingly enough, typing just one half of a parenthesis pair is extremely common when editing code.  Having your tool always inserting the "other half" that isn't needed was quite annoying.  I eventually changed the key binding to something that required another modifier key (Ctrl, I believe), but honestly -- you shouldn't ever put magic insertion code bound to normal punctuation that you use all the time in a programming language.  I should just be able to type code unmolested at any time.

    DXCore: This technology seems really promising, but where are the docs?  Where are the tutorials?  Where is the information that shows me how easy it is to do something more than what a VS.NET macro can achieve?  I think I can dimly see the potential through the mist, but the provided information in the "Guide" is weak at best.  I further become disappointed when I drill through links on your web site that take me to a Wiki for DXCore that is so empty even the logo image displayed on every page hasn't been configured.  Is this thing for real?  It seems like I might be able to do great stuff with this, if only I could get complete and accurate information about it along with examples.

    Finally I want to say that the point of this letter is not to slap you in the face, but to bring these problems to your attention in a manner that an individual bug report cannot achieve.  ReFactor!Pro has been of assistance to me in refactoring a large C/C++ code base.  However, I've always had to second-guess each new scenario in which I use your tool because the quality of the results is always somewhat suspect.  A refactoring tool has to be automatic, reliable and always generate semantically equivalent and syntactically valid replacement structures.  When you can trust the refactorings, you can do so much more with the product.  When the refactoring results are suspect, you end up relying on the tool less.

  • Mark Miller (DevExpress)

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    8/20/2007 10:59 AM
    • Top 25 Contributor
    • Joined on 5/2/2007
    • Posts 1,336
    Hi Richard,
     
    Thanks so much for your letter. I really appreciate it when a customer takes so the time to provide this much feedback.
     
    For those who don't know: I'm the guy responsible for the content of our IDE Tools.
     
    First, the good news: For every issue you report, I promise you we'll work hard to get you a fix as soon as possible. My expectation is that you'll find our turn-around time on getting you a fix for most issues to be pleasantly fast.
     
    We just published a 2.5.1 release today with over 30 issues fixed (we'll announce later this morning). Please give that a try and let me know if the performance is more to your liking.
     
    We're improving documentation. The documentation for Refactor! Pro is integrated into the VS help, and we're working to integrate the CodeRush documentation as well. The reason for the stand-alone reader is that a huge amount of that content is dynamically generated based on your VS settings and what plug-ins you have installed. The advantage is that if you install a custom plug-in, or add or change the existing templates, the User Guide will change to reflect that content (we can't really do that yet with help integrated into VS).
     
    With regard to your questions about where to find docs on extending Visual Studio with the DXCore, here are some links:
     
    (scroll down to see the DXCore vids)
     
     
     
    Online articles on DXCore development:
     
     
    Other resources:
     
    With regard to your specific question about developing support for a new language, syntax highlighting, debugging, and Intellisense support will have to be implemented in a VSIP add-in (that's why you're not finding any discussion of these topics). If you want Refactor! Pro to work in another language, you will need to write a LanguageExtension, which consists of a parser, and code generator, and perhaps some binding code (for resolving references). This is a non-trivial, and we recommend you contact support with a bit of information on what you want to support, and we'll get you the information and possibly also a contact email for one of the experts on our team to make sure you have what you need to go forward.
     
    With regard to CodeRush, make sure you have the CodeRush training window up (DevExpress | Tool Windows | CodeRush) so you can see what's available as you move through the code. If there are problems with the templates or inappropriate expansions, please let us know and we'll correct them. Every feature in CodeRush can be tweaked or disabled. If there's something we can improve on there, please let us know.
     
    With regard to the C++ quality issues, we'll look into why so many C++ issues slipped through. I will say that Microsoft's C++ team tested and gave us the green light on a large number of those refactorings, and we've run those refactorings on large public C++ projects and frameworks. I should also point out that C++ is a very challenging language to support with refactoring, primarily because of macro interpretation. We'll look closer at the issues you submitted and if we can find a trend pointing to a hole in our coverage, we'll patch it.
    Over the years we have accumulated over 17000 test cases for CodeRush, Refactor! Pro, and the DXCore, and we devote a sizable percentage of our focus and development time in the pursuit of strengthening quality.
     
    Finally, let me add that while I really welcome open discussions such as this, I would like to also invite you to email me directly anytime you like on any issues you have with CodeRush, Refactor! Pro, or DXCore. If we suck, I want to hear about that so we can stop the suckage ASAP.
     
    You can reach me at markm at this company's domain. Thanks again for the great feedback.
     
    Best regards,
     
    Mark Miller - Developer Express
    C# MVP
    "Richard" wrote in message news:191939@community.devexpress.com...

    Dear Developer Express,

    I've been using your C++ refactoring tool for some time now, mostly version 2.2.2.  First, I'm going to give you the good news.  I've tried out your competitors and you've got the best C++ refactoring support.  SlickEdit wants me to change my entire IDE just to get refactoring support and I'd rather keep using the IDE I already know.  Ref++ doesn't provide any way to evaluate their product without buying it, so I gave them a pass.  Eclipse currently only supports Rename, although its IDE wasn't so hostile that I'd be willing to use it for C++ refactoring if it had better or comparable refactoring support when compared to a commercial tool.

    Now, the bad news.  To be frank, the quality of the C++ support is very weak.  There are numerous fronts on which the quality of lacking and I'll go into these individually.  However, the overall impression I get is that C++ support was tacked on as an afterthought, particularly native C++.  The product seems infected with "manageditis" in that it always wants to insert managed C++ code idioms, or replace my existing native code with managed C++ code idioms.  To be honest, most of the people I know who write managed code use C# or even VB.NET and not C++.  Most of the people I know using C++ are writing native code, possibly for portability reasons among target platforms.  So when your tool keeps assuming that "C++" is equivalent to "Managed C++ for .NET", you really are barking up the wrong tree.  Most C++ code bases are legacy native code bases and not new greenfield development for Managed C++ for .NET.  This is just one example, but the trend repeats itself throughout the documentation which doesn't make it clear if or when refactorings are available in C++.  The same trend follows through all of CodeRush where most of the templates assume I'm writing managed code and insert code that isn't relevant for native C++.

    Documentation: I have to say I'm not too fond of the documentation.  I'd rather have documentation integrated into VS.NET's help facility than have to navigate your odd "Guide" window.  (I just found a bug in its rendering display in 2.5.0 today, while trying to use it.)  Its just different, its not an improvement.  In particular, a lack of a comprehensive table of contents makes navigating the document tedious and painful.  Important information is hidden on pages that have no TOC entry and you have to wander through the other pages in order to find a link to the information you want.  Second, the information in the help pages themselves just isn't very clear most of the time.  In particular, the context in which refactorings are supposed to be available is vague.  Instead of a terse description, there should be examples showing where every refactoring applies.  Today I tried browsing your Guide in order to try and understand how I would add editing support for a new language to VS.NET (syntax highlighting, coloring, supply my own refactorings, etc.).  The current organization of the information makes it very difficult to understand how to even start such a task.  Although I've browsed your web site(s) and forums, I just don't find this information readily available.  It could be that its hidden in there and I'm missing it, but if after searching for some time and not finding it, I'd say that's a documentation bug, particularly if the information is in there.  Information from help files should be easy to find and not require me to go sleuthing.

    ReFactor!Pro: In a short while of using this product, I have found over 50 serious bugs.  Yes, I've reported them all to your support department, but finding this many bugs -- even in simple and common refactorings like Rename -- is disconcerting.  Again, it just feels like the C++ support hasn't even been tested except with baby food cases that always work.  This past weekend I did something very simple to test ReFactor!Pro.  I just sat down in front of a blank source file and attempted to type code that would allow me to exercise each and every refactoring listed in your documentation that could apply to C++.  I ended up filing bugs on almost every refactoring that I tried.  This is not creating torture cases and finding obscure endpoints, this is just exercising the basic functionality offered.  In addition to bugs, there have been performance problems almost constantly.  When I asked about this, the first response I got was an implication that my machine was underpowered for using this tool.  At the time I had 512MB of memory and it was implied that this just simply wasn't enough and my machine was swapping all the time, causing poor response.  To be honest, I was skeptical of this claim, for it was the CPU that spiked when using your products and not the disk drive.  Even running perfmon and monitoring .NET garbage collections didn't indicate excessive garbage being collected.  So I upgraded my laptop to 2GB of RAM and nothing changed.  Your product still made navigating source files noticeably more sluggish than before.  When 2.5.0 came out, the CPU spikes were so frequent that I couldn't even navigate a source file without the CPU spiking on every press of the down arrow key.  Your support department did give me a workaround, but honestly how can something go out the door with such a problem?  This was not a developer nightly build I was using, but the officially released version of the product on the web site.  This is normal activity for a developer in Visual Studio and I can't see how this would go without notice if the product was tested.

    CodeRush: Because ReFactor!Pro had such performance problems, I didn't install CodeRush until later.  Just like Intellisense, its a wash as to whether or not this was a productivity increaser for me.  Most of the time I end up in a situation where I could have simply typed the correct code in less time than with CodeRush.  The problem is that CodeRush keeps inserting extra stuff if I just type the code normally.  Then I have to go back and change what CodeRush inserted, or slow myself down by constantly pressing ESC to dismiss whatever CodeRush wants to insert.  If I was a hunt-and-peck style typer or slow or poor typer, then CodeRush would certainly be of benefit, but for someone who has been touch typing for nearly 30 years its simply noise that gets in the way most of the time.  I think the one that was particularly eggregious was the binding of normal '(' and ')' to apply automatic parenthesis pairs whenever typed.  Amazingly enough, typing just one half of a parenthesis pair is extremely common when editing code.  Having your tool always inserting the "other half" that isn't needed was quite annoying.  I eventually changed the key binding to something that required another modifier key (Ctrl, I believe), but honestly -- you shouldn't ever put magic insertion code bound to normal punctuation that you use all the time in a programming language.  I should just be able to type code unmolested at any time.

    DXCore: This technology seems really promising, but where are the docs?  Where are the tutorials?  Where is the information that shows me how easy it is to do something more than what a VS.NET macro can achieve?  I think I can dimly see the potential through the mist, but the provided information in the "Guide" is weak at best.  I further become disappointed when I drill through links on your web site that take me to a Wiki for DXCore that is so empty even the logo image displayed on every page hasn't been configured.  Is this thing for real?  It seems like I might be able to do great stuff with this, if only I could get complete and accurate information about it along with examples.

    Finally I want to say that the point of this letter is not to slap you in the face, but to bring these problems to your attention in a manner that an individual bug report cannot achieve.  ReFactor!Pro has been of assistance to me in refactoring a large C/C++ code base.  However, I've always had to second-guess each new scenario in which I use your tool because the quality of the results is always somewhat suspect.  A refactoring tool has to be automatic, reliable and always generate semantically equivalent and syntactically valid replacement structures.  When you can trust the refactorings, you can do so much more with the product.  When the refactoring results are suspect, you end up relying on the tool less.



    http://community.devexpress.com//forums/p/56878/191939.aspx#191939

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    10/29/2007 11:58 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    You've had several maintenance releases since I wrote this initial open letter, but I'm sorry to report that your quality is still extremely low.

    I just re-opened several closed support issues that are still not working properly.  On top of that, every refactoring that I try has at least one bug in it; usually more than half of the test cases I apply to your refactorings fail in one way or another (and no, these are not "early experience (beta)" refactorings I'm talking about).

    The number of unit tests that you have is frankly irrelevant if this many bugs are leaking out to the end user.  I can write unit tests all day long until the cows come home, but if I'm releasing code with lots of bugs in it, I clearly wrote the wrong tests or insufficient tests.

    I'll continue to report bugs to you, but your product is a long way from the level of quality where I would recommend it to anyone for purchase.  As an end-user of your product, bugs should be a rare occurrence, not a common occurrence.

    My suggestion is to get an expert level C++ programmer that is not a developer on the product (this is very important; they should know nothing about how your engine is implemented) and have them sit there and write C++ code constructs to which the refactorings should apply and try and break your refactoring engine.  It won't be hard.  When your in-house expert can't break your engine anymore, then perhaps you're getting close to an acceptable level of quality.

    My report card in progress says: 36 tests on 2 refactorings, 14 tests passing. 

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    11/22/2007 10:16 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    160 tests on 12 refactorings, 60 tests passing, 100 tests failing, 4 refactorings passing all tests

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    11/24/2007 5:39 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    316 tests on 18 refactorings, 115 tests passing, 201 tests failing, 4 refactorings passing all tests.

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    11/26/2007 3:31 AM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    368 tests on 21 refactorings, 119 tests passing, 257 tests failing, 3 refactorings passing all tests.

  • Mark Miller (DevExpress)

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    11/26/2007 2:40 PM
    • Top 25 Contributor
    • Joined on 5/2/2007
    • Posts 1,336
    Hi Richard,
     
    I just wanted to thank you for your time and for all the hard work finding and reporting these C++ refactoring issues. It's an impressive amount of work for a customer to undertake, and we're matching that effort with devs assigned to resolve these issues as quickly as possible. Our goal is to have all of these C++ issues resolved by early 2008.
     
    Best regards,
     
    Mark Miller - Developer Express
    C# MVP
    "Richard" wrote in message news:202447@community.devexpress.com...

    368 tests on 21 refactorings, 119 tests passing, 257 tests failing, 3 refactorings passing all tests.



    http://community.devexpress.com//forums/p/56878/202447.aspx#202447

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    11/30/2007 12:00 AM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    409 tests on 25 refactorings, 127 tests passing, 282 tests failing, 2 refactorings passing all tests.

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/1/2007 4:21 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    With 2.5.10:

    493 tests on 30 refactorings, 185 tests passing, 308 tests failing, 3 refactorings passing all tests.

  • drew..

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/1/2007 4:59 PM
    • Top 25 Contributor
    • Joined on 5/7/2007
    • Victoria, BC Canada
    • Posts 1,274

    Wouldn't this be best taken 'off-line' and addressed in more detail with support directly? What is the point of the continued postings?

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/1/2007 8:37 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    Drew Curry:
    Wouldn't this be best taken 'off-line' and addressed in more detail with support directly?

    I have reported over 169 bugs on the product, not counting the bugs I filed initially that are marked as being reported by support staff instead of being marked as reported by me.  The quality problem is not one of just a bug here or a bug there.  Its systemic and endemic throughout the product.  With only 3 refactorings passing all tests out of 30, that's a success rate of about 10%.  That's not a minor issue; its a major issue.  A refactoring tool is not just another piece of software.  Its a tool that needs to be rock-solid so that you can know you're not creating more bugs than you are fixing.  Imagine if your text editor only captured 10% of your keystrokes or only saved your changes 10% of the time.  Would you be content to just file a bug on it and leave it at that?  No, chances are you'd ditch that editor pronto and get a different one.  You may not even bother filing a single bug on it because the quality would be so ridiculously inferior to what you've come to expect out of an editor.

    What is the point of the continued postings?

    As I said in my first post in this thread:

    [...] the point of this letter is [...] to bring these problems to your attention in a manner that an individual bug report cannot achieve.

    If a product is going to be bragging about its "Industry-grade[sic] Quality", then why does it have so many problems?  I prepared a test suite and let the tests speak for themselves.  For each and every bug I file, the test suite is included, so I'm not holding anything over their heads in secret.  Not only are these all tests that they could have written themselves to find these bugs before they make it into the hands of end users, but these are tests that they should have written themselves.

  • drew..

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/1/2007 10:27 PM
    • Top 25 Contributor
    • Joined on 5/7/2007
    • Victoria, BC Canada
    • Posts 1,274

    hi Richard, i will word this carefully to ensure you realize i am not mocking or taking your effort lightly.. My question was not regarding the intent of the thread, but the intent of the *continued* postings. As i mentioned, we get it, and i think you acheived exactly what you had hoped for, and i commend you for that.. I was simply curious regarding the ongoing nature of it..  best of luck with this... drew,,

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/2/2007 4:42 PM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    I post back to update the report card after I've added a significant number of tests (i.e. > 50 tests since the last report card).  I think this information is useful to other users of the product, particularly when a maintenance or other release comes out.

  • Richard

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/28/2007 12:05 AM
    • Not Ranked
    • Joined on 5/5/2007
    • Salt Lake City, UT
    • Posts 12

    With 2.5.11:

    571 tests on 42 refactorings, 241 tests passing, 330 tests failing, 4 refactorings passing all tests.

  • Trevor Westerdahl

    Re: An Open Letter to Developer Express on the Quality of C++ Support

    12/28/2007 3:18 PM
    • Top 25 Contributor
    • Joined on 5/4/2007
    • Portland, Oregon
    • Posts 2,424
    Wouldn't it be more useful if you shared the tests?
     
     
    "Richard" wrote in message news:203026@community.devexpress.com...

    I post back to update the report card after I've added a significant number of tests (i.e. > 50 tests since the last report card).  I think this information is useful to other users of the product, particularly when a maintenance or other release comes out.



    http://community.devexpress.com//forums/p/56878/203026.aspx#203026

    Trevor Westerdahl - DX Squad
    BLOG: http://trevorunlocked.blogspot.com/
1 2 Next
More from DevExpress
Live Chat
Have a pre-sales question?
Need assistance with your evaluation?
We are here to help.
Chat is one of the many ways you can contact members of the DevExpress Team. We are available Monday-Friday between 8:30am and 5:00pm Pacific Time.
If you need additional product information, require pre-sales assistance, or want help with your order, write to us at info@devexpress.com or call us at
+1 (818) 844-3383.