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
 exclude projects?`
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

ebiaccarino
New Member

Germany
6 Posts

Posted - Sep 12 2014 :  06:50:13 AM  Show Profile  Reply with Quote
Hi

we're working with a single a solution with over 100 projects (VS 2008) and the latest VA.

It takes very long to rebuild VA database and the VA suggestion lists contains so much items that finding symbols via VA is less effective than using plain file search.

Most of our developers are only interested in symbols of several projects.

Is it possible to define a list of projects (or directories) that should be parsed?

regards,
Silvio Iaccarino

feline
Whole Tomato Software

United Kingdom
19025 Posts

Posted - Sep 12 2014 :  8:41:05 PM  Show Profile  Reply with Quote
Unfortunately not really. VA is designed to parse the entire solution. There are some things we can do to try and help though.

Firstly, do you work with:

VA Options -> Listboxes -> Get content from default Intellisense

turned On or Off? If this is turned Off then disabling the IDE intellisense parser may make quite a bit of difference, since there will only be one parser working, not two. Doing this is explained here:

http://docs.wholetomato.com/default.asp?W133

Another thought it to turn Off the option:

VA Options -> Performance -> Parse all files when opening a project

this is useful in exactly your situation, a large solution that takes a lot of parsing.

When searching for a symbol, are you able to filter the list on a class or namespace name, as well as the symbol name? If you use a space you can enter more than one search term, so "classEditor addText" will search for both terms, in any order. This should help you to locate the symbols you want quite quickly, even in a very large solution.

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

ebiaccarino
New Member

Germany
6 Posts

Posted - Sep 15 2014 :  02:22:38 AM  Show Profile  Reply with Quote
I have renamed feacp.dll, disabled external file watch and parsing while opening.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19025 Posts

Posted - Sep 16 2014 :  2:09:52 PM  Show Profile  Reply with Quote
Had you done this before, or have you only now done this?

If you have now done this, how has this effected the parsing time when you load the solution? I would expect this to have cut the parsing time right down, so hopefully this has been the effect.

Is using the class name or namespace name doing anything to help you search in the Find Symbols dialog?

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

ebiaccarino
New Member

Germany
6 Posts

Posted - Sep 17 2014 :  03:39:12 AM  Show Profile  Reply with Quote
Done it yet - performance is better now but the solution is not satisfying - the main problem is not solved - if I want to update symbols I must update the whole solution or file by file - and this takes very long - even on SSDs and a very fast PC.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19025 Posts

Posted - Sep 18 2014 :  11:53:11 PM  Show Profile  Reply with Quote
How many files do you have in your solution?

If you open VA's Open File in Solution dialog (Alt-Shift-O) the title bar contains two numbers. The first number is the number of files currently listed, which changes as you filter the list. The second number is the total number of files in the list, which is normally the number of files in your solution. What is this second number?

When you say a very very long time, can you give me an estimate of how long this is? 2 minutes? 3 hours? a week?

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

ebiaccarino
New Member

Germany
6 Posts

Posted - Sep 19 2014 :  02:24:56 AM  Show Profile  Reply with Quote
Roundabout 230000 Files, ~ 120 projects, update of symbol database last over an hour on an SSD (feeling, not really measured yet).

Edited by - ebiaccarino on Sep 19 2014 02:48:25 AM
Go to Top of Page

ebiaccarino
New Member

Germany
6 Posts

Posted - Sep 19 2014 :  02:49:34 AM  Show Profile  Reply with Quote
But performance is not the main issue - to many ambiguous symbols is a much bigger problem.
Go to Top of Page

foxmuldr
Tomato Guru

USA
417 Posts

Posted - Sep 19 2014 :  07:29:51 AM  Show Profile  Reply with Quote
When VAX is disabled, how does Visual Studio itself perform with such a large number of projects and files?

Best regards,
Rick C. Hodgin
Go to Top of Page

ebiaccarino
New Member

Germany
6 Posts

Posted - Sep 19 2014 :  08:02:24 AM  Show Profile  Reply with Quote
bad
Go to Top of Page

foxmuldr
Tomato Guru

USA
417 Posts

Posted - Sep 19 2014 :  10:26:33 AM  Show Profile  Reply with Quote
I had written you a response the other day, but deleted it before posting waiting to see what the VAX staff said.

My thinking was this:
Is it possible for you to aggregate the many projects into only those you need to access for a particular task?

For example, you have your 120 projects, 230K source files, and then you develop a simple app which allows you to select what you need to for a given task. That app would ask you for class names, modules, projects, etc., and you choose from the list, and it would create a project for you which had only that subset.

You might be able to figure out and use the NCB file created by VS itself, and to parse VAX's own sub-directories for data in some way. It would prevent you from having to duplicate the effort on your own. You could also find dependencies that way.

Such an option may not work that way for you. But, it was an idea I had when I saw how many projects and files you have.

If you don't mind my asking... what type of project is this? I believe the Linux kernel is well under 100K files, with about 16M lines of code.

Best regards,
Rick C. Hodgin

Edited by - foxmuldr on Sep 19 2014 1:39:48 PM
Go to Top of Page

foxmuldr
Tomato Guru

USA
417 Posts

Posted - Sep 19 2014 :  10:43:47 AM  Show Profile  Reply with Quote
Just now having a look at the .db files in the C:\\Users\\username\\AppData\\Local\\VisualAssist\\vs9_3\\ directories, for example, it seems like they could be easy enough to figure out. They're in text with some obvious layouts with field delineation characters.

Here's a sample. The � character seems like a field delineation, and the values there like 2e030db relate to the fileids.va file in the parent directory. I would think with a small project you could figure out the entire structure, and then replicate that logic through to a full-sized project without writing any parsing algorithms yourself, except using that which VAX already generates for you, and then after you're done look into the updated files for your temporary project and put those new entries back into the original files:

0�fileid:2e030db�1ce62a1.a2bee800�0c000000�20041�2e030db�0
1�:gxFontBase_8x16�u8 gxFontBase_8x16[] =�0c000004�840�2e030db�1
1�:gxFontBase_8x16�u8 gxFontBase_8x16[] ={...}�0c000004�10840�2e030db�2
1�:gxFontBase_8x16�u8 gxFontBase_8x16[] =�0c000004�10840�2e030db�103

Best regards,
Rick C. Hodgin

Edited by - foxmuldr on Sep 19 2014 10:47:30 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19025 Posts

Posted - Sep 19 2014 :  7:28:07 PM  Show Profile  Reply with Quote
foxmuldr, trying to hack apart VA's symbol database, please, don't even think about going there. The database format changes over time, this is never going to be supported, and I don't even want to think about what might happen if you try.

ebiaccarino, would adding the ability to filter the Find Symbol dialog by Project help help enough here? This seems like a reasonable extension to VA, but I am not sure if, or how quickly this would be added to VA. Unfortunately adding this would not do anything to speed up parsing.

For now, have you considered making a "working on" solution, which just holds the projects that you are interested in, rather than all 120 projects? You would obviously still need to rely on the full project for full builds.

Is your source code broken down into separate directory trees? I recently produced a VB script file to generate VS2010 and above project files, for editing, from all C++ and C# code files in a directory tree. The solutions are not "elegant", and are not expected to compile, but they are useful to give VA a working set of files to parse, to help you with editing. Would a version of this script that output VS2008 format solution and project files help here?

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

foxmuldr
Tomato Guru

USA
417 Posts

Posted - Sep 19 2014 :  7:45:56 PM  Show Profile  Reply with Quote
feline, how about adding a checkbox option in VA's options which says "Only scan projects found in projects.va?" and if projects.va exists, then only scan those named projects and not everything in the solution?

Edited by - foxmuldr on Sep 19 2014 8:16:35 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19025 Posts

Posted - Sep 19 2014 :  10:48:42 PM  Show Profile  Reply with Quote
What is "projects.va"? If you are suggesting excluding projects from being scanned by VA, then the result is no knowledge on VA's part of any of the excluded projects, and quite a lot of unknown symbols, when ever you reference a symbol from a different project.

Given the number of support enquiries about unknown symbols, I am not keen to add more unknown symbols if it can be avoided. If the main problem is searching for symbols, rather than speed, then better filtering in the Find Symbol dialog makes more sense, and sounds more widely useful.

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

foxmuldr
Tomato Guru

USA
417 Posts

Posted - Sep 20 2014 :  06:50:37 AM  Show Profile  Reply with Quote
Projects.va would be a new file you'd support, one created by the user to indicate the names of projects to parse. You could also create an exclude file called xprojects.va (or some other name) which is a list of projects to NEVER parse. If I recall correctly you may already have a feature which does that as I seem to remember a post about excluding certain projects. I could be wrong about that though. Can't remember.

Only those developers who have conditions like the OP (where parsing everything presents an unworkable issue) would use projects.va or xprojects.va. Others would leave it as it is when standard installed. However, when projects.va exists, or xprojects.va exists, the line entries in those files would be considered and everything else would be ignored.

You could add another checkbox item which says "Ignore unknown symbols under projects.va constraint?" to prevent the unknown items from being highlighted.

Such an implementation would simply setup a new operating condition inside of VAX where everything that is known is available for consumption, but everything that is not known is recognized to be under the guise of (1) it is truly unknown, or (2) it's unknown because its definition exists in a project which is not currently parsed, and both of those are okay under this constraint. :-)

It should be a simple matter to add the projects.va and xprojects.va. In your parsing algorithm where you scan each file, do a search to see if that file is part of an included or excluded project, and if it's in one that is excluded, ignore the parsing and leave the file as it is (as though it were a blank file, or a file with only comments). In that way nothing else in your design has to change, and only this up-front algorithm about whether or not to parse each individual file is required.

Best regards,
Rick C. Hodgin
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Sep 22 2014 :  12:18:07 PM  Show Profile  Reply with Quote
This comes up often enough that we'll give it serious consideration for the short-list.
case=21519
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