T O P I C R E V I E W |
dreijer |
Posted - Jan 10 2008 : 4:00:33 PM I recently got my hands on the latest version of VAX (1624), but am now experiencing a great deal of issues I hadn't experienced earlier in VS2005 (I'm now using VS2008, but the issues I'm seeing with 1624 seems to happen in VS2005 as well).
I compiled a list of things I've noticed over the past couple weeks. Please note that I'm merely describing the issues I'm experiencing with the latest version and it's supposed to be constructive criticism only ():
- At the end of functions when I hit 'r' to type 'return', in VS2005 this would always be the first item on the suggestion list since I do that quite a lot and it's a very natural thing to do just before the closing bracket in a function. Now, however, many other symbols like RET_SOME_CONSTANT are suddenly also on the list, sometimes taking precedence over the one I want (return). This is often very annoying, since I'm quite used to just typing the first letter and hitting Enter since I know that's what VAX would suggest (and thus it speeds up my coding tremendously)
- There seems to be some major issues with the STL library in the latest version of VAX. Take for-loops, for instance, in which I want to access .begin() and .end() of, say, a simple std::vector. VAX is now often unable to suggest the right method and if I hit begin( it writes BEGIN_ATTRCOM_MAP instead. If I erase the suggestion by ctrl+z (as I always did in VS2005 when VAX would suggest something wrong) and try typing begin( again, VAX once again inserts BEGIN_ATTRCOM_MAP rather than letting me write what I want (this happens for other custom classes too that VAX for some reason is unable to parse). I just rebuilt the symbol database and VAX still isn't able to recognize a simple 'const vector<unsigned long>& someVar' function argument.
- VAX has auto-correction of variable names (to fix incorrect capitalization etc.). The problem I'm experiencing now is that if VAX is unable to parse the objects (which currently happens way too often) it incorrectly corrects the variable name when I hit . and it doesn't matter if I hit ctrl+z to undo the changes. That is, when I hit . VAX changes the variable name to a symbol it knows and I can't avoid VAX auto-correcting the variable name.
- VAX has also shown to have problems parsing virtual base classes. Soetimes, it cannot provide function information for pure virtual classes.
- When creating a new class and I want to write 'private", I start by typing 'pri' and VAX suggests the following: PRI_KEY_FLAG, prime_field, PrimeAndGenerator, and PRIVATE before finally listing the entry I want (private). The aforementioned constants are all part of the Crypto++ library, which I guess the latest version of VAX is now parsing correctly (at least I didn't see these constants interfering with my coding in older versions of VAX). It's clear that the constants are listed in alphabetical order, but they should really fit into the context as well. If I'm defining a class, chances are that I'm looking for 'private', 'protected' and 'public' rather than a random constant in a third-party library like PRIVATE. The same goes for writing parameters to a function call. VAX now suggests class and struct names rather then local variables. For instance, if I have a struct called Game and a local variable called 'game', VAX suggests Game before 'game'. VAX used to handle this better. Furthermore, it feels like all my own symbols are always listed last, rather than first, even though there's a higher chance I want to use my own than a third-party's.
- Often, in VS2008, VAX suddenly starts parsing a file and while it's doing so I'm unable to use Alt+G. For instance, if I go to a source file and change a method in a class, VAX reparses the file but does it so slowly that using the excellent Alt+G shortcut doesn't work even 5 seconds after I made the change (which means I have to fall back on Visual Studio's IntelliSense)
To sum up, the latest version of VAX (1624) has not boosted my productivity, but instead reduced it. There are way too many cases (especially with STL containers) where I experience that VAX cannot auto-complete what I'm typing, or where I have to manually go back and undo the auto-completion, and it has simply become too obnoxious to always keep an eye on the suggestions since they are often incorrect. I'm considering going back to an older version and stay with VS2005 until VAX has become usable again. It seems like the parser has become worse since the last version I used.
I hope other users recognize at least some of the problems to confirm that it's not just my environment that's playing tricks on VAX.
Cheers! |
30 L A T E S T R E P L I E S (Newest First) |
support |
Posted - Dec 01 2008 : 07:50:29 AM case=14457 is fixed in build 1709 |
support |
Posted - Apr 10 2008 : 12:54:29 AM case=11842 is fixed in build 1632 |
feline |
Posted - Mar 15 2008 : 12:02:13 PM You could try editing VA's stdafx.h file, and adding:
#define shared_ptr boost::shared_ptr
I have not tried this here, so I am not sure if it will work or not, but it might.
Editing VA's "StdAfx.h" file is explained in this FAQ entry:
http://docs.wholetomato.com?W302
This file is used to help VA's parser with difficult code, and can be used to work around odd effects. After modifying this file you need to rebuild the VA symbol database for the changes to take effect:
VA Options -> Performance -> General -> Rebuild symbol databases |
dreijer |
Posted - Mar 14 2008 : 11:00:46 AM quote: Originally posted by feline
This thread is really confusing, so I have no idea what problems you are seeing with "Get content from default Intellisense" turned on.
The problem here is that IntelliSense seems to be having some difficulties parsing the IDataMapper class (don't know why). Therefore, if I have the aforementioned "Get content from default IntelliSense" setting enabled, VA doesn't show any symbols when I type ->
quote: Originally posted by feline
I would suggest changing "shared_ptr" to "boost::shared_ptr" for the problem cases.
Unfortunately, I'm not going to modify all my source files for this reason. I've included the boost::shared_ptr namespace explicitly to avoid cluttering the code with unnecessary qualifiers. I guess I'll just have to wait patiently...
In the meantime, take a look at this post: http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=7338 |
feline |
Posted - Mar 14 2008 : 10:25:13 AM Currently I have no estimate on this bug.
This thread is really confusing, so I have no idea what problems you are seeing with "Get content from default Intellisense" turned on.
I would suggest changing "shared_ptr" to "boost::shared_ptr" for the problem cases. This does assume that "shared_ptr" works most of the time. It does in my testing, only failing for an abstract class. |
dreijer |
Posted - Mar 13 2008 : 4:50:59 PM I don't like including the entire boost namespace. That's bad practice and against my coding guidelines. I think we also talked about the issues the ""Get content from default Intellisense" presented.
So, do you have any ETA on this bug? I think it's one of the last issues I'm experiencing. (I'm seeing another one, but I don't know when I should spill the beans :) |
feline |
Posted - Mar 12 2008 : 2:25:45 PM Adding:
using boost::shared_ptr;
was the key step, I am now seeing part of the problem you are seeing. I get a spontanious listbox on "pString" but I have to press CTRL-SPACE to get a listbox on "pMapper":
static void testBoostSharedPtr()
{
shared_ptr<std::string> pString;
pString;
shared_ptr<FelineIDataMapper> pMapper;
pMapper;
}
case=14457
For now the work arounds seem to be to change the using statement to:
using boost;
or to turn on "Get content from default Intellisense" |
dreijer |
Posted - Mar 12 2008 : 12:25:10 PM quote: Originally posted by feline
Would it be possible to get a copy of the class IDataMapper for testing purposes?
The class relies heavily on other header files, but if you don't need to compile it I guess it should suffice?
You said: > using boost;
Try doing like I did with the "using std::shared_ptr;"
quote: Originally posted by feline
How easily does this break? If you restart the IDE does this still work, or are you once more seeing the problem with shared_ptr<std::string> ?
I just need to close the solution and reopen it, and its broken again. I don't even need to restart the IDE. The funny thing is, though, that once I've made it work in one source file, it works in all source files. |
feline |
Posted - Mar 12 2008 : 12:18:35 PM Would it be possible to get a copy of the class IDataMapper for testing purposes?
using VS2005 and VA 1626 I have just added the following class to a header file:
class FelineIDataMapper
{
public:
virtual int getHeight() = 0;
virtual int getWidth() = 0;
virtual int setHeight(int n) = 0;
virtual int setWidth(int n) = 0;
};
and the following code to the matching cpp file:
using boost;
static void testBoostSharedPtr() { shared_ptr<std::string> pString; pString;
shared_ptr<FelineIDataMapper> pMapper; pMapper; }
When typing "->" after "pString" or "pMapper" I get a spontaneous listbox showing the correct items.
I am not sure why VA seems to be having problems with the using boost statement, and so far I cannot reproduce this problem here.
You said:
>> Furthermore, once I've added boost:: in front of the type once, I can delete all of the test code I wrote and just type:
How easily does this break? If you restart the IDE does this still work, or are you once more seeing the problem with shared_ptr<std::string> ? |
dreijer |
Posted - Mar 12 2008 : 10:49:24 AM quote: Originally posted by feline
If you add the code:
boost::shared_ptr<std::string> pString;
pString->|
to a file, does VA correctly list the members of std::string? This works correctly for me, with "Get content from default Intellisense" turned Off.
This works fine for me as well. After a bit of testing it seems adding 'boost::' in front of shared_ptr fixes the issue. This approach works for both std::string and the IDataMapper class. However, I have already written:
using boost::shared_ptr;
at the top of the source file, so I shouldn't need that extra namespace specifier. Furthermore, once I've added boost:: in front of the type once, I can delete all of the test code I wrote and just type:
shared_ptr<string> pString;
and VA suddenly knows all the symbols and displays the suggestion box.
quote: Originally posted by feline
In your last post do you actually mean that:
IDataMapper pDataMapper; pDataMapper->
fails? Is IDataMapper one of your own classes? A quick google is not returning many hits at all.
No, I did mean to say that it worked. IDataMapper is my own class with only pure virtual methods. Without the shared_ptr, I get a list of suggestions, but with shared_ptr I get nothing.
quote: Originally posted by feline
If you show VA View, then place keyboard focus back into the editor, and now hover the mouse over IDataMapper is the correct information displayed?
Yes, the correct information is displayed. Typing -> shows none of those methods, though. |
feline |
Posted - Mar 12 2008 : 10:08:06 AM If you add the code:
boost::shared_ptr<std::string> pString;
pString->|
to a file, does VA correctly list the members of std::string? This works correctly for me, with "Get content from default Intellisense" turned Off.
In your last post do you actually mean that:
IDataMapper pDataMapper; pDataMapper->
fails? Is IDataMapper one of your own classes? A quick google is not returning many hits at all.
If you show VA View, then place keyboard focus back into the editor, and now hover the mouse over IDataMapper is the correct information displayed? |
dreijer |
Posted - Mar 12 2008 : 06:23:24 AM Adding:
#include <boost/shared_ptr.hpp>
did not fix anything. Sorry for the slow reply (once again). Had a deadline to attend to. I'm all yours now though, as I'd really like to get this problem fixed!
If I place the caret into the #include definition, VA lists the correct path to the boost library. Furthermore, I can use Alt+G to go to the correct file. This also explains why writing:
IDataMapper pDataMapper; pDataMapper->
works just fine. |
feline |
Posted - Mar 06 2008 : 4:07:32 PM VA does support the C++ additional include directories.
shared_ptr first, do you have:
#include <boost/shared_ptr.hpp>
in the current file? If not then does adding it make any difference? If you place the caret into the file name what does VA show in the definition field? It should show the full path to this include file. |
dreijer |
Posted - Mar 06 2008 : 05:23:53 AM Addendum: I just added the include path for the boost library to VA. It seems VA has problems seeing that:
boost::shared_ptr<IDataMapper> pDataMapper;
pDataMapper-> should actually display the methods for the pure virtual class IDataMapper. Do you have a similar problem? |
dreijer |
Posted - Mar 05 2008 : 02:50:44 AM Okay, so disabling my anti-virus program (McAfee VirusScan Enterprise) seems to have fixed the latency issues. The DX test solution now works like a charm. The symbols are suggested instantly and all brackets are inserted as they should.
Now, with those problems out of the way I think it's time we move on to some of the other issues I'm having. I'm a big fan of the Boost C++ library, and I'm having some issues getting VA to parse them correct. For instance I have the following piece of code:
boost::shared_ptr<IDataMapper> pDataMapper;
pDataMapper-> The IDataMapper is an abstract class with pure virtual methods only. When I hit -> VA does not display any symbols at all. I have added the include path for the boost library to the project settings (C/C++->General->Additional Include Directories) and the project compiles just fine. The boost::shared_ptr part is underlined in red which leads me to believe that VA doesn't use the include paths specified in project settings. Do I really have to manually add the include path to VA as well? (By the way, if I enable the "Get content from default IntelliSense" setting, VA shows the symbols just fine.)
Consider the following piece of code:
IDataMapper pFoo;
pFoo-> The problem here is that IntelliSense seems to be having some difficulties parsing the IDataMapper class (don't know why). Therefore, if I have the aforementioned "Get content from default IntelliSense" setting enabled, VA doesn't show any symbols when I type -> |
dreijer |
Posted - Mar 03 2008 : 2:33:09 PM quote: Originally posted by feline
I am now totally confused.
In your reply on Feb 24 2008 you seem to say that VA works correctly in safe mode, and that after trying safe mode it started working correctly in normal mode as well.
Did VA work correctly for a few minutes after this test? A few days?
Well, it seems like VA parses the symbols a bit better now, but I still see all the other issues. I also often get functions that are underlined in red even though IntelliSense has no problem finding the symbols.
quote: Originally posted by feline
If VA works correctly in safe mode then this suggests the problem is caused or triggered by some other program. An anti-virus program or other scanner might be causing the problems, we have had (very rare) reports of anti-virus programs causing problems. Excluding VA's symbol database from being scanned often fixes these problems.
I agree that it must be some other program. I'll try to disable my anti-virus scanner and see what happens. |
feline |
Posted - Mar 03 2008 : 09:06:56 AM I am now totally confused.
In your reply on Feb 24 2008 you seem to say that VA works correctly in safe mode, and that after trying safe mode it started working correctly in normal mode as well.
Did VA work correctly for a few minutes after this test? A few days?
If VA works correctly in safe mode then this suggests the problem is caused or triggered by some other program. An anti-virus program or other scanner might be causing the problems, we have had (very rare) reports of anti-virus programs causing problems. Excluding VA's symbol database from being scanned often fixes these problems. |
dreijer |
Posted - Mar 03 2008 : 05:55:03 AM Seems I didn't get an e-mail from the forum telling me there was a new reply, so I apologize for the delayed response.
quote: Originally posted by feline
The difficulty typing, that sounds like either your CPU or hard drive is maxed out. Can you try disabling the IDE's intellisense and see if this typing speed problem goes away?
We already tried this and disabling IntelliSense didn't fix anything. It just made VA work even worse. I'll give Process Explorer a try to see if something is up with the CPU usage, but so far I haven't noticed any problems in Task Manager (as we've talked about before).
quote: Originally posted by feline
In VS2005 the IDE's intellisense will often produce the effect you are seeing when working on a large project, which is why so many of our users disable it.
Ironically, it seems IntelliSense works better for me than VA at the moment. Often, IntelliSense is able to find symbols that VA cannot.
I have a major deadline coming up in a week, but after that I'll try reinstalling VS2008 and see if that fixes anything.
quote: Originally posted by pwaugh
I only say this because a couple of days ago, some new stuff was "discovered" and that cleared up some mysterious cpu usage for me. =)
I don't see any "mysterious CPU usage". |
pwaugh |
Posted - Feb 25 2008 : 4:47:11 PM OMG, I made Ketchup Master!!! You will never know how appropriate that is, haha.
|
pwaugh |
Posted - Feb 25 2008 : 4:42:43 PM Have you recently scanned your system for viruses and spyware? Some hidden nastys may be causing you problems. =)
I only say this because a couple of days ago, some new stuff was "discovered" and that cleared up some mysterious cpu usage for me. =)
|
feline |
Posted - Feb 25 2008 : 08:25:03 AM The fact that the listboxes worked correctly in safe mode seems to prove that there is no parser problem. The fact they are now working normally in normal mode as well... You have already tried rebuilding VA's symbol database. This suggests that something else is causing these problems.
The difficulty typing, that sounds like either your CPU or hard drive is maxed out. Can you try disabling the IDE's intellisense and see if this typing speed problem goes away?
http://docs.wholetomato.com?W133
I have just tried the two zero length read only NCB files in VS2008, and they work as expected there as well. So can you please try that approach. I have lost track of which IDE you are using, but this will work in VS2005 and VS2008.
In VS2005 the IDE's intellisense will often produce the effect you are seeing when working on a large project, which is why so many of our users disable it.
If this does not help then can you please run Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
and turn on the CPU History column. This will help in trying to find out if some process is using all of the CPU time, and which process it is. |
dreijer |
Posted - Feb 24 2008 : 1:38:07 PM Sorry for the delay in testing out VA in safe mode, but I've been busy with other stuff. With that said, VA seemed much more responsive in safe mode and it instantly displayed the suggestion list boxes. I just tested the same solution now that I'm out of safe mode, and the DirectX project worked just fine with regard to the suggestion list boxes. The suggestions appeared instantly for all the functions I tried (very weird!).
However, out of safe mode I still noticed issues with VA where closing function brackets aren't inserted, i.e. a } when I type {. It also often doesn't add brackets after functions once I select the function in a suggestion list box, i.e. Foo -> <Enter> should give Foo(). Finally, I still see the "IDE hang" sometimes when I use auto-complete and I have to wait a couple of seconds for the IDE to become responsive again (and I'll see all the characters I previously entered being written at the same time).
Next step? |
feline |
Posted - Feb 19 2008 : 07:57:37 AM I have already detailed the tests I ran, and I ran them in a virtual machine. So if anything that should be a slower machine, with more overheads, so more prone to seeing the problems.
VA should not be running this far behind under normal circumstances. One possibility is that something about your machine is causing VA problems, some other process is slowing VA down, or blocking it, so it is taking much longer than normal to catch up with your typing. If it is simply some other program / process then safe mode may fix the problem. |
dreijer |
Posted - Feb 18 2008 : 2:33:50 PM quote: Originally posted by feline
I am under the impression you are seeing typing slow right down, to the point where you can barely type. I don't think anyone else is reporting this. Also I cannot reproduce the problems, apparently with the same code as you. If I am really using the same code then this seems to rule out a parser problem.
The slowdown is just a side effect, I think. Like, I mentioned previously how the IDE hangs sometimes when I select the auto-complete suggestion by hitting Enter. The main problem I'm having is that VA doesn't recognize the symbols fast enough. Take the DirectX project we looked at earlier, for instance. When I try to override the functions, I can often type the entire function call without VA suggesting any of the parameters. Let me know if you need clarification on this point. |
feline |
Posted - Feb 18 2008 : 11:45:27 AM It depends what the issue you are seeing is. We have quite a few users reporting "VA does not work properly", but most of these users are reporting large numbers of symbols underlined as mistyped symbols. Something is confusing VA's parser, so it does not understand most of their code. I have finally pinned this down to STL iterators across "complex" types.
I am under the impression you are seeing typing slow right down, to the point where you can barely type. I don't think anyone else is reporting this. Also I cannot reproduce the problems, apparently with the same code as you. If I am really using the same code then this seems to rule out a parser problem. |
dreijer |
Posted - Feb 18 2008 : 11:22:26 AM Sure, I can try that. I seem to recall that other people had similar issues though? I'll give it a swing once I'm done coding for today. |
feline |
Posted - Feb 18 2008 : 11:18:21 AM Do you have time to try a fairly quick test? Do you see the same slow down in the DirectX test project if you reboot your machine into safe mode?
I have never been able to reproduce this, or even get close to it. I am wondering if some other process on your system is a factor. If the problem goes away in safe mode then this would suggest the problem is being caused by something outside of VA and the IDE. |
dreijer |
Posted - Feb 18 2008 : 09:05:21 AM No, I've never used any of the Express versions. I am running both VS2005 and VS2008 Professional on my system, though, but that shouldn't be too uncommon. |
feline |
Posted - Feb 18 2008 : 08:17:01 AM Unfortunately no useful progress so far.
Have you ever installed any of the Express versions of the IDE on your system? One of our developers noted that what you are describing reminded him of this:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2816423&SiteID=1
which points here:
http://blogs.msdn.com/john_pollard/archive/2005/12/21/506433.aspx
and the problem being described here seems to be related to an incomplete uninstall of C# Express. |
dreijer |
Posted - Feb 18 2008 : 07:02:00 AM feline, any news regarding this matter? |
|
|