当前位置: 首页 > 专利查询>微软公司专利>正文

软件开发工具制造技术

技术编号:6829114 阅读:219 留言:0更新日期:2012-04-11 18:40
提供了软件开发工具。一种用于提供与计算机程序源代码和动态表达式相关联的完成列表的系统和方法。执行动态分析以找到并聚集表达式的一个或多个候选类型。在目标程序的执行期间,运行时监控程序跟踪指示出程序变量的类型的事件。分析可包括若干静态分析技术中的一个或多个,包括分析被赋予程序变量的表达式、遵循方法调用、检验系统或其他指定的汇编件、加载运行时汇编件、或基于对变量的其他使用作出推断。完成列表可基于配置的准则被过滤或排序。

【技术实现步骤摘要】

本申请涉及软件开发工具和方法。
技术介绍
集成开发环境(IDE)是帮助程序员开发软件的一组工具。IDE可包括源代码编辑器、编译器和调试器。它可包括允许程序员查看类层次结构信息、关于类、方法或其他程序元素的信息的浏览器。IDE或其他编程环境可包括自动完成特征来在程序员输入文本时帮助程序员。使用自动完成特征,用户可键入已被定义成属于一特定类的对象的名称,后跟一句点。自动完成工具可识别对象的类并提供包括字段、属性和方法的类成员列表。用户可从该列表进行选择,而不是键入所希望的类成员的名称。该工具然后将所选的成员名称插入源代码。如果用户在作出选择之前键入了一个或多个字符,则自动完成工具可过滤该列表使其限于匹配文本。在键入了一个或多个字符之后,用户可从列表选择一项目。
技术实现思路
提供本
技术实现思路
以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本
技术实现思路
并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。简而言之,一种系统、方法和各组件用于生成与还未被静态地声明具有类型的程序变量对应的完成列表。变量的类型可在目标程序的执行期间被解析。在一个实施方式中, 运行时监控程序在目标程序代码的执行期间跟踪事件,以确定程序变量的类型解析。对于每个运行时类型解析,可确定并聚集与该类型相关联的一组类成员以形成完成列表。在一个实施方式中,在编辑会话中时,列表调用事件使得列表生成器执行对目标程序的至少一些部分的控制流分析。可找到对所述变量的一个或多个赋值。每个表达式可被分析以确定变量的候选类型集。与每个候选类型相关联的、或可从该候选类型的对象获得的类成员被检索并插入到完成列表中。在一个实施方式中,对变量的使用可被分析来确定一个或多个候选类型。这可基于调用变量对象的成员的指令、将变量用作对其中相应参数具有声明的类型的方法的自变量、将变量对象用作表达式中的操作数、以及对变量的其他使用。在一个实施方式中,控制流分析可导致汇编件(assembly)。编译时汇编件可被分析来检索候选类型或相应成员。在编辑会话中时,运行时汇编件可被加载,并且指定的类型可被实例化。可使用反射(Reflection)来确定相应成员的列表。在一个实施方式中,完成列表的项目可基于运行时类型解析或静态分析来排序。 完成列表可被过滤以呈现具有配置的准则的完成列表,或呈现完成列表项目的各组。为了实现前述及相关目的,在这里结合以下描述及附图来描述该系统的某些说明性方面。然而,这些方面仅指示了可采用本专利技术的原理的各种方法中的少数几种,且本专利技术旨在包括所有这样的方面及其等效方面。通过结合附图考虑本专利技术的以下详细描述,本专利技术的其它优点以及新颖的特征将变得显而易见。附图说明参考以下附图来描述本专利技术的非限制性且非穷尽性实施方式。在各附图中,除非另外指明,否则在全部附图中相同的附图标记指代相同的部分。为了帮助理解本专利技术,将参考以下与附图相关联地阅读的具体实施方式,附图中图1是其中可实现此处所描述的机制的计算机系统的框图;图2示出其中可采用此处所描述的某些机制的示例编辑会话的屏幕截图;图3示出其中可采用此处所描述的某些机制的另一示例编辑会话的屏幕截图;图4示出其中可采用此处所描述的某些机制的另一示例编辑会话的屏幕截图;图5A示出其中可采用此处所描述的某些机制的另一示例编辑会话的屏幕截图;图5B示出其中可采用此处所描述的某些机制的另一示例编辑会话的屏幕截图;图6示出其中可采用此处所描述的某些机制的另一示例编辑会话的屏幕截图;图7A-C示出其中可采用此处所描述的某些机制的示例编辑会话的附加屏幕截图;图8是示出向用户提供完成列表的过程的示例实施方式的流程图;图9是示出确定程序变量的一个或多个候选类型的过程的示例实施方式的流程图;图10是示出确定程序变量的候选类型的过程的示例实施方式的流程图;图11是示出基于动态分析确定程序变量的候选类型的过程的示例实施方式的流程图;图12示出了计算设备的一个实施方式,示出可用于执行此处所描述的功能的计算设备的所选组件。具体实施例方式下文中将参考附图来更全面地描述本专利技术的各示例实施方式,附图构成实施方式的一部分且在其中作为示例示出了可在其中实践本专利技术的各特定示例实施方式。然而,本专利技术可被实现为许多不同的形式并且不应被解释为被限于此处描述的各实施方式;相反, 提供这些实施方式以使得本公开变得透彻和完整,并且将本专利技术的范围完全传达给本领域技术人员。特别地,本专利技术可被实现为方法或设备。因此,本专利技术可采用完全硬件实施方式、 完全软件实施方式或者结合软件和硬件方面实施方式的形式。因此,以下详细描述并非是局限性的。贯穿说明书和权利要求书,下列术语采用此处显式相关联的含义,除非该上下文在其他地方另有清楚指示。如此处所使用的,短语“在一个实施方式中”尽管它可以但不一定指前一实施方式。此外,如此处所使用的,短语“在另一个实施方式中”尽管它可以但不一定指一不同的实施方式。因此,可以容易地组合本专利技术的各实施方式而不背离本专利技术的范围或精神。类似地,如此处所使用的,短语“在一个实现中”尽管它可以但不一定指相同5的实现,并且可以组合各种实现的技术。另外,如此处所使用的,术语“或”是包括性“或”运算符,并且等价于术语“和/ 或”,除非上下文清楚地另外指明。术语“基于”并非穷尽性的并且允许基于未描述的其他因素,除非上下文清楚地另外指明。另外,在本说明书全文中,“一”、“一种”和“所述”的含义包括复数引用。“在中”的含义包括“在中”和“在上”。如此处所使用的,当涉及计算机程序时,术语“赋值”指的是指定在程序的执行期间要被赋予或绑定于指定的变量的值的构造。这可采用单个赋值语句的形式,例如“X = new classX ()”,它指定了表达式“new classX () ”要被求值,结果被赋予变量χ。它也可采用方法参数声明和对应的方法调用的形式。例如,在以下程序代码中void methodA(classY foo);method A (bar);该构造指定了对methodA的调用将自变量bar所代表的对象赋予参数foo。如此处所使用的,术语“编辑会话”指的是这样一种环境,其中编辑器、查看器或浏览器正在向用户显示程序源代码的至少一部分。编辑会话可包括但并不一定要包括修改程序源代码的动作。尽管编辑会话可与目标程序的执行交织在一起,或可与目标程序的执行或运行时同时发生,但是编辑会话与程序运行时不同且可在对应于目标程序的可执行程序不存在时发生。对编辑会话中发生的动作的引用涉及不采用运行时数据结构的动作。此处所描述的组件可以从其上具有数据结构的各种计算机可读介质来执行。组件可通过本地或远程过程诸如按照具有一或多个数据分组(例如,来自一个通过信号与本地系统、分布式系统中的另一组件交互或跨诸如因特网的网络与其它系统交互的组件的数据)的信号来通信。例如,根据本专利技术的各实施方式,软件组件可被存储在非瞬态计算机可读存储介质上,包括但不限于专用集成电路(ASIC)、紧致盘(⑶)、数字多功能盘 (DVD)、随机存取存储器(RAM)、只读存储器(ROM)、软盘、硬盘、电可擦除可编程只读存储器 (EEPROM)、闪存或记忆棒。如此处所用的术语“计算机可读介质”既本文档来自技高网...

【技术保护点】
1.一种生成和目标程序中的目标表达式相对应的完成列表(116)的基于计算机的方法(1100),所述目标程序具有源代码表示(102)和可执行代码表示(122),所述方法包括:a)执行(1104)所述目标程序的可执行代码表示;b)监控(1106)所述程序代码的执行以确定(1108)所述目标程序变量的一个或多个运行时类型解析;c)对于运行时类型解析,确定(810)与该类型相关联的一组类成员;以及d)聚集(816)一组或多组类成员。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:D·J·帕克H·常T·扬
申请(专利权)人:微软公司
类型:发明
国别省市:US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1