Implement indexed full-text search of source code, config files, and project files
Visual Studio projects can contain hundreds and even thousands of documents. Searching through these documents using Find-In-Files is slow and error prone. About a decade of academic research strongly suggests that an information retrieval approach to searching source code would be faster and provide better results.
While the Visual Studio team has noticed the need for better search tools, as evidenced by their recent "Search Everywhere" blog (see http://blogs.msdn.com/b/visualstudio/archive/2011/10/11/visual-studio-11-developer-preview-search-everywhere.aspx). Unfortunately, every recently introduced search tool still relies on regular-expressions or simple pattern-matching. To put this in context, the modern IDE uses search technology essentially identical to grep, which was created in 1973. Recent studies, such as "...How Developers Seek, Relate, and Collect Information..." (http://www.cs.cmu.edu/~marmalade/papers/Ko2006SeekRelateCollect.pdf) show this type of search fails upwards of 88% of the time.
This request is to suggest that Visual Studio completely change their default search engine. Instead of relying on a regex search, executed on demand, they should use an information retrieval approach, indexing the code ahead of time and thus providing near-instant search results. Examples of this type of search tool for source code abound. See Sando for Visual Studio, Instasearch for Eclipse, OpenGrok, etc.
Thanks for considering this update. I know it is a major one, but I love Visual Studio and believe that this change could help it remain a cutting edge IDE.
Dan Cumings commented
Resharper used to have a great index hierarchical search tool for words
Visual Studio Online has a beta release of a similar feature: http://visualstudio.uservoice.com/knowledgebase/articles/501839-announcing-limited-preview-for-visual-studio-onlin
Evidence in favor of having a proper source code search in Visual Studio:
* Sando Code Search (Visual Studio Extension): 11,850 downloads
* Instasearch (Eclipse IDE Plugin): 18,226 downloads
* GitHub uses Elastic Search (i.e., Lucene) to implement indexed search over projects
* Visual Studio Online uses Elastic Search (i.e., Lucene) to implement indexed search over projects (note: still in beta stage)
> What you're asking for is a product I believe is outside the scope of Visual Studio.
You bring up great points Dean, and I've gone back and forth on whether to use a desktop search solution instead. However, there are a few key shortcomings of desktop search that make it awkward for code search. For instance, desktop search returns results as complete files, instead of as individual methods or classes. If I'm searching for the method "open" in the class "file" I don't care about all of the other methods in the "file" class. Using a websearch analogy, that's like returning an entire website instead of a single page. Thus, I think a code-focused search tool makes sense, and should be in the IDE.
Dean Goddard commented
I use Copernic Desktop Search (CDS) or exactly this purpose. While the professional version is cheap, they also have a free version too. Way better then windows search and goolge desktop search. Additionally, you can index emails, office documents, PDFs and others. You do need to add a few extensions like *.cs and *.sql for CDS to support, but once you're setup, it's done.
What you're asking for is a product I believe is outside the scope of Visual Studio.
Find in All Files works differently if you don't search the predefined locations but manually setup a location using the folder set.... which leads to all sorts of other questions like why does search entire solution take considerably longer than the same folders using the folder set option.
As further evidence of the importance of this feature there are a lot of search extensions popping up on Visual Studio Gallery.
Sando Code Search Tool - http://visualstudiogallery.msdn.microsoft.com/06f39a31-20ce-408c-afee-8a02b484db1c
Entrian Code Search - http://visualstudiogallery.msdn.microsoft.com/e39a6996-ea46-459a-9f1e-9629547868bc
NavigateToAll - http://visualstudiogallery.msdn.microsoft.com/bdbc361a-ee69-4ba3-83ff-ab2e8122ff47