IDE功能工作

嗨,我叫Ameya Limaye,是VC++IDE团队的开发人员,主要从事Intellisense、浏览和编辑器功能领域的工作。在此之前,我是VC++编译器团队的成员。我想借此机会讨论一下我们在VS2005中所做的一些改进,以及我们为VS2005SP1和Orcas(VS的下一个版本)所做的一些工作。

null

惠德贝的一些新功能和改进:

  • 实时浏览(函数调用者-被调用者浏览、查找符号和查找所有引用): 在VS2005中,我们引入了一个新功能,名为实时浏览,它提供了许多基于BSC的浏览功能,我相信我们的许多用户都熟悉这些功能。与基于BSC的浏览相比,Live Browsing的主要优点是,Live Browsing不需要您成功地构建一个项目来生成浏览信息数据库。事实上,它甚至可以在不完整的代码或当前不处于完全可编译状态的代码上工作,并且始终与用户所做的最新代码更改保持同步。你可以在我的MSDN纯C++栏目文章中阅读更多关于这个新技术的文章 Visual C++中的活体浏览 由Boris Jabes(IDE团队的程序经理)合著。

  • 所有代码(包括SDK和用户代码中包含的库)的更正确且始终最新的Intellisense数据(基于宏的动态解析): 在VS2005之前,我们将使用一个预构建的NCB文件来生成SDK头文件以及ATL、MFC、CRT和STL等库的信息。这意味着信息总是相同的,不能根据用户代码的特定include状态/上下文进行定制。举一个简单的例子,如果您“#define UNICODE”,那么windows标题与 未定义“UNICODE”。以前,无论您是否在“#include”之前定义了宏“UNICODE”,都将使用一个状态(用于创建预构建的NCB的状态)。  在VS2005中,我们去掉了预构建的NCB文件,并为SDK和库头生成了正确的上下文信息(当包含在项目中时)。

  • 对生成文件项目的Intellisense支持: Intellisense解析引擎就像编译器一样,需要知道命令行开关和环境变量,以便在解析用户源代码时理解代码。使用makefile项目时,命令行开关等位于自定义makefile中,解析器不可用。因此,Intellisense可能并不总是能够理解代码。在VS2005中,我们添加了一个配置属性窗格,其中包含Intellisense的一个部分,您可以在其中设置这些命令行选项并包括搜索路径等,以便Intellisense在makefile项目上正常工作。

  • #ifdef代码变灰: 由于我们使用VS2005的完整信息进行基于宏的解析,这个特性是一个明显的附加功能,它可以直观地在编辑器中向用户显示源代码的哪些部分正在被解析,哪些部分是“排除的代码”,或者根据预处理器显示的#if 0代码。

  • 代码定义窗口: 这是一个很好的附加值,我发现当浏览我不太熟悉的代码时,确切地知道我在代码中看到了什么非常有用。

  • 几个小功能和改进(在某些情况下,鲜为人知的生产力增强): 更好地支持多种语言结构和特性,如名称空间、使用指令的名称空间、模板、显式和部分专门化、Unicode等。

    新的Visual C++的XML文档注释支持。这可以在C++或CLI代码中使用,它可以从使用XML文档注释的使用或/FULL的符号中快速地获得信息和参数帮助,并且在磁盘上的DLL旁边有XML文件。

    Edit.ListMembers(CTRL-J)在代码中不在直接成员列表上下文中的位置(在代码中./->/::后面的标识符上)调用时,现在只显示封闭类或命名空间范围的成员。如果在成员函数中键入“This->”,就可以有效地获取成员列表,而不必实际键入它。如果您在命名空间作用域函数中,那么它将显示封闭命名空间作用域中的成员。

    能够很容易地在解决方案中打开文件。这是一个生产力的提高,我使用了大量的大型解决方案时,数千个文件。您只需在“查找”组合框中键入“>openfilenamesolution.Extension”,而不是使用“文件”->“打开”对话框浏览文件。基本上,您可以简单地键入CTRL-/以进入带有“>”的组合框(这是一个快速键入命令的地方),然后键入“openfilenamesolution.Extension”。您甚至可以完成那里可用的命令以及文件名。

有关其中大多数以及其他改进(如Unicode支持等)的更多信息,请参阅 “Visual C++ 2005智能感知中的新东西” .  有关VS2005中Intellisense子系统的关键内部工作以及Intellisense的一些限制的高级视图,您可以阅读 Visual C++中的智能感知支持 .

在过去的几个月里,我们一直致力于设计Orcas的特性和vs2005servicepack1。

在IDE空间中,我们将为服务包解决几个bug和一些关键问题。其中一个关键问题是,Intellisense使用100%%CPU,线程以正常优先级运行,这会导致IDE和其他进程(也以正常优先级运行)的单处理器机器上的运行缓慢。当intellisense使用CPU时,这个修复程序应该使IDE和其他应用程序的响应速度更快,因为它将在一个优先级较低的线程上执行所有后台解析。

现在我们正处于IDE的几个Orcas特性的设计和早期实现阶段。我们可以在未来几个月讨论这些问题,因为它们变得更加具体。你可以给我发一封邮件(乱码邮件在这篇文章的底部),里面有关于这篇文章的反馈,以及你将来想和VC++IDE团队讨论的其他事情。我真的很喜欢写这篇文章,并期待您的意见和反馈作为一个VC++用户。

谢谢,

–阿梅亚·利马耶

软件开发工程师,VC++IDE

美国航空公司

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享