<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Visual C++ Team Blog : IDE</title><link>http://blogs.msdn.com/vcblog/archive/tags/IDE/default.aspx</link><description>Tags: IDE</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Testing the IntelliSense engine</title><link>http://blogs.msdn.com/vcblog/archive/2007/07/05/testing-the-intellisense-engine.aspx</link><pubDate>Thu, 05 Jul 2007 19:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3707851</guid><dc:creator>vcblog</dc:creator><slash:comments>20</slash:comments><comments>http://blogs.msdn.com/vcblog/comments/3707851.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vcblog/commentrss.aspx?PostID=3707851</wfw:commentRss><description>&lt;FONT size=2&gt;
&lt;P&gt;Hi, I am James Wang, an SDET on the VC++ Compiler Front End team. Currently, I am working on designing the test architecture for the new IntelliSense engine. I am responsible to design tests that make sure the IntelliSense engine gives correct answer for quick info, member list, parameter help, and etc.&lt;/P&gt;
&lt;P&gt;Currently we have a test suite that directs testing the IntelliSense feature. But one of the drawbacks is that it only targets a very limited amount of scenarios. Testing converge becomes a major issue. But due to vast varieties of C/C++ constructs, testing every scenario becomes an impossible or at least a very time consuming task. In the meantime, we do have ~100,000 of tests that targeting compiler / libraries that covers a majority of C/C++ constructs. Would it be better to adapt these tests for the purpose of IntelliSense engine testing?&lt;/P&gt;
&lt;P&gt;To accomplish this, I wrote a tool that will analysis any arbitrary C/C++ code and generate IntelliSense test site. The tool will also generate the expected results for each test site. So for any arbitrary C/C++ code, we can generate a set of self verifying IntelliSense tests on quick info, member list, parameter help, and etc. As the result, we can reuse the ~100,000 tests for the purpose of IntelliSense testing.&lt;/P&gt;
&lt;P&gt;Two things make this possible: &lt;/P&gt;
&lt;P&gt;1. Better intermediate language (IL) representation. After parsing the source code, the new IntelliSense engine generate a better IL and expose a wealth of APIs that allows traversing and querying various compiler artifacts. This allows me to figure out where to create IntelliSense test site and what the expected results should be. For example: while traversing through the IL, if I see a field operator (-&amp;gt;), I may want to generate a member list tests. For the expected results, I can query the type for the left operand of the field operator and retrieved the expected member list.&lt;/P&gt;
&lt;P&gt;2. Componentized the IntelliSense engine. The new IntelliSense engine exposes API that allows engine level testing. So I can do IntelliSense testing without the IDE. Otherwise, running a large amount of IntelliSense tests become impractical due to the time needed to start / shut down the IDE for each tests.&lt;/P&gt;
&lt;P&gt;Hopefully, this new approach will improve the test coverage for the new IntelliSense engine and drive up its quality.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;James&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3707851" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vcblog/archive/tags/Test/default.aspx">Test</category><category domain="http://blogs.msdn.com/vcblog/archive/tags/IDE/default.aspx">IDE</category></item><item><title>IDE Feature Work</title><link>http://blogs.msdn.com/vcblog/archive/2006/06/16/ide-feature-work.aspx</link><pubDate>Fri, 16 Jun 2006 23:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634546</guid><dc:creator>vcblog</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/vcblog/comments/634546.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vcblog/commentrss.aspx?PostID=634546</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Hi, my name is &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;Ameya Limaye&lt;/st1:PersonName&gt; and I am a developer on the VC++ IDE Team, working mainly on the Intellisense, Browsing and Editor feature areas. Prior to this I was on the VC++ Compiler Team. I would like to take this opportunity to discuss several of the improvements we have made in VS 2005 and some of the stuff we are working on for VS 2005 SP1 and Orcas (the next version of VS).&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Some Whidbey New Features &amp;amp; Improvements:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Live Browsing (Function Caller-Callee Browsing, Find Symbol &amp;amp; Find All References):&lt;BR&gt;In VS 2005 we introduced a new feature called live browsing which provides a lot of the functionality of BSC based browsing which I am sure a lot of our users are familiar with. The main advantage of Live Browsing over BSC based browsing is that Live Browsing does not require you to build a project successfully to generate the browse information database. In fact it works even on incomplete code or code that is not in a fully compilable state currently and is always up to date with the latest code changes made by the user. You can read more about this cool new technology in my MSDN Pure C++ column article titled &lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/02/PureC/"&gt;“&lt;SPAN style="mso-bidi-font-weight: bold"&gt;Live Source Browsing in Visual C++&lt;/SPAN&gt;”&lt;/A&gt; co-authored by &lt;st1:PersonName w:st="on"&gt;Boris Jabes&lt;/st1:PersonName&gt; (Program Manager on the IDE Team). &lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;More correct and always up to date Intellisense data for all code including SDK and Libraries included by user code (Macro based dynamic parsing):&lt;BR&gt;Before VS 2005, we would use a pre-built NCB file to produce the information for SDK headers, and libraries like ATL, MFC, CRT and STL. This means that the information was always the same and could not be tailored to the specific include state / context of the user code. To give you a simple example, if you “#define UNICODE” then the windows headers are slightly different than if&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;“UNICODE” is not defined. Previously there would be one state (the state used to create the pre-built NCB) that would be used irrespective of whether you defined the macro “UNICODE” before “#include &amp;lt;windows.h&amp;gt;“.&amp;nbsp; In VS 2005 we got rid of pre-built NCB files and we generate the correct contextual information for the SDK and library headers when included from your project.&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Intellisense Support for Makefile Projects:&lt;BR&gt;The Intellisense parsing engine just like the compiler needs to know the command line switches and environment variables to make sense of the code when parsing user sources. When using a makefile project, the command line switches etc. are in a custom makefile and not available to the parser. Hence Intellisense may not always be able to make sense of the code. In VS 2005 we have added a configuration properties pane that contains a section for Intellisense where you can set these command line options and include search paths etc. in order to get Intellisense to work correctly on your makefile project.&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;#ifdef Code Graying:&lt;BR&gt;Since we moved to macro based parsing with full information for VS 2005, this feature was an obvious add on as a way to visually show the user in the editor, which parts of the source code are being parsed and which ones are “excluded code” or #if 0 code according to the preprocessor.&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Code Definition Window:&lt;BR&gt;This is a nice value add that I find really useful to know exactly what I am looking at in code when browsing through code that I am not intimately familiar with.&lt;BR style="mso-special-character: line-break"&gt;&lt;BR style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Several small features and improvements (in some cases little known productivity enhancements):&lt;BR&gt;Better support for several language constructs and features like namespaces, namespace using directives, templates and explicit and partial specializations, Unicode, etc.&lt;BR&gt;&lt;BR&gt;New XML Doc Comment support for Visual C++. This is available for C++/CLI code when doing Quick Info and Parameter Help on symbols from a #using or /FU dll that has been built with XML Doc Comments and has the XML file beside the dll on disk.&lt;BR&gt;&lt;BR&gt;Edit.ListMembers (CTRL-J) when invoked at a location in code that is not in a direct member list context (on an identifier following a ./-&amp;gt;/:: in code), now shows only the members of the enclosing class or namespace scope. This can be used to effectively get the member list that you would get if you typed “this-&amp;gt;” inside a member function, without having to actually type it. If you are in a namespace scope function, then it will display the members from the enclosing namespace scope.&lt;BR&gt;&lt;BR&gt;Being able to open a file in your solution very easily. This is a productivity enhancement that I use a lot when in large solutions with thousands of files. Rather than browsing to the file using the File -&amp;gt; Open dialog, you can simply type “&amp;gt;open FilenameInSolution.Extension” in the find combo. Basically you can simply type CTRL-/ to get to the combo with “&amp;gt;” (this is a quick place to type commands) and type “open FilenameInSolution.Extension”. You even get completion for the commands usable there as well as the filename.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;BR&gt;For more information on most of these as well as other improvements like Unicode Support, etc., you can look at &lt;A href="http://msdn.microsoft.com/visualc/default.aspx?pull=/library/en-us/dnvs05/html/VC2005IntelliSense.asp"&gt;“What’s New in Visual C++ 2005 Intellisense”&lt;/A&gt;.&amp;nbsp; For a high level view of the key internal workings of the Intellisense sub-system in VS 2005 and some of the limitations of Intellisense, you can read &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vcintellisense.asp"&gt;“Intellisense Support in Visual C++”&lt;/A&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Over the last few months we have been working on designing Orcas features and on VS 2005 Service Pack 1. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;In the IDE space we are going to address several bugs and some key issues for the Service Pack. One of the key ones is, Intellisense uses 100% CPU with a thread running at normal priority causing sluggishness on single processor machines for IDE and other processes (which are also running at normal priority). This fix should make the IDE and other applications much more responsive when intellisense uses the CPU because it will do all background parsing on a lower priority thread.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Right now we are in the design and early implementation phase for several Orcas features for the IDE. We can discuss these in the coming months as they become more concrete. You can send me E-Mail (scrambled E-Mail is at the bottom of this post) with feedback about this post as well as what other things you want to discuss with the VC++ IDE team, on this blog in the future. I really enjoyed writing up this post and am looking forward to your comments and feedback as a VC++ user.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;- &lt;st1:PersonName w:st="on"&gt;Ameya Limaye&lt;/st1:PersonName&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Software Development Engineer, VC++ IDE&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana"&gt;AmeyaL(thisIsTheAtSign)(MSFTFullForm)(dot)com&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=634546" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vcblog/archive/tags/IDE/default.aspx">IDE</category></item></channel></rss>