Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 Constantly reparsing
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

Barktroll
New Member

7 Posts

Posted - Jul 25 2017 :  03:56:16 AM  Show Profile  Reply with Quote
I'm currently working with Unreal Engine 4, where generating project files/solutions is a part of the daily routine, and almost every single time VAX decides to reparse the entire solution despite nothing having changed regarding which source files are in the solution or their content.

So my question is, what does VAX check for when it decides to reparse a solution? Helping me understand this might let me fix or work around the issue in some way.

I've noticed that UE4 always generates a random GUID for the projects/solutions. Is this something that could cause VAX to think that it's a new solution and therefore needs to reparse everything?

I should note that I've turned off the IntelliSense database completely (to avoid double parsing), and I've experimented with all the performance tips regarding VAX thread priority and max number of cores used. I should also note that disabling "Parse all files when opening a project" is not an option, since I greatly depend on features such as symbol search.

EDIT: I forgot to mention I'm running VAX v10.9.2223.0 with Visual Studio 2017 (15.2)

Edited by - Barktroll on Jul 25 2017 03:57:44 AM

feline
Whole Tomato Software

United Kingdom
18749 Posts

Posted - Jul 25 2017 :  09:26:57 AM  Show Profile  Reply with Quote
Are you generating new project / solutions via Unreal Editor, or some other method?

The basic problem is that most of the time the Unreal Engine is a stable library, as far as VA is concerned. But since it is placed inside the solution, we don't know it is a stable library, we assume it is part of your newly created / updated solution. If the Unreal Engine project could be separated out so we could tell VA this was a stable library, then this would make the parsing a lot faster. However this would require a different approach to generating the solution.

We are looking into ways to speed up the parsing of Unreal Engine projects, but we are still investigating how best to do this at the moment.

zen is the art of being at one with the two'ness
Go to Top of Page

ChrisG
Whole Tomato Software

USA
299 Posts

Posted - Jul 25 2017 :  4:56:23 PM  Show Profile  Reply with Quote
"... what does VAX check for when it decides to reparse a solution?"

- VA will check the projects included in the solution and if a project has been added or removed or renamed, the solution will be reparsed.
- VA will also check the last modified times on source files. So if your build process includes a Perforce clean and resync, for example, that may trigger VA to reparse many files.
- If the VA parse was incomplete (IDE was shut down / a crash occurred etc.)

I'm going to try and reproduce your issue on my system, and have a few questions.

- When the issue happens, did you regenerate your solution files by right-clicking on your .uproject -> "Generate Visual Studio project files"?
- If so, does the reparse happen every time you regenerate that way?
- Are you using the Git-Hub UE4 source distribution, or are you using the binary UE4 distribution installed through the Epic Games Launcher?

We could rule out a lot of possibilities by comparing the .sln and .vcxprojs before, and after you regenerate them (assuming an errant VA reparse happens). Would you mind creating copies of the your .sln and .vcxproj files before, and after a regeneration that causes a VA reparse, and sending them to me?

You can submit files here, please mention TOPIC_ID=13973.
https://www.wholetomato.com/support/contact.asp

Additionally, a VA log capture of the reparse would be very helpful. Here are the steps to do so.

- Open your game .sln, wait for the VA parse the finish.
- Close all IDE windows.
- Regenerate your game project .sln and .vcxproj files.
- Set the value of "Logging" in the VA registry settings to 1, as described at the following page.
https://support.wholetomato.com/default.asp?W305
- Open your game .sln, wait for the errant VA parse the finish.
- Send me a copy of the VA .log files. The location of the files are described at the previous page.

I am going to try really hard to repro this and get this fixed for you and others who may be experiencing the same issue. We have had issues reproducing this before, so that is the reason I am asking you for the extra data.

Thank you for all your trouble.

Edited by - ChrisG on Jul 25 2017 4:58:17 PM
Go to Top of Page

Barktroll
New Member

7 Posts

Posted - Jul 26 2017 :  5:09:54 PM  Show Profile  Reply with Quote
In true Murphy's Law fashion I'm of course unable to reproduce this on command now. :(

The mere act of generating the project files doesn't seem to be what triggers the reparse, even if I delete the project and solution files completely and generate them again. At least it's not a 100% repro if that is the cause of it.

I was also incorrect when I stated that UE4 always generates a random project GUID. As far as I can tell the GUID seems to persist if there are previous project files available when generating new ones, if this matters to you.

quote:
VA will check the projects included in the solution and if a project has been added or removed or renamed, the solution will be reparsed.

Does VA keep track of projects through their actual textual name, or through some other means?

To answer your questions:

We have our own source build of UE4 (GitHub version), so for the engine itself we make use of the GenerateProjectFiles batch file in Engine/Build/BatchFiles. From that we make our own "installed" version of the engine with which the game projects then generate their project files, using the normal flow of "Generate Visual Studio project files" in the .uproject context menu.

I've experienced these spurious reparses with both the engine and game project solution files, in both installed and GitHub versions of the engine, so for the sake of your testing I'd say either combination is fine. A game project solution with the installed version of the engine is probably easier to get setup.

Since I can't reproduce it faithfully right now I'm unable to provide you with the before-and-after project files and logs you requested. I'll make sure to get those to you as soon as I am able to find a reliable repro case for it.
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Aug 01 2017 :  9:23:12 PM  Show Profile  Reply with Quote
>Does VA keep track of projects through their actual textual name, or through some other means?

Files are tracked by full path and content hash. If sln file is identical, then regeneration should not cause VA cache to be invalidated. A log would help us identify whether the cache is stale or non-existent.

Something to keep in mind is that the VA cache is not shared -- so you if simultaneously run multiple instances of VS, then you may see VA doing a full parse in a secondary instance even though the cache in the primary instance is up-to-date.
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000