Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Visual Assist
 Technical Support
 1609: Rename/change signature regression

You must be registered to post a reply.
Click here to register.

Screensize:
UserName:
Password:
Format: BoldItalicizeUnderlineStrikethrough Align leftCenterAlign right Insert horizontal ruleUpload and insert imageInsert hyperlinkInsert email addressInsert codeInsert quoted textInsert listInsert Emoji
   
Message:

Forum code is on.
Html is off.

 
Check to subscribe to this topic.
   

T O P I C    R E V I E W
accord Posted - Sep 29 2007 : 6:33:16 PM
Sometimes after rename a variable or use change signature, VAX gets confused, and start underline with red ~~~~ a several symbol. I have to close and re-open the current file to solve this problem. I cannot reproduce this error. Is it a known bug?
30   L A T E S T    R E P L I E S    (Newest First)
support Posted - Apr 10 2008 : 01:27:05 AM
case=10432 is fixed in build 1632
feline Posted - Feb 27 2008 : 07:31:25 AM
I am not sure when the next build will appear, but I am expecting it soon.
accord Posted - Feb 25 2008 : 11:15:26 AM
When this next build will show up?
Maybe this week?
feline Posted - Jan 30 2008 : 07:32:12 AM
This is listed as fixed internally, so hopefully the fix will show up in the next build.
accord Posted - Jan 29 2008 : 7:10:01 PM
I think it is a regression, so I hope that the bug has high priority
feline Posted - Dec 10 2007 : 09:00:46 AM
Got it. Very easy once I pin the Find References Results window open. I have always had this set to autohide during my tests, which is why I was never able to reproduce this until now:

case=10432

Thank you for your patience!
accord Posted - Dec 08 2007 : 07:36:13 AM
I'm back.

I have done some tests.
Tried to disable my virus killer, uninstall some programs, uninstall my other add-in, tried to modify some IDE settings to the default and tried the steps with 1623 with no luck.

But yesterday accidentally found a case where the steps are not caused the parser failure.

The difference: I used the IDE's autohide feature in VS2008. So, after step 19, the docked "VA Find References Results" hiding itself, and the IDE is giving the focus back to the editor window immediately, and the parser could parse the header. Tried with docked window: failure again. Tried with floating windows: working.

So I figured out that VAX like if the focus is in the editor when it is trying to reparse the header. So I tried a little trick: when I used the docked window, I have done step 19 and 20 VERY fast (pressed ENTER, ESC, before VAX tried to reparse the header) to give the focus to the editor VERY fast. The result: everything is fine now. Header reparsed.

So to reproduce the bug, you may need to follow modified steps: First of all you need to keep "VA Find References Results" docked, and turn OFF autohide on it. Before step 19 wait some seconds and before step 20 wait about 5-10 second.

After step 19 the focus is in the docked "VA Find References Results". While you are waiting, VAX will lose the color of cSomeClass. After then, when you press ESC (step 20), the underline will finally happen (I hope at least )

(I docked the Find References Results window under the Editor window. I am using 1 monitor)
feline Posted - Dec 07 2007 : 08:04:26 AM
We have a report here: http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=7018
which reminds me of what you are seeing here.

I have asked our developers about this, to see if they have any ideas:

case=10381
feline Posted - Dec 04 2007 : 2:54:08 PM
Firstly apologies for the delay in getting back to you about this, support has been very busy the last few days.

I have followed these instructions very carefully, twice now. The first time it all worked perfectly, so here are the steps I took on my second run.

0a. Start VS2008 RTM - it shows the start page
0b. Enter VA Options and go to Performance node
0c. Press "Rebuld symbol databases" button
0d. Press Clear history, cache and temporary files button
0e. Press OK button on VA options - back to VS2008 start page
0f. Close VS2008
0g. Delete the project "q" directory from the folder "C:\\Documents and Settings\\feline\\My Documents\\Visual Studio 2008\\Projects\\"

1. Start VS2008
2. Click File/New/Project - done all with mouse
3. Click Win32 (on the left) - the child of "Visual C++" - done with mouse
4. Click Win32 Project (on the right)
5. Type "q" into the Name editbox. - I used mouse to select existing text and then typed "q", replacing it
6. Click OK
7. Click Finish.
8. Click into the source (to give focus)
At this point I am waiting, watching a CPU meter (sysinternals Process Explorer) and hard drive activity, and waiting for VA to finish all parsing, since it is rebuilding its symbol database.

9. Press Alt+O
10. Press Ctrl+End
11. Press Enter
12. Paste this:


class someclass {
void SomeFunction();
};


13. Right click on SomeFunction - I am getting the IDE context menu with the top two entries from VA
14. Use Create Implementation
15. You are now in the cpp. Right click on SomeFunction
16. Use Change Signature
17. Use "int kkk" as parameter
18. Press OK to accept window
19. Press Enter to accept dialog which says VAX detected a change in parameters.
20. Press ESC to Give back focus to editor.

At this point I waited about 1 minute, no underlining at all appeared, so I added "banana = 2" to the function body, giving me the code:

void someclass::SomeFunction( int kkk )
{
	banana = 2;
}


after perhaps 30 seconds "banana" was underlined as a mistyped symbol. This is the only thing that is underlined. I am still sitting in the cpp file. Both the cpp and .h files are shown as modified. I have not changed files at all, not told VA to reparse things, done nothing "interesting" at all.


All right, lets look for less obvious triggers.

How many CPU's does your machine have? I have been running these tests on a single core machine, but I have a 2 core machine available.

Can you export your VA and IDE settings and send them to me please? I can then import them on my test system, and see if this makes any difference.

VA Options -> Performance -> Export Settings
IDE tools menu -> Import and Export Settings -> Export selected environment settings

Please submit the files via the form:

http://www.wholetomato.com/support/contact.asp

including this thread ID or URL in the description, so we can match it up.

What anti-virus software are you using? If you disable this temporarily does this make any difference?

I am trying to think of anything that might realistically effect how VA is working for you. You keep on seeing this problem, but I just cannot seem to reproduce it, no matter what I try.
accord Posted - Nov 30 2007 : 7:27:30 PM
Feline: I tried to rebuild database, and I can still reproduce the problem with the steps in post "Posted - Oct 20 2007 : 5:10:48 PM"

So, let's find what's the difference with my and your steps.
I am now try to generate even more detailed steps:
I am now using C++, WinXP SP2, VAX 1619, VS2008 RTM Professional, I have NOT renamed feacp.dll

1. Start VS2008
2. Click File/New/Project
3. Click Win32 (on the left)
4. Click Win32 Project (on the right)
5. Type "q" into the Name editbox.
6. Click OK
7. Click Finish.
8. Click into the source (to give focus)
9. Press Alt+O
10. Press Ctrl+End
11. Press Enter
12. Paste this:

class someclass {
    void SomeFunction();
};

13. Right click on SomeFunction
14. Use Create Implementation
15. You are now in the cpp. Right click on SomeFunction
16. Use Change Signature
17. Use "int kkk" as parameter
18. Press OK to accept window
19. Press Enter to accept dialog which says VAX detected a change in parameters.
20. Press ESC to Give back focus to editor.

Now someclass::SomeFunction should be underlined ~~~~

I hope that this is now working for you.
This problem is very frequent for me.

Additional info:
When this happen, if you press Alt+O to switch to the header VAX will reparse the header and if you press Alt+O again to switch back to cpp the underline ~~~ will go away.
My steps are using new project and very small files, but in larger files you can see the "VA X: Parsing c:\\somepath\\SomeHeader.h" in this case. So it indicates that change signature sometimes "forget" to parse the header file.

Reparsing the cpp does not helps, reparsing the header by pressing Alt+O always helps.
accord Posted - Nov 15 2007 : 3:21:25 PM
As I wrote, I seen the original problem (VAX underline everything) but I can only reproduce the "flashing" status bar.

I hope, you may able to find some "interesting" thing if you will looking into this effect, maybe this "bug" causing the very rare parser break. Maybe.

One difference in my tests: I have done my tests in the cpp file.
quote:
What is strange that VAX parse 6 or more times the cpp, and then quickly the header, but only once...
Go to Top of Page


The function is declared in the header, and implemented in the middle of the cpp... (and it has an about 10 lines body)
I am only renaming the only one parameter in my function (by change signature). It maybe a difference, because rename do a change signature and then a rename. (I can undo in 2 separate steps)
feline Posted - Nov 15 2007 : 09:11:42 AM
Using win2k, VS2005, VA 1616 and a C++ Header file 1509 lines long. At line 933 I have added:

class testRenamingInThis
{
private:
	void testFunctionOne();
	void testFunctionTwo(int nParam1);
	int getResult(int nLength, int nWidth);
};

So this should be a reasonable test case. I am using the VAssistX -> Refactor IDE menu to trigger Change Signature. Running Change Signature on these three member functions, just making random changes, adding and removing parameters, etc. Sometimes I am seeing one status bar message flash by, and sometimes I am seeing two status bar messages flash by. When I get two messages the first one appears, it disappears and then a moment later the second message appears.

I have taken a movie of what I am seeing, and by stepping through the movie I have checked that both messages, when I get two messages, are the same.

I have run Change Signature at least 20 times now, and I still only get a maximum of two messages on the status bar.

Are you seeing any other problems? Or just these extra status bar messages?
accord Posted - Nov 14 2007 : 4:00:42 PM
The message appear and disappear from the status bar this many times, very quickly after several change signature on the same function, in the middle of a larger file.

What is strange that VAX parse 6 or more times the cpp, and then quickly the header, but only once...
feline Posted - Nov 14 2007 : 2:02:40 PM
I am not sure the status bar is 100% accurate way of watching for VA reparsing the file. I have two reasons for thinking this:
a) if the file is parsed very quickly it is easy to miss the status bar message
b) sometimes VA has to "fight" with the IDE over writing to the status bar

When VA does not seem to parse the file is VA applying the correct syntax highlighting to the new parameter name? If you have local symbols in bold turned in it is easy to see if VA knows about the new parameter or not.

Seeing the file parsed 6 to 10 times is a lot more confusing. Did the message appear and disappear from the status bar this many times, moving very quickly? Or was this over 30 seconds or longer?

I would only expect VA to parse the file once after a single Change Signature change.
accord Posted - Nov 14 2007 : 10:00:48 AM
I have new informations for you.
First of all: I am now using 1616.

I tried your tip: after the parser problem I undid the changes, restarted the IDE, but after that the problem cannot be reproduced.

A more interesting thing: try to use change signature several times (5-10x) on the same function (in a cpp) to rename it's incoming parameter: sometimes VAX do not reparse the file, sometimes VAX reparse it about 6 to 10 times!!! It is normal?

(Try in the middle of a larger file (my file has 1239 lines) to see the "VAX reparsing file" in status bar.)

Maybe what I seen is normal, but maybe helps.
feline Posted - Oct 24 2007 : 3:51:39 PM
about 15 Change Signature tests, plus between 15 and 90 tests for each of the other refactoring operations. Rename has the most, currently about 90 tests.

A lot more refactoring than in your "make a new project" test, but less than refactoring solid for several hours.

How many lines of code, approximately, do you have in these files? For "normal" size files I would expect VA's parsing of the file to be nearly instant, so you are quite unlikely to be navigating during the parse.

No one else has reported anything like this yet, but hardly anyone was using the builds between 1609 and 1614. We might start to get more reports of this now 1614 is posted.
accord Posted - Oct 24 2007 : 1:59:46 PM
Ok, will try

How many change signature do your automated test have? One, or more?
I have worked hours before the break, so maybe the parsed already was tried. Additional info: I am using a lot of "View.NavigateBackward" and "View.NavigateForward" during my work (IDE's feature, invoking by key)
Sometimes maybe I am switching while VAX reparsing the file.
feline Posted - Oct 24 2007 : 1:54:23 PM
*puzzled* *concerned*

I ran both VA 1613 and VA 1614 through a load of automated tests before they were posted. This is testing the release build, running the GUI, and the tests run a pile of refactoring tests, Change Signature included, and they did not show up any problems.

This suggests that Change Signature on its own is not enough to trigger the problem.

Once you find this breaks, if you undo the Change Signature, restart the IDE, and redo the same Change Signature do you still see the problem? Or does it now work correctly?
accord Posted - Oct 24 2007 : 12:53:08 PM
The same with 1614...

Do same change signature in cpp, and the parser will break.

Currently I have stop the find references triggered by change signature, and experienced that the header was not parsed correctly again...
Maybe caused by stop, but I do not think so...

What is strange is, not every change signature is buggy, but I cannot find the pattern so far. Maybe some timing problem?

Update: VAX's completion listbox (after ->) also breaked for this header: only 2 frined class xy was offered... Ctrl+Space, manual reparse also do not helped. I have restarted the IDE (without symbol rebuild), and now the full list is back!
feline Posted - Oct 23 2007 : 4:58:21 PM
For what it's worth I am also unhappy about this. Can you try 1614 please and see if this helps:

http://forum.wholetomato.com/forum/topic.asp?TOPIC_ID=6848

This contains a fix for a bug where Extract Method upsets the parser, so there is reason to hope it will fix this problem.
accord Posted - Oct 22 2007 : 3:32:20 PM
I am not happy.

Just to verify I am creating new "win32 project" and NOT "win32 Console application".

I keep checked "create directory for solution", so this is the default.
I am press finish in "win32 application wizard" without any "next".
I am restarting visual studio 2005 sp1 (running on winxp sp2, no other addins) before I do the steps.
Not using full rebuild of symbol database. So the database maybe already corrupted, before I do the steps

Now, I am using 1608 and this version is working fine. (stable AND cannot reproduce the problem with my steps) What is strange, the problems with 1609-1612 is exist in more the one project, so the problem is NOT with the project. I am using custom defines in VAX's stdafx.h.

Feline: can you try a lot of (10-30) change signature, rename, create implementation and create declaration in a larger project? (at least 200-300 files)
I can break the parser very easily in more then one computer so it have to "work" for you also.

I have deleted all my settings in document and settings before installed 1609, so I am using the very default settings. Ok, changed some coloring, turned off hovering refactoring icon and spell checking in comments, but that's all. I am using some custom color by color picker dialog. But I don't think it is related to my problem
feline Posted - Oct 22 2007 : 1:18:29 PM
Very clear instructions, thank you for this

How easily can you reproduce this?
Are you changing any of the defaults when you create this project?
If you undo the changes, so you are back to the default project as created, close and reload the IDE, can you reproduce the problem? I actually did this here, to double check without making a new project, and still no unexpected underlining.

Using win2k, VS2005 SP1, VA 1609 I have followed the instructions quite carefully, but there is no unexpected underlining. I am still sitting in "q.cpp", having just run Change Signature, so I added:

banana = 2;

into the body of the function, to make sure underlining of mistyped symbols was turned on and working. "banana" is underlined, but the class name and function name are not underlined.

Alt-g on the function name takes me to the header file, and alt-g a second time takes me right back to the cpp file.

The only thing I can think that I did differently is adding a blank line after the class and the generated function implementation, or something in the new project wizard - I accepted all of the defaults here except for the directory, I placed the solution into:

C:\\src_2005\\
accord Posted - Oct 20 2007 : 5:10:48 PM
I have a good, and a bad news.

The bad news is that my reinstall solution was momentary. Also tried to uninstall 1612 and install 1609, but did not helped.

The good news is that I can now reproduce the problem in a clean new project. The steps are:

0. Install VAX 1609
1. Create a new win32 project with name q.
2. Switch into q.h by alt+o
3. type the following:
class someclass {
    void SomeFunction();
};

4. Use create implementation on SomeFunction.
5. Now we are in the q.cpp. Use change singature on SomeFunction: change it to
void someclass::SomeFunction(int kkk)

(so the difference is the new parameter "int kkk")
6. now VAX underlines someclass and SomeFunction.

quote:
Feline wrote:It is almost as if VA is not able to get hold of the time to parse it. That would explain what you are seeing.

You can wait a year, but file will not be reparsed.
quote:
Sean wrote:If this happens again, please try the following: page down, page up (without manual reparse). This will tell us whether it is a window validation problem vs a parse timing problem.

Won't help.

...and also goto will not work on someclass and SomeFunction.

Sometimes VAX forget to re-parse the header (or reparse it incorrectly)?
This was an example, case=9365 is an another. But there are other triggers also. Other results may takes place: sometimes (rare) change signature overwrite the incorrect block in the header. It means that it overwrites some other function's signature.

I hope these cases are the same, so fixing one of them will fix all others also.
...and also Hope that the steps will work for you...
(Now I go back to 1608. If I am right, the regression happened in 1609)

ps: I have 3 reasons why I am talking about header re-parse faliure:
1. if you put
int apple;

apple;

into
void someclass::SomeFunction(int kkk)
function and then you use goto over the second apple, VAX will go to apple's declaration.
2. Reparse won't help.
3. Reparsing the header will help.
sean Posted - Oct 17 2007 : 5:41:27 PM
Clear now - when threads get this long my eyes tend to glaze over...
accord Posted - Oct 17 2007 : 5:33:57 PM
Sean: first, I have noticed a problem that sometimes broke the parser:
quote:
Sometimes after rename a variable or use change signature, VAX gets confused, and start underline with red ~~~~ a several symbol. I have to close and re-open the current file to solve this problem. I cannot reproduce this error. Is it a known bug?


While I tried to figure out how can I reproduce it, the time has passed and I changed to 1610, and later to 1611, but still experienced my main problem:
quote:
When VAX stops to work on a file, alt+g also does not works on a several symbol. So this is NOT a screen refresh problem.

Not only reparse current file, but pressing Alt+O twice also great for workaround. I think sometimes VAX forget to refresh (properly) the file.

I am using 1611.


Later I found something (case=9365) and I hoped it is related to my bug. But after I reinstalled VAX my original problem has gone. (So case=9365 was unrelated to my original problem.)
sean Posted - Oct 17 2007 : 4:48:59 PM
oh - I just noted that your original report was about 1609. The regression that was identified by the Extract Method example was in 1610, 1611 and 1612.
sean Posted - Oct 17 2007 : 4:47:41 PM
It most definitely was a regression! Your Extract Method example nailed it for us. If you are using 1611 or 1612, then the problem is present.
accord Posted - Oct 17 2007 : 3:30:01 PM
I have uninstalled, and then installed VAX again, and now it is working perfectly!

I tried to install 1610 and 1611 after 1609, but it doesn't helped. I know the "clear symbol database" and "rebuild symbol database" trick, but does not helped at all. The parser failed about every 5 minutes, but now 1611 and 1612 also works perfectly, so it is not a regression!
feline Posted - Oct 15 2007 : 12:23:50 PM
I am able to reproduce this quite easily with VA 1611, but so far I cannot reproduce it with VA 1609.

case=9365

I have not noticed anything like this before, but I have not been using Extract Method, I have been working on other areas of VA.
accord Posted - Oct 12 2007 : 11:31:51 AM
Sorry, forgot to mention: I am using C++, so when I trigger, it will create the new function in the header, so you will find yourself in the header automatically (which is not good, so I want to use move implementation to source immediately, almost always)

Is there any connection between the function where you used Extract Method and the function where you are using Move Implementation to >Source File?

Yes I want to use it on the newly created function.

Which file (the cpp or header) does VA no longer understand?
Cannot use move implementation to source on the newly created function, created by VAX into the header.

So it is easy: I want to use extract method in the cpp, and I want to place new function in the cpp also (I don't want to include everything into the header AND I do not want to create all my functions inline). So, to extract a method into the cpp requires 3 steps:
1. Extract method
2. Move implementation to source
3. Move to new function from the end of the file by VA Outline.

The problem is with the second step, because move implementation to source do not works usually until double Alt+O (faster then selecting reparse current file from the menu)

But don't you, or developers experience similar things?
For example sometimes when I use goto, and then later use IDE's Navigate Backward, a lot of symbol will be underlined. So occurs even without editing the file...

© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000