CN107077346A - 具有多上下文智能辅助的代码开发工具 - Google Patents

具有多上下文智能辅助的代码开发工具 Download PDF

Info

Publication number
CN107077346A
CN107077346A CN201580049776.5A CN201580049776A CN107077346A CN 107077346 A CN107077346 A CN 107077346A CN 201580049776 A CN201580049776 A CN 201580049776A CN 107077346 A CN107077346 A CN 107077346A
Authority
CN
China
Prior art keywords
context
program code
code
contexts
described program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201580049776.5A
Other languages
English (en)
Inventor
B·I·米哈瑟亚
J·T·巴奈特
P·斯特杰恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107077346A publication Critical patent/CN107077346A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L27/00Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
    • H01L27/02Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers
    • H01L27/04Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body
    • H01L27/08Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind
    • H01L27/085Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind including field-effect components only
    • H01L27/088Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including only semiconductor components of a single kind including field-effect components only the components being field-effect transistors with insulated gate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L21/00Processes or apparatus adapted for the manufacture or treatment of semiconductor or solid state devices or of parts thereof
    • H01L21/70Manufacture or treatment of devices consisting of a plurality of solid state components formed in or on a common substrate or of parts thereof; Manufacture of integrated circuit devices or of parts thereof
    • H01L21/77Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate
    • H01L21/78Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices
    • H01L21/82Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices to produce devices, e.g. integrated circuits, each consisting of a plurality of components
    • H01L21/822Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices to produce devices, e.g. integrated circuits, each consisting of a plurality of components the substrate being a semiconductor, using silicon technology
    • H01L21/8232Field-effect technology
    • H01L21/8234MIS technology, i.e. integration processes of field effect transistors of the conductor-insulator-semiconductor type
    • H01L21/823418MIS technology, i.e. integration processes of field effect transistors of the conductor-insulator-semiconductor type with a particular manufacturing method of the source or drain structures, e.g. specific source or drain implants or silicided source or drain structures or raised source or drain structures
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L21/00Processes or apparatus adapted for the manufacture or treatment of semiconductor or solid state devices or of parts thereof
    • H01L21/70Manufacture or treatment of devices consisting of a plurality of solid state components formed in or on a common substrate or of parts thereof; Manufacture of integrated circuit devices or of parts thereof
    • H01L21/77Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate
    • H01L21/78Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices
    • H01L21/82Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices to produce devices, e.g. integrated circuits, each consisting of a plurality of components
    • H01L21/822Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices to produce devices, e.g. integrated circuits, each consisting of a plurality of components the substrate being a semiconductor, using silicon technology
    • H01L21/8232Field-effect technology
    • H01L21/8234MIS technology, i.e. integration processes of field effect transistors of the conductor-insulator-semiconductor type
    • H01L21/823487MIS technology, i.e. integration processes of field effect transistors of the conductor-insulator-semiconductor type with a particular manufacturing method of vertical transistor structures, i.e. with channel vertical to the substrate surface
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L29/00Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
    • H01L29/02Semiconductor bodies ; Multistep manufacturing processes therefor
    • H01L29/06Semiconductor bodies ; Multistep manufacturing processes therefor characterised by their shape; characterised by the shapes, relative sizes, or dispositions of the semiconductor regions ; characterised by the concentration or distribution of impurities within semiconductor regions
    • H01L29/0603Semiconductor bodies ; Multistep manufacturing processes therefor characterised by their shape; characterised by the shapes, relative sizes, or dispositions of the semiconductor regions ; characterised by the concentration or distribution of impurities within semiconductor regions characterised by particular constructional design considerations, e.g. for preventing surface leakage, for controlling electric field concentration or for internal isolations regions
    • H01L29/0607Semiconductor bodies ; Multistep manufacturing processes therefor characterised by their shape; characterised by the shapes, relative sizes, or dispositions of the semiconductor regions ; characterised by the concentration or distribution of impurities within semiconductor regions characterised by particular constructional design considerations, e.g. for preventing surface leakage, for controlling electric field concentration or for internal isolations regions for preventing surface leakage or controlling electric field concentration
    • H01L29/0611Semiconductor bodies ; Multistep manufacturing processes therefor characterised by their shape; characterised by the shapes, relative sizes, or dispositions of the semiconductor regions ; characterised by the concentration or distribution of impurities within semiconductor regions characterised by particular constructional design considerations, e.g. for preventing surface leakage, for controlling electric field concentration or for internal isolations regions for preventing surface leakage or controlling electric field concentration for increasing or controlling the breakdown voltage of reverse biased devices
    • H01L29/0615Semiconductor bodies ; Multistep manufacturing processes therefor characterised by their shape; characterised by the shapes, relative sizes, or dispositions of the semiconductor regions ; characterised by the concentration or distribution of impurities within semiconductor regions characterised by particular constructional design considerations, e.g. for preventing surface leakage, for controlling electric field concentration or for internal isolations regions for preventing surface leakage or controlling electric field concentration for increasing or controlling the breakdown voltage of reverse biased devices by the doping profile or the shape or the arrangement of the PN junction, or with supplementary regions, e.g. junction termination extension [JTE]
    • H01L29/0619Semiconductor bodies ; Multistep manufacturing processes therefor characterised by their shape; characterised by the shapes, relative sizes, or dispositions of the semiconductor regions ; characterised by the concentration or distribution of impurities within semiconductor regions characterised by particular constructional design considerations, e.g. for preventing surface leakage, for controlling electric field concentration or for internal isolations regions for preventing surface leakage or controlling electric field concentration for increasing or controlling the breakdown voltage of reverse biased devices by the doping profile or the shape or the arrangement of the PN junction, or with supplementary regions, e.g. junction termination extension [JTE] with a supplementary region doped oppositely to or in rectifying contact with the semiconductor containing or contacting region, e.g. guard rings with PN or Schottky junction
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L29/00Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
    • H01L29/66Types of semiconductor device ; Multistep manufacturing processes therefor
    • H01L29/66007Multistep manufacturing processes
    • H01L29/66075Multistep manufacturing processes of devices having semiconductor bodies comprising group 14 or group 13/15 materials
    • H01L29/66227Multistep manufacturing processes of devices having semiconductor bodies comprising group 14 or group 13/15 materials the devices being controllable only by the electric current supplied or the electric potential applied, to an electrode which does not carry the current to be rectified, amplified or switched, e.g. three-terminal devices
    • H01L29/66409Unipolar field-effect transistors
    • H01L29/66893Unipolar field-effect transistors with a PN junction gate, i.e. JFET
    • H01L29/66901Unipolar field-effect transistors with a PN junction gate, i.e. JFET with a PN homojunction gate
    • H01L29/66909Vertical transistors, e.g. tecnetrons
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L29/00Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
    • H01L29/66Types of semiconductor device ; Multistep manufacturing processes therefor
    • H01L29/68Types of semiconductor device ; Multistep manufacturing processes therefor controllable by only the electric current supplied, or only the electric potential applied, to an electrode which does not carry the current to be rectified, amplified or switched
    • H01L29/76Unipolar devices, e.g. field effect transistors
    • H01L29/772Field effect transistors
    • H01L29/80Field effect transistors with field effect produced by a PN or other rectifying junction gate, i.e. potential-jump barrier
    • H01L29/808Field effect transistors with field effect produced by a PN or other rectifying junction gate, i.e. potential-jump barrier with a PN junction gate, e.g. PN homojunction gate
    • H01L29/8083Vertical transistors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Computer Hardware Design (AREA)
  • Ceramic Engineering (AREA)
  • Manufacturing & Machinery (AREA)
  • Stored Programmes (AREA)

Abstract

提供了一种方法、系统和计算机程序产品,其使得能够在与程序代码相关联的多个上下文上对程序代码执行智能辅助功能。可以针对与程序代码相关联的第一上下文对程序代码执行智能辅助功能,以生成不涵盖所有程序代码的、针对第一上下文的结果。针对与程序代码相关联的一个或多个附加上下文,迭代智能辅助功能,其中对在先前上下文迭代下未能够被分析的程序代码的部分执行每次迭代,直到程序代码以其整体被涵盖。以这种方式,可以针对程序代码的整体而生成涵盖所有相关联的上下文的结果。

Description

具有多上下文智能辅助的代码开发工具
背景技术
存在软件开发者可以用于开发软件的各种类型的开发应用。集成开发环境(IED)是将若干开发工具包含在一个封装中的一种类型的软件开发应用。IDE可以包括工具,诸如源代码编辑器、构建自动化工具和调试器。IDE的示例包括由加拿大渥太华的EclipseFoundation开发的EclipseTM、由加拿大温哥华的ActiveState开发的ActiveStateKomodoTM、由捷克共和国的JetBrains开发的IntelliJ IDEA、由加利福尼亚的雷德伍德城的Oracle公司开发的Oracle JDeveloperTM、由Oracle公司开发的NetBeans、由加利福尼亚的旧金山的Codenvy开发的CodenvyTM、由加利福尼亚的库比蒂诺的苹果公司开发的和由华盛顿雷德蒙德的微软公司开发的Visual
常规的软件开发应用通常向写代码的开发者提供智能辅助。这帮助开发者以更快、更高效的方式写他们的代码。可以以各种方式提供这样的智能辅助。例如,软件开发工具可以包括呈现以下各项的功能:被称为“自动完成”的可能代码“完成”的列表、类型的有效成员的列表、关于由方法所要求的参数的信息和进一步的类型的辅助。在一个示例中,Visual工具被称为实现诸如这些的功能的在提供这样的智能辅助的时间处,程序代码通常必须跨其整体被分析。
程序代码的上下文指示适于程序代码的属性(诸如开发阶段(例如,调试、发布等))或程序代码涉及的操作系统。关于程序代码的上下文的信息可以由编译器用于将程序代码适当地编译到其目标系统/设备。
开发应用可以使得开发者能够开发涉及超过一个上下文的程序代码。例如,开发者可以开发将涉及多个操作系统(OS)(诸如MicrosoftApple iOSTM和/或Google AndroidTM)的程序代码。
应注意到,上下文可以被选择为被认为是“活动上下文”。例如,程序代码涉及的若干OS的当前所选择的特定OS(例如,Microsoft)可以被认为是针对程序代码的活动上下文OS。当对程序代码执行智能辅助功能时,关于活动上下文执行该功能。换句话说,对程序代码的整体执行该功能以生成仅针对该活动上下文程序代码的信息。未生成针对其他上下文的程序代码的信息。为了获得关于不同的OS的智能辅助信息,例如,必须使该不同的OS为活动上下文OS,并且智能辅助功能必须利用该新活动上下文设置对程序代码再次运行。
发明内容
提供本发明内容以便以简化形式引入在下文中在具体实施方式中进一步描述概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,其也不旨在被用于限制所要求保护的主题的范围。
提供使得能够在与程序代码相关联的多个上下文上对程序代码执行智能辅助功能的方法、系统和计算机程序产品。可以针对与程序代码相关联的第一上下文对程序代码执行智能辅助功能以生成不涵盖所有程序代码的、针对第一上下文的结果。智能辅助功能针对与程序代码相关联的一个或多个附加上下文被迭代,其中对在先前迭代下未生成其结果的程序代码的一部分执行每次迭代,直到生成涵盖整体程序代码的结果。以这种方式,涵盖与程序代码相关联的所有上下文。
下面参考附图详细描述了本发明的进一步的特征和优点以及本发明的各种实施例的结构和操作。应注意到,本发明不限于本文所描述的具体实施例。仅出于说明的目的,在本文中呈现了这样的实施例。基于包含在本文中的教导,附加的实施例对于一个或多个相关领域的技术人员将是明显的。
附图说明
并入本文并且形成说明书的一部分的附图图示了本申请的实施例并且连同描述进一步用于解释本发明的原理并且使得相关领域的技术人员能够制造和使用实施例。
图1示出了根据示例实施例的包括代码开发系统的计算设备的框图,代码开发系统使得能够针对多个上下文对程序代码执行智能辅助功能。
图2示出了根据示例实施例的提供用于对请求进行响应的过程的流程图,请求针对对程序代码执行智能辅助功能。
图3示出了根据示例实施例的提供用于针对多个上下文对程序代码执行智能辅助功能的过程的流程图。
图4示出了根据示例实施例的用于使用条件编译指示符用于确定能够或不能够被分析用于特定上下文的程序代码的部分的流程图。
图5示出了根据示例实施例的提供用于对程序代码执行智能辅助功能的迭代的过程的流程图。
图6示出了根据示例实施例的多上下文辅助迭代器的框图。
图7示出了根据示例实施例的提供如下过程的流程图,可以针对图6的多上下文辅助迭代器执行该过程,以在多个上下文上对程序代码迭代地执行智能辅助功能。
图8示出了在其中可以实现实施例的示例性用户设备的框图。
图9示出了可以被用于实现实施例的示例计算设备的框图。
当结合附图时,从下面所阐述的详细描述,本发明的特征和优点将变为更明显的,在附图中相同参考符号自始至终标识对应的元件。在附图中,相同附图标记一般地指示相同的、功能上类似和/或结构上类似的元件。元件首先出现在其中的附图由对应的参考标记中的最左边的一个或多个数字指示。
具体实施方式
I.介绍
本说明书和附图公开了包含本发明的特征的一个或多个实施例。本发明的范围不限于所公开的实施例。所公开的实施例仅例示本发明,并且所公开的实施例的经修改的版本也由本发明涵盖。本发明的实施例由随附到其的权利要求限定。
对“一个实施例”、“实施例”、“示例实施例”等的说明书中的引用指示所描述的实施例可以包括特定特征、结构或特点,但是每个实施例可以不必包括特定特征、结构或特点。而且,这样的短语不必指代相同实施例。而且,特定特征、结构或特点当结合实施例被描述时,应提出结合明确地或不明确地描述的其他实施例实现这样的特征、结构或特点在本领域的技术人员的知识内。
许多示例性实施例被描述如下。应注意到,本文所提供的任何章节/子章节标题不旨在是限制性的。贯穿本文档描述了实施例,并且任何类型的实施例可以被包括在任何章节/子章节下。而且,任何章节/子章节中所公开的实施例可以以任何方式与相同章节/子章节和/或不同的章节/子章节中所描述的任何其他实施例组合。
II.针对多上下文智能辅助的示例实施例
本文所描述的实施例使得能够在多个上下文上对程序代码执行智能辅助分析。一些软件开发应用向开发者(设计程序代码的人)提供智能辅助。这样的智能辅助功能的示例包括呈现可能代码“完成”的列表的自动完成、提供类型的有效成员的列表、提供关于由方法所要求的参数的信息、提供具有重命名重构的辅助和进一步的类型的辅助。使得能够在与在开发下的程序代码相关联的多个上下文上执行这些和/或其他智能辅助功能。
程序代码的上下文由适于程序代码的一个或多个开发相关属性定义,包括针对程序代码的开发配置(也被称为开发阶段或级)(诸如调试或发布)、针对程序代码(例如,指令集、操作系统、操作系统版本、硬件平台(例如,芯片集)等)的平台、与程序代码相关联的软件项目等。这样的属性中的一个或多个可以被称为针对程序代码的上下文。针对程序代码的上下文可以包括任何数目的属性,并且可以以任何方式表示,诸如示例中的[开发阶段/平台/项目],其中存在三个属性,并且其中“开发阶段”是开发阶段上下文(例如,调试、发布等),“平台”是平台上下文(例如,win32、win64、iOS、Android、x86、x64、ARM、ia64等),并且“项目”是软件项目上下文。
关于“项目”,代码文件(例如,针对C++程序代码的a.cpp文件)可以可配置为在不同的项目上下文中不同地操作。例如,可以通过执行“a.cpp”程序文件定义project1。在添加如下命令行开关(switch)的情况下,该命令行开关使得“a.cpp”与在没有开关的情况下不同地操作,可以通过执行相同“a.cpp”程序文件定义project2(例如,“a.cpp/D FOO”的命令行执行可以使得a.cpp中的所有“#ifdef FOO”代码块被启用,然而,通过执行没有“/DFOO”开关的“a.cpp”可以使得a.cpp中的任何“#ifdef FOO”块都不被启用)。
开发应用可以使得开发者能够开发涉及超过一个上下文的程序代码。例如,与程序代码相关联的第一上下文可以是[Debug/win32/project1],其中“Debug”是开发阶段,“win32”是平台,并且“project1”是针对特定软件项目的标识符。与程序代码相关联的第二上下文可以是[Release/win32/project2]等。程序代码可以具有“活动上下文”,其包括所选择的上下文属性的组合。编译器可以使用活动上下文对要对程序代码执行的编译的类型进行配置。
为了使得程序代码能够涉及多个OS,可以使用适于所有目标OS的代码语句设计程序代码中的一些,并且可以利用仅适于特定OS的代码语句设计程序代码的其他部分(当由于OS中的差异被需要时)。程序代码可以包括针对不适于所有OS的程序代码的部分的标记或其他指示(“条件编译指示符”),使得可以有条件地执行那些部分。实施例使得能够以自动方式跨与程序代码相关联的任何数目的上下文对以这种方式标记的、或者具有以任何其他方式所指示的不同的上下文的程序代码执行智能辅助。
如此,在实施例中,开发者不必单独地将每个上下文设置为活动,并且逐个在活动上下文上执行智能辅助来获得在所有上下文上的结果。相反,智能辅助可以针对活动上下文被调用一次,并且以涵盖所有上下文的方式自动地执行智能辅助。
如在常规的技术中,单独地针对每个上下文使用智能辅助确定知识是昂贵的。如果每个上下文属性被认为是上下文矩阵的维度(例如,当3个维度/属性存在时的“立方”),将需要被运行的上下文的总数将是彼此相乘的每个上下文属性的成员的数目。例如,如果在针对程序代码的特定示例上下文矩阵中存在两个开发阶段、五个平台和三个项目,则针对上下文矩阵的可能上下文的总数是2×5×3=30个上下文。30个上下文是单独地执行智能辅助功能的大量的上下文。考虑到上下文矩阵将可能增长,问题将变得更严重。
因此,实施例使得能够执行多上下文智能辅助。这辅助期望立即地知道所有上下文中的共享代码改变(例如,被显示为例如代码编辑器中的花体)的影响的开发者。
性能是跨配置、平台和项目和/或其他上下文的所有组合为诸如针对C++开发者的“重构重命名”的功能提供高质量智能辅助经历的关键限制物。仅当针对活动上下文的初始处理结果未完全地解析所有候选位置时,通过智能地重新处理针对上下文(进一步的活动上下文)的输入,可以将上文所描述的体验(例如,在存在30或其他高数目的上下文的情况下)从指数体验转换为针对典型的现实世界代码场景的较小规模的操作。例如,仅几个上下文可能需要被处理以生成涵盖所有上下文的结果。
例如,关于重命名重构,所有候选(本文)可以从预处理数据库收集,并且由以第一上下文开始的输入文件(例如,debug/win32/project1)分组和处理。只要在该文件中存在未解析的候选,就可以使用第二上下文、第三上下文、第四上下文等处理输入文件。智能辅助过程可以在整体输入文件被处理时停止,其可以在使用所有可能的上下文之前。
在实施例中,开发者或自动算法可以智能地选择可能上下文的全组的子集以使用来以改进性能的方式在程序代码上执行智能辅助。
在以下子章节中描述了针对多上下文智能辅助的许多示例性实施例。
A.针对多上下文智能辅助的示例开发系统实施例
在实施例中,开发系统可以以各种方式被配置为使能针对程序代码的多上下文智能辅助。例如,图1示出了根据示例实施例的开发系统100的框图。如在图1中所示,开发系统100包括源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108和存储装置110。注意,出于说明的目的并且作为示例实施例提供开发系统100,并且并非开发系统100的所有特征需要存在于所有实施例中(例如,调试器工具106不需要存在于所有实施例中)。而且,图1中未示出的附加特征可以存在于一些实施例中。图1中所示的系统100的特征被描述如下。
如在图1中所示,开发系统100可以被实现在一个或多个计算设备118中。例如,源代码编辑器102、编译器104、调试器工具106和多上下文辅助迭代器108可以被包括在相同计算设备中,或者源代码编辑器102、编译器104、调试器工具106和多上下文辅助迭代器108中的一个或多个可以被实现在与源代码编辑器102、编译器104、调试器工具106和多上下文辅助迭代器108中的其他中的那些分离的一个或多个计算设备中。
一个或多个计算设备118可以是任何类型的一个或多个固定或移动计算设备,包括移动计算机或移动计算设备(例如,设备、个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机(诸如Apple iPadTM)、上网本等)、移动电话、可穿戴计算设备或其他类型的移动设备或固定计算设备(诸如台式计算机或PC(个人计算机))。
开发者可以与源代码编辑器102交互以当生成针对应用的源代码时输入和修改程序代码。例如,开发者可以与代码编辑器102的用户接口112交互以诸如通过打字、通过语音输入、通过选择建议的代码块等添加、修改或删除程序代码文本。因此,用户接口112可以包括一个或多个文本输入框/窗口、语音/话音识别、一个或多个图形用户接口元素(例如,按钮、复选框、单选按钮、下拉菜单等)和/或开发者可以交互的其他用户接口元素。当完成时或者以其他间隔,可以使得用户能够通过与“保存”按钮或其他用户接口元素交互来保存程序代码。源代码编辑器102可以是基于浏览器的编辑器、集成在台式或移动应用中的代码编辑器或任何其他类型的代码编辑器。
例如,如在图1中所示,开发者可以与源代码编辑器102的用户接口112交互以生成程序代码114。程序代码114是源代码,其是使用人类可读计算机编程语言写的计算机指令(可能地具有注释)的集合。适合的人类可读计算机编程语言的示例包括C、C++、Java等。可以以一个或多个文件或其他形式接收程序代码114。例如,程序代码114可以作为一个或多个“.c”文件(当使用C编程语言时)、一个或多个“.cpp”文件(当使用C++编程语言时)等被接收。如在图1中所示,程序代码114可以被存储在存储装置110中。存储装置110可以包括存储数据的任何类型的物理存储硬件/电路中的一个或多个,包括磁盘(例如,在硬盘驱动器中)、光盘(例如,在光盘驱动器中)、磁带(例如,在磁带驱动器中)、存储器设备(诸如RAM设备、ROM设备等)和/或任何其他适合的类型的物理存储硬件/电路。
注意,程序代码114可以包括代码语句和/或放入程序代码114中作为用于调试的目的的调试代码的标记代码(例如,断点、寄存器值的显示、批注等)。
可以以任何方式(诸如通过命令行、图形用户接口等)调用编译器104。当编译器104被调用以执行全编译时,可以使用“-full”开关或其他开关。编译器104被配置为接收和编译程序代码114以生成机器代码122。具体地,编译器104被配置为将程序代码114转换为以另一计算机语言(通常地具有二进制形式(被称为机器代码或目标代码))的形式的机器代码122。在一些情况下,编译器104可以包括多个阶段,并且可以首先将程序代码114转换为中间形式(例如,中间语言),其随后被转换为机器代码122。
编译器104可以被配置为当生成机器代码122时,对程序代码114执行一个或多个类型的优化。经优化的构建导致如下机器代码,该机器代码语义地等于在没有优化的情况下生成的机器代码,但是以在经优化的机器代码的执行期间使用的较少的资源(例如,较少的存储器、较少的程序调用等)的方式被配置。可以执行的优化的示例包括循环优化、数据流优化、基于SSA的优化、代码生成器优化、函数语言优化、过程间优化和/或一个或多个相关领域的技术人员将已知的进一步的类型的优化。存在许多特定类型的优化。例如,可以执行“内联”,其中由调用者函数调用的被调用者函数被复制到调用者函数的主体中。在特定优化的另一示例中,可以执行“公共子表达式消除”,其中代码的单个实例被用于在源代码中被计算多次的数量。
机器代码122可以被包括在文件(例如,对象或“.obj”文件)中,或者可以以另一形式被创建/存储,以形成可执行程序或应用。机器代码122可以可选地被存储在存储装置110中。
当程序代码114针对开发的调试阶段由编译器104编译时,调试器工具106可以接收机器代码122。调试器工具106被配置为对由机器代码122所表示的应用运行调试器(或“调试、“调试的”)会话。在调试器会话中,可以使得开发者能够单步调试机器代码122的代码的执行,同时查看由机器代码122的执行所生成的变量、数组、属性和/或输出(例如,寄存器的内容、GUI等)的值,包括具有对被输入到程序代码114中(并且出于调试的目的由编译器104转换为机器代码122)的任何调试代码/语句的效果的访问。以这种方式,开发者可以测试或寻找故障(“调试”)程序代码114,基于调试器会话的结果使用代码编辑器102对程序代码114进行编辑。程序代码114的经修改的版本可以由编译器104编译并且由调试器工具106接收以用于进一步的调试。调试器工具106可以包括执行机器代码122的、物理的和/或虚拟的一个或多个处理器(例如,中央处理单元(CPU))。
当由调试器工具106进行的调试完成,并且程序代码114为其最后版本时,编译器104可以编译程序代码114以生成针对开发的发布阶段的机器代码122。机器代码122的发布版本可以被发布以由用户使用。注意,当编译程序代码114以生成机器代码122用于发布时,被标记为调试语句的程序代码114中的任何语句被忽略(未被编译使得其编译版本不存在于机器代码122中)。
如上文所描述的,开发者可以设计涉及多个上下文的程序代码114,多个上下文包括多个开发阶段(例如,调试、发布)、多个平台、多个项目等。例如,代码编辑器102可以使得开发者能够将程序代码114的一个或多个部分标记为涉及特定上下文(例如,特定开发阶段、特定操作系统和版本等)。这样的代码部分可以以任何方式(诸如通过使用条件编译指示符(例如,“ifdef”指令等)或以另一方式)被标记或指示。可以存在任何形式的条件编译指示符,包括特殊字符、标签、代码指令和/或形式。如此,源代码编辑器102可以生成程序代码114,程序代码114指示一个或多个功能、方法和/或其他代码部分针对特定上下文有条件地编译。
例如,程序代码114可以是针对开发者想要在多个平台上运行的应用的代码,多个平台包括运行Microsoft操作系统(OS)的版本的第一设备、执行Apple iOSTM的版本的第二设备和执行Google AndroidTM的版本的第三设备。因此,代码编辑器102可以使得开发者能够生成程序代码114,使得其可以被编译为适于OS中的每个OS的机器代码。可以写程序代码的一个部分,使得其可以被编译为适于所有OS的机器代码,同时可以写程序代码114的其他部分以被编译为适于少于所有OS的机器代码。例如,程序代码114中的第一代码段可以适于所有OS,程序代码114中的第二代码段可以被标记为涉及Apple iOSTM(但是不针对Microsoft或Google AndroidTM),并且程序代码114中的第三代码段可以被标记为涉及Microsoft(但是不针对Apple iOSTM或GoogleAndroidTM)。
以下是可以被包括在程序代码114中的示例性伪代码(针对C++编程语言)。该示例图示了针对基于操作系统类型的条件编译的“ifdef”指令的使用:
根据以上伪代码,如果编译器104的实例定义宏“_WIN32”,则编译器实例生成针对Microsoft的机器代码122,并且将编译ifdef主体的print(“windows”)语句。编译器实例将不编译print(“UNIX”)语句,其涉及UNIX操作系统。备选地,如果编译器104的另一实例定义宏“_UNIX_”,则编译器实例生成针对UNIX操作系统的机器代码122,并且将编译elif(else-if)主体的print(“UNIX”)语句。该编译器实例将不编译print(“windows”)语句,其涉及Microsoft操作系统。以上示例性有条件地编译的代码段由endif语句终止。
条件编译指示符可以以类似的方式被用于使得代码涉及其他上下文,包括代码开发阶段(例如,调试或发布)、其他平台类型、软件项目等。
多上下文辅助迭代器108被配置为关于代码设计/代码开发执行智能辅助。而且,根据本文所描述的实施例,多上下文辅助迭代器108使得智能辅助能够自动地被提供用于与在开发下的代码相关联的多个上下文。例如,在实施例中,多上下文辅助迭代器108可以根据图2进行操作。图2示出了根据示例实施例的提供用于对请求(也被称为“查询”)进行响应的过程的流程图200,请求针对对程序代码执行智能辅助功能。关于图1流程图200被描述如下。基于以下描述,进一步的结构和操作实施例对于一个或多个相关领域的技术人员而言将是明显的。
流程图200以步骤202开始。在步骤202中,请求被接收以在与程序代码相关联的多个上下文的活动上下文中对程序代码执行智能辅助功能。例如,如在图1中所示,可以从代码编辑器102接收请求116。请求116是对程序代码114执行一个或多个智能辅助功能的请求。程序代码114可以具有在接收请求116之前或结合接收请求116所选择的活动上下文。在一个实施例中,基于与用户接口112的用户交互,可以生成请求116。例如,开发者可以点击或触摸按钮、做出菜单选择、发语音命令或者以其他方式与用户接口112交互以使得请求116被发出。开发者可以选择要被执行的特定智能辅助功能,诸如术语搜索(例如,搜索术语(诸如程序代码114中的“size”)的所有实例)、搜索和替换功能、重命名重构功能、自动完成和/或在本文中其他地方所公开或以其他方式已知的任何其他智能分析功能。在请求116中指定所选择的一个或多个智能辅助功能。
在另一实施例中,可以通过代码编辑器102自动地生成请求116。例如,代码编辑器102可以响应于开发者最近已经输入用户接口中的代码自动地生成请求116。例如,开发者可以输入特定功能的至少一部分,并且代码编辑器102可以自动地生成请求116以向开发者建议自动完成文本,和/或关于该功能执行其他智能辅助功能。
在步骤204中,对程序代码执行智能辅助功能以生成涵盖多个上下文的所有上下文的结果。如在图1中所示,多上下文辅助迭代器108接收请求116。在实施例中,响应于接收到请求116,多上下文辅助迭代器108检索或以其他方式访问程序代码114,并且被配置为对程序代码114执行所请求的智能辅助功能。多上下文辅助迭代器108可以被配置为响应于请求116而执行任何一个或多个智能辅助功能。而且,多上下文辅助迭代器108被配置为执行一个或多个智能辅助功能,使得一个或多个智能辅助功能涵盖与程序代码114相关联的所有上下文。例如,多上下文辅助迭代器108可以被配置为跨与程序代码114相关联的上下文中的一个或多个迭代一个或多个智能辅助功能,对第一(活动)上下文、然后第二上下文(如果需要的话)、然后第三上下文(如果需要的话)等执行一个或多个智能辅助功能,直到与程序代码114相关联的所有上下文被涵盖,使得程序代码以其整体已经针对智能辅助被处理。注意,在少于所有上下文上迭代一个或多个智能辅助功能可以仍然生成涵盖所有上下文的结果。
在步骤206中,利用涵盖多个上下文的所有上下文的结果对请求进行响应。如在图1中所示,多上下文辅助迭代器108生成结果118。结果118包括从涵盖与程序代码114相关联的所有上下文的一个或多个智能辅助功能生成的结果。用户接口112接收结果118,并且关于程序代码114显示结果118。例如,结果118可以靠近程序代码114、重叠在程序代码114上或以关于程序代码114的其他关系被显示用户接口112中。可以同时地显示针对所有上下文的结果,或者开发者可以使得能够与用户接口112交互以使得针对每个上下文的结果一次一个地被显示(例如,可以通过点击鼠标或键等一个接一个地单步调试针对不同的上下文的结果的显示)。
在实施例中,多上下文辅助迭代器108可以被配置为以各种方式操作,并且可以具有执行其功能的各种结构。以下子章节描述了多上下文辅助迭代器108的操作和结构的示例性实施例。
1.针对多上下文智能辅助迭代的示例实施例
如上文所描述的,图2的流程图200提供用于对针对智能辅助功能的请求进行响应的示例过程。注意,可以以各种方式执行流程图200的步骤204,使得针对涵盖所有上下文的智能辅助功能生成结果。例如,图3示出了根据示例实施例的提供用于针对多个上下文对程序代码执行智能辅助功能的过程的流程图300。在实施例中,图1的多上下文辅助迭代器108可以根据流程图300操作。关于图1流程图300被描述如下。基于以下描述,进一步的结构和操作实施例对于一个或多个相关领域的技术人员而言将是明显的。
图3的流程图300以步骤302开始。在步骤302中,在活动上下文中对程序代码执行智能辅助功能以确定针对活动上下文的关于程序代码的代码知识。在实施例中,图1的多上下文辅助迭代器108被配置为对程序代码114执行一个或多个智能辅助功能(例如,在请求116中所指示的)。对程序代码114执行智能辅助功能生成关于程序代码114的知识,如关于所执行的特定功能,并且该代码知识被包括在结果118中。
例如,关于自动完成作为智能辅助功能,基于程序代码114的分析生成的代码知识可以包括针对开发者输入代码编辑器102中的程序代码的一个或多个可能代码完成。例如,针对当前输入前缀的可能完成的弹出式列表可以被提供在结果中(基于在程序代码114中其他地方的输入前缀的类似实例),诸如提供变量或方法的完整名字、特定类的成员、特定函数的属性等。关于搜索或浏览功能,可以对术语(例如,“size”)执行搜索,并且程序代码114的一个或多个文件中的术语的所有实例的位置可以在结果中作为代码知识被返回。关于重命名重构功能,可以重命名针对代码符号(诸如字段、局部变量、方法、命名空间、性质和类型)的标识符。重命名重构可以被用于改变注释和字符串中的名称并且改变标识符的声明和调用。如此,当由开发者对术语执行重命名重构功能时,程序代码114的一个或多个文件中的术语的所有实例的位置可以在结果中作为代码知识被返回,并且术语可以被容易地重命名。以类似的方式,可以在针对本文中其他地方所提到或以其他方式已知的其他类型的智能辅助功能的结果118中由多上下文辅助迭代器108返回代码知识,如从本文中的教导对于一个或多个相关领域的技术人员将已知的。
在实施例中,多上下文辅助迭代器108对程序代码114的活动上下文执行一个或多个智能辅助功能。例如,在实施例中,可以设置针对程序代码114的活动上下文。活动上下文可以已经由与用户接口112交互的开发者选择(例如,通过点击或触摸框,使用下拉菜单、输入命令行开关等),或者可以由代码编辑器102自动地确定(例如,通过读取与程序代码114相关联的元数据,读取程序代码114的文件的头部信息等)。如上文所描述的,活动上下文指示针对程序代码114所选择的上下文属性的组合。例如,活动上下文可以指示开发阶段、平台、项目和/或关于程序代码114的进一步的信息。在程序代码114的编译期间,编译器104可以使用活动上下文配置要被执行的编译的类型。而且,多上下文辅助迭代器108可以将活动上下文用作针对智能辅助功能的第一上下文。
如此,在步骤302中,对被确定为在活动上下文中的程序代码114的一部分执行智能辅助功能。可以以各种方式确定程序代码114的该部分,包括如下面关于图4所描述的。
在步骤304中,确定程序代码的第一部分和程序代码的第二部分,针对活动上下文能够针对第一部分执行智能辅助功能,针对活动上下文不能够针对第二部分执行智能辅助功能。返回参考可以在步骤304之前或之后执行的步骤302,对关于活动上下文的程序代码114的一部分执行智能辅助功能。确定无关于活动上下文的程序代码114的部分,使得可以对它们执行智能辅助功能的后续迭代。因此,在实施例中,多上下文辅助迭代器108被配置为分析程序代码114以确定关于活动上下文的第一部分和关于一个或多个其他非活动上下文的第二部分。程序代码114的这些第一和第二部分可以以各种方式被确定,包括如如下关于图4所描述的。
图4示出了根据示例实施例的用于使用条件编译指示符400用于确定能够或不能够被分析用于特定上下文的程序代码的部分的流程图。在实施例中,可以在图3的步骤304期间执行流程图400。关于图1流程图400被描述如下。基于以下描述,进一步的结构和操作实施例对于一个或多个相关领域的技术人员而言将是明显的。
图4的流程图400以步骤402开始。在步骤402中,检测程序代码中的一个或多个第一代码部分,一个或多个第一代码部分标记有针对活动上下文的条件编译指示符或未标记有条件编译指示符。根据步骤402,程序代码114由多上下文辅助迭代器108(图1)搜索以确定在当前活动上下文下可以由智能辅助功能处理的代码。这样的代码可以以任何方式在程序代码114中被指示,包括通过条件编译指示符(诸如ifedf语句)或者指示代码适于当前活动上下文的其他指示符。例如,如果当前活动上下文平台是win64,并且ifdef语句指示相关联的代码主体中的代码涉及win64,则在步骤402中该代码被检测为被标记用于活动上下文。
而且,未由任何类型的条件编译指示符标记的程序代码114中的代码可以被假定为涉及当前活动上下文(以及其他上下文)的代码,并且因此在步骤402中被检测。
在步骤404中,所检测的一个或多个第一代码部分被包括在所确定的程序代码的第一部分中。注意,程序代码114可以以单个代码文件的形式,或者可以具有被分组为特定软件项目的多个代码文件(包括几百、几千并且甚至更大数目的代码文件)的形式。如此,在步骤404中,在步骤402中所检测的一个或多个整体代码文件可以被分类为在其上智能辅助功能能够被执行的代码,和/或在步骤402中所检测的一个或多个代码文件的一个或多个部分可以被分类为在其上智能辅助功能能够被执行的代码。例如,特定代码文件中的一个或多个功能或方法可以被检测为涉及活动上下文,同时相同代码文件中的一个或多个其他功能或方法可以不涉及活动上下文。被检测为涉及活动上下文的代码文件的功能/方法被包括在步骤304(图3)中所提到的第一部分(针对其智能辅助功能能够被执行),而剩余的功能/方法不被包括。
在步骤406中,检测程序代码中的一个或多个第二代码部分,一个或多个第二代码部分标记有针对与活动上下文不同的上下文的条件编译指示符。根据步骤406,程序代码114由多上下文辅助迭代器108(图1)搜索以确定在当前活动上下文下不能由智能辅助功能处理的代码。这样的代码可以以任何方式在程序代码114中被指示,包括通过条件编译指示符(诸如ifedf语句)或者指示代码适于与当前活动上下文不同的上下文的其他指示符。例如,如果当前活动上下文是win64,并且ifdef语句指示相关联的代码主体中的代码涉及ia64时,该代码被检测为被标记用于与活动上下文不同的上下文。
在步骤408中,所检测的一个或多个第二代码部分被包括在所确定的程序代码的第二部分中。在实施例中,在步骤406中所检测的一个或多个整体代码文件和/或代码文件的部分可以被分类为在其上智能辅助功能尚不能够被执行的代码。例如,特定代码文件中的一个或多个功能或方法可以涉及活动上下文,同时相同代码文件中的一个或多个其他功能或方法可以被检测为不涉及活动上下文。被检测为不涉及活动上下文的代码文件的功能/方法被包括在步骤304(图3)中所提到的第二部分中(针对其智能辅助功能尚不能够被执行)。
因此,根据图4的流程图400,可以确定可以根据请求116的一个或多个智能辅助功能处理的程序代码114的第一部分(由于涉及活动上下文),并且可以确定不能根据请求116的一个或多个智能辅助功能处理的程序代码114的第二部分(由于不涉及与活动上下文不同的上下文)。在其他实施例中,程序代码114的第一和第二部分可以以其他方式确定,如从本文中的教导对于一个或多个相关领域的技术人员而言将是明显的。
返回参考图3,在步骤306中,在多个上下文的至少一个附加上下文中对程序代码的第二部分执行智能辅助功能,以确定针对至少一个附加上下文的关于程序代码的代码知识。多上下文辅助指示符108被配置为迭代通过一个或多个上下文以对程序代码114的第二部分执行智能辅助功能(其在先前活动上下文下未由智能辅助功能处理)。例如,多上下文辅助迭代器108可以根据图5进行操作。图5示出了根据示例实施例的提供用于对程序代码执行智能辅助功能的迭代的过程的流程图500。在实施例中,可以在图3的步骤306期间执行流程图500。关于图1流程图500被描述如下。基于以下描述,进一步的结构和操作实施例对于一个或多个相关领域的技术人员而言将是明显的。
图5的流程图500以步骤502开始。在步骤502中,在多个上下文的第二上下文中对程序代码执行智能辅助功能以确定针对第二上下文的关于程序代码的代码知识。在实施例中,以与在步骤302(图3)中的类似方式,在步骤502中,图1的多上下文辅助迭代器108被配置为在第二上下文中对程序代码114执行一个或多个智能辅助功能。具体地,可以对不能够在一个或多个先前上下文迭代中被处理的程序代码114的部分执行一个或多个智能辅助功能。对程序代码114的这些部分执行一个或多个智能辅助功能可以生成关于有关第二上下文的程序代码114的这些部分的知识,并且该代码知识也被包括在结果118中(除在任何先前迭代中任何先前所生成的针对程序代码114所生成的代码知识)。而且,通过仅对在活动上下文下不能够被处理的程序代码114的部分并且不对在活动上下文下对其执行一个或多个智能辅助功能的程序代码114的部分执行一个或多个智能辅助功能,节省了处理时间(每个程序代码部分由一个或多个智能辅助功能处理一次)。
在实施例中,可以以任何方式从所有可用的上下文(尚未被迭代)选择第二上下文。例如,活动上下文可以是针对程序代码114的上下文矩阵中的任何上下文(例如,具有开发阶段、平台、项目等的维度)。第二上下文可以是与上下文矩阵的活动上下文不同的任何上下文。例如,第二上下文可以被选择为具有针对上下文矩阵的每个维度的0的坐标、针对每个维度的另一坐标值、针对每个维度的随机坐标值或以任何其他方式。
备选地,可以智能地选择第二上下文。可以从由用户、由多上下文辅助迭代器108的智能算法或以任何其他智能方式所提供的上下文的列表选择第二上下文。
如此,可以以这些或其他方式中的任一个选择第二上下文,并且可以以类似的方式选择后续的上下文(例如,第三上下文、第四上下文等)。例如,可以通过从先前值使一个或多个维度坐标的值递增、通过从上下文矩阵的随机选择和/或以任何其他方式选择后续的上下文。
例如,在实施例中,上下文矩阵可以是具有开发阶段、平台和项目的三个维度的立方。每个维度可以包括对应的值的集合。出于说明的目的,针对三个维度的示例值被示出如下:
开发阶段=调试,发布
平台=win32,win64,x86,x64,ARM,ia64
项目=project1,project2,project3
在示例中,(图3的步骤302的)原始活动上下文可以是[调试,x64,project3]的上下文(具有矩阵坐标0,3,2)。在步骤502中,第二上下文可以以任何方式选择(诸如通过选择0坐标成员的集合以形成[调试,win32,project1]、使活动上下文的维度递增以形成[发布,x64,project3](其中开发阶段被递增)、通过随机地选择坐标以形成随机组合(诸如[调试,ARM,project2])、通过做出智能选择(例如,由用户手动地、由选择算法自动地等)或以任何其他方式。
如此,在步骤502中,对被确定为在第二上下文中的程序代码114的一部分执行智能辅助功能。程序代码114的该部分可以以各种方式被确定,包括如上文关于图4的步骤402所描述的被确定(其中第二上下文代替活动上下文被使用,并且仅在先前迭代中未被处理的程序代码114的部分被分析用于条件编译指示符)。
在步骤504中,确定程序代码的第二部分的第三部分和程序代码的第二部分的第四部分,针对第二上下文能够针对第三部分执行智能辅助功能,针对活动上下文不能够针对第四部分执行智能辅助功能。在实施例中,如果在活动上下文下未被处理的程序代码114的部分在第二上下文下未被完全处理,则执行使用至少第三上下文的另一迭代可以是期望的。可以对不能够在步骤502中被处理的程序代码114的第二部分的一部分执行使用第三上下文的迭代。因此,在步骤504中,可以确定程序代码114的第二部分的(第三)部分,智能辅助功能能够在第二上下文下针对该(第三)部分被执行,并且更重要地,可以确定程序代码的第二部分的(第四)部分,智能辅助功能不能够针对第二上下文针对该(第四)部分被执行。可以以如在图4的流程图400中类似的方式做出该确定。例如,标识与第二上下文相关联的代码的条件编译指示符可以被搜索用于指示程序代码114的第三部分,并且(在活动和第二上下文下未被处理的)程序代码114的剩余部分可以被认为是程序代码114的第四部分。
在步骤506中,在多个上下文的至少第三上下文中对程序代码的第四部分执行智能辅助功能,以确定针对至少第三上下文的关于程序代码的代码知识。以与上文针对步骤502所描述的类似方式,在步骤506中,图1的多上下文辅助迭代器108被配置为在第三上下文中对程序代码114执行一个或多个智能辅助功能。具体地,可以对不能够在一个或多个先前上下文迭代(原始活动和第二上下文)中被处理的程序代码114的部分执行一个或多个智能辅助功能。对程序代码114的这些部分执行一个或多个智能辅助功能可以生成关于有关第三上下文的程序代码114的这些部分的知识,并且该代码知识也被包括在结果118中(除在任何先前迭代中任何先前所生成的针对程序代码114所生成的代码知识)。而且,通过仅对不能够在活动和第二上下文下被处理的程序代码114的部分并且不对在活动和第二上下文下对其执行一个或多个智能辅助功能的程序代码114的部分执行一个或多个智能辅助功能,节省了处理时间。
例如,在一些情况下,每个程序代码部分可以由一个或多个智能辅助功能处理一次,其节省了处理时间。在其他实施例中,可以在多次迭代中处理一些程序代码部分。下面示出示例程序代码以说明该情况:
该示例代码是针对条件编译的“ifdef”指令,如在本文中其他地方所描述的。因此,在程序代码的该部分中,可以针对DEBUG上下文处理portion#1和portion#3。当在第一非调试上下文中处理portion#2时,考虑先前从处理portion#2建立的知识,将再次处理portion#3。代码portion#3在这两个上下文(调试和非调试)中被处理,因为在针对两个上下文的程序代码中评价两个不同的类型(“struct A”和“struct B”)。
在实施例中,可以以任何方式从所有可用的、未迭代的上下文选择第三上下文,该方式包括如上文关于选择第二上下文所描述的。如此,在步骤506中,对被确定为在第三上下文中的程序代码114的一部分执行智能辅助功能。程序代码114的该部分可以以各种方式被确定,包括以与上文关于针对第二上下文的步骤502所描述的类似方式被确定。如果该第三迭代未涵盖所有程序代码114,则流程图500的迭代可以针对后续的上下文继续直到利用一个或多个智能辅助功能处理所有程序代码114。通过以该迭代方式执行一个或多个智能辅助功能,每个上下文迭代可以对程序代码114的较小部分操作,相对于其中程序代码114的整体针对每个上下文被处理的技术增加了速度并且缩短了处理时间。而且,每个可能的上下文不需要被迭代。在大多数情况下,可以迭代涵盖所有上下文的上下文的子集。
2.针对多上下文辅助迭代器的示例实施例
在实施例中,图1的多上下文辅助迭代器108可以以各种方式被配置为使能针对程序代码的多上下文智能辅助。例如,图6示出了根据示例实施例的多上下文辅助迭代器602的框图。多上下文辅助迭代器602是图1的多上下文辅助迭代器108的示例。如在图6中所示,多上下文辅助迭代器602包括智能辅助(IA)功能执行器604、代码跟踪器606和上下文选择器608。关于图7多上下文辅助迭代器602被描述如下。图7示出了根据示例实施例的可以由图6的多上下文辅助迭代器执行的过程的流程图700。关于图1和图6流程图700被描述如下。基于以下描述,进一步的结构和操作实施例对于一个或多个相关领域的技术人员而言将是明显的。
图7的流程图700以步骤702开始。在步骤702中,对程序代码执行智能辅助功能的请求被接收,活动上下文是当前所选择的上下文。例如,如在图6中所示,IA功能执行器604接收请求116。如上文所描述的,请求116是对程序代码114执行一个或多个智能辅助功能的请求。在请求116被接收之前或者当请求116被接收时,可以针对程序代码114设置活动上下文。操作从步骤702转到步骤704。
在步骤704中,针对多个上下文的当前所选择的上下文对程序代码执行智能辅助功能,以确定针对当前所选择的上下文的关于程序代码的代码知识,所确定的代码知识被包括在结果中。如在图6中所示,IA功能执行器604接收程序代码114。IA功能执行器604被配置为针对当前所选择的上下文对程序代码114执行在请求116中所指示的一个或多个智能辅助功能,当前所选择的上下文初始地是活动上下文,并且当前所选择的上下文可以是后续迭代期间的后续的上下文。在本文中其他地方描述了IA功能执行器604可以对程序代码114执行的智能辅助功能的示例,包括关于图3的步骤302。IA功能执行器604被配置为累积对程序代码114所执行的智能辅助功能的每次迭代的结果。
应注意到,在其中当前所选择的上下文是初始活动上下文的第一次迭代期间,IA功能执行器604尝试对活动上下文中的所有程序代码114执行一个或多个智能辅助功能。在每次后续的迭代中,当前所选择的上下文被改变为后续的上下文,并且IA功能执行器604可以对程序代码114的较小部分执行一个或多个智能辅助功能,其在未分析代码部分612中由代码跟踪器606被指示给IA功能执行器604。在步骤704期间,IA功能执行器604可以确定在其上一个或多个智能辅助功能在当前所选择的上下文中不能够被执行的程序代码114的任何部分。操作从步骤704转到步骤706。
在步骤706中,针对所选择的当前上下文和任何先前所选择的上下文跟踪在其上智能辅助功能不能够被执行的程序代码的任何未分析部分。在实施例中,IA功能执行器604输出未分析代码部分610,其指示在步骤704中在一个或多个智能辅助功能的最后的迭代(或先前的迭代)中不能够被分析的程序代码114的任何部分。代码跟踪器606接收未分析代码部分610,并且跟踪该未分析代码,该未分析代码要被提供给IA功能执行器604用于未分析代码部分612中的步骤704的后续的迭代。
在步骤708中,确定程序代码的任何未分析部分是否剩余。在实施例中,当未分析代码部分610在步骤704和706之后是空的(没有代码被指示)时,没有尚未使一个或多个智能辅助功能在其上被执行的代码剩余。代码跟踪器606向IA功能执行器604提供空的未分析代码部分610,其指示结果是完整的。在这样的情况下,操作从步骤708转到步骤710。如果未分析代码部分610不是空的(未分析代码被指示),则所指示的代码尚未使一个或多个智能辅助功能在其上被执行,并且另一迭代是期望的。因此,在这样的情况下,操作从步骤708转到步骤712。
在步骤710中,利用结果对请求进行响应。在实施例中,当未分析代码部分610是空的时,这指示不存在要对其执行一个或多个智能辅助功能的程序代码114的进一步的代码。因此,对程序代码114的智能辅助功能的迭代的累积结果由IA功能执行器604被输出为结果118。如上文所描述的,结果118可以由代码编辑器102(图1)接收,并且由用户接口112呈现给开发者。
在步骤712中,多个上下文中的下一上下文被选择为是下一所选择的当前上下文。例如,如在图6中所示,上下文选择器608可以接收未分析代码部分610。如果未分析代码部分610不是空的,则这指示上下文选择器608选择针对未分析代码部分610的迭代的下一上下文。根据实施例,上下文选择器608可以以任何方式选择下一上下文,包括如上文关于步骤502(图5)所描述的或以任何其他方式。如在图6中所示,上下文选择器608将所选择的下一上下文输出为所选择的下一上下文614。IA功能执行器604接收所选择的下一上下文614,并且将所接收的所选择的下一上下文用作针对步骤704的下一迭代的所选择的当前上下文。操作从步骤712转到步骤704。
III.示例移动和固定设备实施例
一个或多个计算设备118、开发系统100、源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108、多上下文辅助迭代器602、IA功能执行器604、代码跟踪器606、上下文选择器608、流程图200、流程图300、流程图400、流程图500和流程图700可以以硬件或硬件组合软件和/或固件实现。例如,开发系统100、源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108、多上下文辅助迭代器602、IA功能执行器604、代码跟踪器606、上下文选择器608、流程图200、流程图300、流程图400、流程图500和/或流程图700可以被实现为被配置为在一个或多个处理器中被执行并且被存储在计算机可读存储介质中。备选地,一个或多个计算设备118、开发系统100、源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108、多上下文辅助迭代器602、IA功能执行器604、代码跟踪器606、上下文选择器608、流程图200、流程图300、流程图400、流程图500和/或流程图700可以被实现为硬件逻辑/电路。
例如,在实施例中,开发系统100、源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108、多上下文辅助迭代器602、IA功能执行器604、代码跟踪器606、上下文选择器608、流程图200、流程图300、流程图400、流程图500和/或流程图700中的一个或多个可以以任何组合一起被实现在SoC中。SoC可以包括集成电路芯片,其包括以下各项中的一项或多项:处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口和/或进一步的电路,并且可以可选地执行所接收到的程序代码和/或包括执行功能的嵌入式固件。
图8示出了包括各种可选的硬件和软件部件(一般地被示出为部件802)的示例性移动设备800的框图。例如,移动设备800的部件802是可以被包括在移动设备实施例中的一个或多个计算设备118(图1)中的部件的示例。部件802的特征/元件的任何数目和组合以及附加和/或备选特征/元件可以被包括在移动设备实施例中,如一个或多个相关领域的技术人员将已知的。应注意到,尽管为了便于说明,并未示出所有连接,但是部件802中的任一个可以与部件802中的任何其他通信。移动设备800可以是在本文中其他地方所描述或所提到或以其他方式已知的各种移动设备中的任一个(例如,蜂窝电话、智能电话、手持式计算机、个人数字助理(PDA)等)并且可以通过一个或多个通信网络804(诸如蜂窝或卫星网络或)与一个或多个移动设备或与局域网或广域网无线双向通信。
所图示的移动设备800可以包括控制器或者处理器,其被称为用于执行诸如信号编码、图像处理、数据处理、输入/输出处理、功率控制和/或其他功能的任务的处理器电路810。处理器电路810是在一个或多个物理硬件电路设备元件和/或集成电路器件(半导体材料芯片或晶片)中被实现为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路的电路和/或光电路。处理器电路810可以执行存储在计算机可读介质中的程序代码,诸如一个或多个应用814的程序代码、操作系统812的程序代码、存储在存储器802中的任何程序代码等。操作系统812可以控制部件802的分配和使用并且支持一个或多个应用程序814(又称应用、“应用软件”等)。应用程序814可以包括常见移动计算应用(例如,电子邮件应用、日历、联系人管理器、web浏览器、消息应用)和任何其他计算应用(例如,字处理应用、地图应用、媒体播放器应用)。
如所图示的,移动设备800可以包括存储器820。存储器820可以包括不可移除的存储器822和/或可移除的存储器824。不可移除的存储器822可以包括RAM、ROM、闪速存储器、硬盘或其他众所周知的存储器存储技术。可移除的存储器824可以包括闪速存储器或在GSM通信系统中众所周知的用户身份模块(SIM)卡或者其他众所周知的存储器存储技术(诸如“智能卡”)。存储器820可以被用于存储用于运行操作系统812和应用814的数据和/或代码。示例数据可以包括经由一个或多个有线或无线网络被发送到一个或多个网络服务器或其他设备和/或从一个或多个网络服务器或其他设备接收的web页面、文本、图像、声音文件、视频数据或其他数据集。存储器820可以被用于存储用户标识符(诸如国际移动用户标识)(IMSI)和设备标识符(诸如国际移动设备标识符(IMEI))。这样的标识符可以被传送到网络服务器以标识用户和设备。
多个程序可以被存储在存储器820中。这些程序包括操作系统812、一个或多个应用程序814和其他程序模块和程序数据。这样的应用程序或程序模块的示例可以包括例如用于实现开发系统100、源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108、多上下文辅助迭代器602、IA功能执行器604、代码跟踪器606、上下文选择器608、流程图200、流程图300、流程图400、流程图500和/或流程图700(包括流程图200、300、400、500和700的任何适合的步骤)和/或本文所描述的进一步的实施例的计算机程序逻辑(例如,计算机程序代码或指令)。
移动设备800可以支持一个或多个输入设备830(诸如触摸屏832、麦克风834、照相机836、物理键盘838和/或轨迹球840)和一个或多个输出设备850(诸如扬声器852和显示器854)。触摸屏(诸如触摸屏832)可以以不同的方式检测输入。例如,当物体(例如,指尖)使跨表面的电流失真或中断时,电容性触摸屏检测到触摸输入。作为另一示例,当来自光学传感器的光束被中断时,触摸屏可以使用光学传感器检测到触摸输入。与屏幕的表面的物理接触对于要由一些触摸屏检测的输入而言是不必要的。例如,触摸屏832可以被配置为使用电容性感测支持手指悬停检测,如本领域中众所周知的。如上文已经描述的,可以使用其他检测技术,包括基于照相机的检测和基于超声的检测。为了实现手指悬停,用户的手指通常在触摸屏上的预定间隔距离内,诸如在0.1至0.25英寸之间、或在.0.25英寸与.05英寸之间或在.0.5英寸与0.75英寸之间或在.75英寸与1英寸之间或在1英寸与1.5英寸之间等。
出于说明的目的,触摸屏832被示出为包括控制接口892。控制接口892被配置为控制与显示在触摸屏832上的虚拟元件相关联的内容。在示例实施例中,控制接口892被配置为控制由应用814中的一个或多个所提供的内容。例如,当移动设备800的用户利用应用时,控制接口892可以被呈现给触摸屏832上的用户以使得用户能够访问控制这样的内容的控件。控制接口892的呈现可以基于距触摸屏832指定距离内的运动的检测或这样的运动的缺少(例如,由其触发)。下面更详细地描述了基于运动或运动的缺少使得控制接口(例如,控制接口892)被呈现在触摸屏(例如,触摸屏832)上的示例实施例。
其他可能的输出设备(未示出)可以包括压电或其他触觉输出设备。一些设备可以服务超过一个输入/输出功能。例如,触摸屏832和显示器854可以组合在单个输入/输出设备中。输入设备830可以包括自然用户接口(NUI)。NUI是使得用户能够以没有由输入设备(诸如鼠标、键盘、遥控器等)强加的人工约束的“自然的”方式与设备交互的任何接口技术。NUI方法的示例包括依赖于话音识别、触摸和触笔识别、在屏幕上和屏幕附近二者的手势识别、空中手势、头和眼跟踪、语音和话音、视觉、触摸、手势和机器智能的那些示例。NUI的其他示例包括使用加速度计/陀螺仪的运动手势检测、面部识别、3D显示器、头、眼和视线跟踪、沉浸式增强现实和虚拟现实系统,其全部提供更自然的接口,以及用于使用电场感测电极(EEG和相关方法)感测大脑活动的技术。因此,在一个具体示例中,操作系统812或应用814可以包括话音识别软件作为允许用户经由语音命令操作设备800的语音控制接口的一部分。进一步地,设备800可以包括允许经由用户的空间手势的用户交互的输入设备和软件,诸如检测和解释手势以向游戏应用提供输入。
一个或多个无线调制解调器860可以被耦合到一个或多个天线(未示出)并且可以支持处理器电路810与外部设备之间的双向通信,如本领域众所周知的。一个或多个调制调节器860一般地被示出并且可以包括用于与移动通信网络804通信的蜂窝调制解调器866和/或其他基于无线电的调制解调器(例如,蓝牙864和/或Wi-Fi862)。蜂窝调制解调器866可以被配置为根据任何适合的通信标准或技术(诸如GSM、3G、4G、5G等)使能电话呼叫(和可选地传送数据)。一个或多个无线调制解调器860中的至少一个通常被配置用于与一个或多个蜂窝网络(诸如用于单个蜂窝网络内、蜂窝网络之间或移动设备与公共交换电话网络(PSTN)之间的数据和语音通信的GSM网络)的通信。
移动设备800可以进一步包括至少一个输入/输出端口880、电源882、卫星导航系统接收器884(诸如全球定位系统(GPS)接收器)、加速度计886和/或物理连接器890,其可以是USB端口、IEEE1394(FireWire)端口和/或RS-232端口。所图示的部件802不是被要求或无所不包的,因为可以不存在任何部件并且可以附加地存在其他部件,如本领域的技术人员将认识到的。
而且,图9描绘了在其中可以实现实施例的计算设备900的示例性实施方式。例如,一个或多个计算设备118(图1)可以被实现在与固定计算机实施例中的计算设备900类似的一个或多个计算设备中,包括计算设备900的一个或多个特征和/或备选特征。本文所提供的计算设备900的描述被提供用于说明的目的,并且不旨在是限制性的。实施例可以被实现在进一步的类型的计算机系统中,如一个或多个相关领域的技术人员将已知的。
如在图9中所示,计算设备900包括一个或多个处理器(被称为处理器电路902)、系统存储器904和总线906,其将包括系统存储器904的各种系统部件耦合到处理器电路902。处理器电路902是在一个或多个物理硬件电路设备元件和/或集成电路器件(半导体材料芯片或晶片)中被实现为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路的电路和/或光电路。处理器电路902可以执行存储在计算机可读介质中的程序代码,诸如操作系统930、应用程序932、其他程序934等的程序代码。总线906表示任何若干类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口和使用各种总线架构中的任一个的处理器或本地总线。系统存储器904包括只读存储器(ROM)908和随机存取存储器(RAM)910。基本输入/输出系统912(BIOS)被存储在ROM 908中。
计算设备900还具有以下驱动器中的一个或多个:硬盘驱动器914,其用于从硬盘读取和写到硬盘;磁盘驱动器916,其用于从可移除的磁盘918读取或写到可移除的磁盘918;和光盘驱动器920,其用于从可移除的光盘922读取或写到可移除的光盘922(诸如CDROM、DVD ROM或其他光学介质)。硬盘驱动器914、磁盘驱动器916和光盘驱动器920相应地通过硬盘驱动器接口924、磁盘驱动器接口926和光学驱动器接口928被连接到总线906。驱动器和其相关联的计算机可读介质提供计算机可读指令、数据结构、程序模块和针对计算机的其他数据的非易失性存储。虽然描述了硬盘、可移除的磁盘和可移除的光盘,其他类型的基于硬件的计算机可读存储介质可以被用于存储数据(诸如闪存卡、数字视频盘、RAM、ROM和其他硬件存储介质)。
多个程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统930、一个或多个应用程序932、其他程序934和程序数据936。应用程序932或其他程序934可以包括例如用于实现开发系统100、源代码编辑器102、编译器104、调试器工具106、多上下文辅助迭代器108、多上下文辅助迭代器602、IA功能执行器604、代码跟踪器606、上下文选择器608、流程图200、流程图300、流程图400、流程图500和/或流程图700(包括流程图200、300、400、500和700的任何适合的步骤)和/或本文所描述的进一步的实施例的计算机程序逻辑(例如,计算机程序代码或指令)。
用户可以通过输入设备(诸如键盘938和指点设备940)将命令和信息输入计算设备900中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏板、卫星盘、扫描器、触摸屏和/或触摸板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其他输入设备常常通过耦合到总线906的串行端口接口942连接到处理器电路902,但是可以通过其他接口(诸如并行端口、游戏端口或者通用串行总线(USB))连接。
显示屏944还经由接口(诸如视频适配器946)被连接到总线906。显示屏944可以在计算设备900的外部或包含在计算设备900中。显示屏944可以显示信息,以及是用于接收用户命令和/或其他信息的用户接口(例如,通过触摸、手指手势、虚拟键盘等)。除显示屏944之外,计算设备900可以包括其他外围输出设备(未示出)(诸如扬声器和打印机)。
计算设备900通过适配器或网络接口950、调制解调器952或用于通过网络建立通信的其他装置被连接到网络948(例如,因特网)。可以在内部或外部的调制解调器952可以经由串行端口接口942被连接到总线906,如图9中所示,或者可以使用另一接口类型(包括并行接口)被连接到总线906。
如本文所使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”被用于一般地指代物理硬件介质(诸如与硬盘驱动器914相关联的硬盘、可移除的磁盘918、可移除的光盘922、其他物理硬件介质(诸如RAM、ROM、闪存卡、数字视频盘、压缩盘、MEM、基于纳米技术的存储设备和进一步的类型的物理/有形硬件存储介质(包括图8的存储器820)))。这样的计算机可读存储介质与通信介质区分并且不与通信介质重叠(不包括通信介质)。通信介质通常实现计算机可读指令、数据结构、程序模块或诸如载波的经调制的数据信号中的数据。术语“经调制的数据信号”意指具有以关于将信息编码在信号中的这样的方式设置或改变其特点中的一个或多个的信号。以示例而非限制的方式,通信介质包括无线介质(诸如声学、RF、红外和其他无线介质)以及有线介质。实施例还涉及这样的通信介质。
如上文所指出的,计算机程序和模块(包括应用程序932和其他程序934)可以被存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。还可以经由网络接口950、串行端口接口942或任何其他接口类型接收这样的计算机程序。当由应用执行或加载时,这样的计算机程序使得计算设备900能够实现本文所讨论的实施例的特征。因此,这样的计算机程序表示计算设备900的控制器。
实施例还涉及包括被存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这样的计算机程序产品包括硬盘驱动器、光盘驱动器、存储器设备封装、便携式记忆棒、存储器卡和其他类型的物理存储硬件。
IV.示例实施例
在一个实施例中,提供了代码开发工具中的方法,包括:接收在与程序代码相关联的多个上下文的活动上下文中对程序代码执行智能辅助功能的请求;响应于接收到请求,在活动上下文中对程序代码执行智能辅助功能以确定针对活动上下文的关于程序代码的代码知识,确定程序代码的第一部分和程序代码的第二部分,针对活动上下文能够针对第一部分执行智能辅助功能,针对活动上下文不能够针对第二部分执行智能辅助功能,以及在多个上下文的至少一个附加上下文中对程序代码的第二部分执行智能辅助功能,以确定针对至少一个附加上下文的关于程序代码的代码知识;以及利用对程序代码执行智能辅助功能的结果对请求进行响应,结果涵盖多个上下文的所有上下文。
在实施例中,在多个上下文的至少一个附加上下文中对程序代码的第二部分执行智能辅助功能,以确定针对至少一个附加上下文的关于程序代码的代码知识包括:在多个上下文的第二上下文中对程序代码执行智能辅助功能,以确定针对第二上下文的关于程序代码的代码知识,确定程序代码的第二部分的第三部分和程序代码的第二部分的第四部分,针对第二上下文能够针对第三部分执行智能辅助功能,针对活动上下文不能够针对第四部分执行智能辅助功能,以及在多个上下文的至少第三上下文中对程序代码的第四部分执行智能辅助功能,以确定针对至少第三上下文的关于程序代码的代码知识。
在实施例中,多个上下文包括调试上下文和发布上下文。
在实施例中,多个上下文包括第一操作系统上下文和第二操作系统上下文。
在实施例中,多个上下文包括第一指令集架构上下文和第二指令集架构上下文。
在实施例中,确定程序代码的第一部分和程序代码的第二部分,针对活动上下文能够针对第一部分执行智能辅助功能,针对活动上下文不能够针对第二部分执行智能辅助功能包括:检测标记有针对活动上下文的条件编译指示符或未标记有条件编译指示符的程序代码中的一个或多个第一代码部分;在所确定的程序代码的第一部分中包括所检测到的一个或多个第一代码部分;检测标记有针对与活动上下文不同的上下文的条件编译指示符的程序代码中的一个或多个第二代码部分;以及在所确定的程序代码的第二部分中包括所检测到的一个或多个第二代码部分。
在实施例中,智能辅助功能未针对多个上下文的所有上下文被执行以生成涵盖多个上下文的所有上下文的结果。
在另一实施例中,系统包括用户接口和多上下文辅助迭代器。用户接口被配置为接收对程序代码执行智能辅助功能的请求,并且被配置为提供对请求的响应,响应包括对程序代码执行智能辅助功能的结果,结果涵盖与程序代码相关联的多个上下文的所有上下文。多上下文辅助迭代器被配置为响应于生成结果的请求,对程序代码迭代地执行智能辅助功能。多上下文辅助迭代器包括:功能执行器,其被配置为针对多个上下文的当前所选择的上下文对程序代码执行智能辅助功能,以确定针对当前所选择的上下文的关于程序代码的代码知识,所确定的代码知识被包括在结果中;代码跟踪器,其被配置为跟踪程序代码的未分析部分,针对所选择的当前上下文和任何先前所选择的上下文不能够对未分析部分执行智能辅助功能;和上下文选择器,其被配置为将多个上下文的下一上下文选择为下一所选择的当前上下文,以使得功能执行器对程序代码的未分析部分执行智能辅助功能,以确定针对下一所选择的下一上下文的关于程序代码的代码知识。
在实施例中,功能执行器被配置为初始地在多个上下文的活动上下文中对程序代码执行智能辅助功能,以确定针对活动上下文的关于程序代码的代码知识;代码跟踪器被配置为跟踪程序代码的第一未分析部分,针对活动上下文不能够针对第一未分析部分执行智能辅助功能;以及上下文选择器被配置为将多个上下文的下一上下文选择为在活动上下文之后的下一所选择的当前上下文,以使得功能执行器对程序代码的第一未分析部分执行智能辅助功能,以确定针对下一所选择的下一上下文的关于程序代码的代码知识。
在实施例中,多个上下文包括调试上下文和发布上下文。
在实施例中,多个上下文包括第一操作系统上下文和第二操作系统上下文。
在实施例中,多个上下文包括第一指令集架构上下文和第二指令集架构上下文。
在实施例中,功能执行器被配置为检测标记有针对与当前所选择的上下文不同的上下文的条件编译指示符的程序代码中的一个或多个未分析代码部分;以及代码跟踪器被配置为在程序代码的未分析部分中包括所检测到的一个或多个未分析代码部分。
在实施例中,智能辅助功能未针对多个上下文的所有上下文由功能执行器执行以生成涵盖多个上下文的所有上下文的结果。
在另一实施例中,一种计算机可读存储介质包括计算机可执行指令,计算机可执行指令当由处理器执行时执行包括以下各项的方法:接收在与程序代码相关联的多个上下文的活动上下文中对程序代码执行智能辅助功能的请求;响应于接收到请求,对活动上下文中的程序代码执行智能辅助功能以确定针对活动上下文的关于程序代码的代码知识,确定程序代码的第一部分和程序代码的第二部分,针对活动上下文能够针对第一部分执行智能辅助功能,针对活动上下文不能够针对第二部分执行智能辅助功能,以及在多个上下文的至少一个附加上下文中对程序代码的第二部分执行智能辅助功能,以确定针对至少一个附加上下文的关于程序代码的代码知识;以及利用对程序代码执行智能辅助功能的结果对请求进行响应,结果涵盖多个上下文的所有上下文。
在实施例中,在多个上下文的至少一个附加上下文中对程序代码的第二部分执行智能辅助功能,以确定针对至少一个附加上下文的关于程序代码的代码知识包括:在多个上下文的第二上下文中对程序代码执行智能辅助功能,以确定针对第二上下文的关于程序代码的代码知识,确定程序代码的第二部分的第三部分和程序代码的第二部分的第四部分,针对第二上下文能够针对第三部分执行智能辅助功能,针对活动上下文不能够针对第四部分执行智能辅助功能,以及在多个上下文的至少第三上下文中对程序代码的第四部分执行智能辅助功能,以确定针对至少第三上下文的关于程序代码的代码知识。
在实施例中,多个上下文包括调试上下文和发布上下文。
在实施例中,多个上下文包括第一操作系统上下文和第二操作系统上下文。
在实施例中,多个上下文包括第一指令集架构上下文和第二指令集架构上下文。
在实施例中,确定程序代码的第一部分和程序代码的第二部分,针对活动上下文能够针对第一部分执行智能辅助功能,针对活动上下文不能够针对第二部分执行智能辅助功能包括:检测标记有针对活动上下文的条件编译指示符或未标记有条件编译指示符的程序代码中的一个或多个第一代码部分;在所确定的程序代码的第一部分中包括所检测到的一个或多个第一代码部分;检测标记有针对与活动上下文不同的上下文的条件编译指示符的程序代码中的一个或多个第二代码部分;以及在所确定的程序代码的第二部分中包括所检测到的一个或多个第二代码部分。
V.结论
虽然上文已经描述本发明的各种实施例,但是应当理解,其仅以示例而非限制的方式而已经被呈现。一个或多个相关领域的技术人员将理解到,在不脱离如随附的权利要求中所限定的本发明的精神和范围的情况下,可以在其中做出形式和细节的各种改变。因此,本发明的宽度和范围不应当由上文所描述的示例性实施例中的任一个限定,而是应当仅根据权利要求和其等同物限定。

Claims (15)

1.一种代码开发工具中的计算机实现的方法,包括:
接收在与程序代码相关联的多个上下文的活动上下文中对所述程序代码执行智能辅助功能的请求;
响应于接收到所述请求
使用至少一个处理器电路在所述活动上下文中对所述程序代码执行所述智能辅助功能,以确定针对所述活动上下文的关于所述程序代码的代码知识,
使用所述至少一个处理器电路确定所述程序代码的第一部分和所述程序代码的第二部分,针对所述活动上下文能够针对所述第一部分执行所述智能辅助功能,针对所述活动上下文不能够针对所述第二部分执行所述智能辅助功能,以及
使用所述至少一个处理器电路在所述多个上下文的至少一个附加上下文中对所述程序代码的所述第二部分执行所述智能辅助功能,以确定针对所述至少一个附加上下文的关于所述程序代码的代码知识;以及
利用对所述程序代码执行所述智能辅助功能的结果对所述请求进行响应,所述结果涵盖所述多个上下文的所有上下文。
2.根据权利要求1所述的方法,其中所述在所述多个上下文的至少一个附加上下文中对所述程序代码的所述第二部分执行所述智能辅助功能,以确定针对所述至少一个附加上下文的关于所述程序代码的代码知识包括:
在所述多个上下文的第二上下文中对所述程序代码执行所述智能辅助功能,以确定针对所述第二上下文的关于所述程序代码的代码知识,
确定所述程序代码的所述第二部分的第三部分和所述程序代码的所述第二部分的第四部分,针对所述第二上下文能够针对所述第三部分执行所述智能辅助功能,针对所述活动上下文不能够针对所述第四部分执行所述智能辅助功能,以及
在所述多个上下文的至少第三上下文中对所述程序代码的所述第四部分执行所述智能辅助功能,以确定针对至少所述第三上下文的关于所述程序代码的代码知识。
3.根据权利要求1所述的方法,其中所述多个上下文包括调试上下文和发布上下文。
4.根据权利要求1所述的方法,其中所述多个上下文包括第一操作系统上下文和第二操作系统上下文。
5.根据权利要求1所述的方法,其中所述多个上下文包括第一指令集架构上下文和第二指令集架构上下文。
6.根据权利要求1所述的方法,其中所述确定所述程序代码的第一部分和所述程序代码的第二部分,针对所述活动上下文能够针对所述第一部分执行所述智能辅助功能,针对所述活动上下文不能够针对所述第二部分执行所述智能辅助功能包括:
检测标记有针对所述活动上下文的条件编译指示符或未标记有条件编译指示符的所述程序代码中的一个或多个第一代码部分;
在所确定的所述程序代码的所述第一部分中包括所检测到的所述一个或多个第一代码部分;
检测标记有针对与所述活动上下文不同的上下文的条件编译指示符的所述程序代码中的一个或多个第二代码部分;以及
在所确定的所述程序代码的所述第二部分中包括所检测到的所述一个或多个第二代码部分。
7.根据权利要求1所述的方法,其中所述智能辅助功能未针对所述多个上下文的所有上下文被执行以生成涵盖所述多个上下文的所有上下文的所述结果。
8.一种系统,包括:
至少一个处理器电路;
用户接口,其被配置为接收对程序代码执行智能辅助功能的请求,并且被配置为提供对所述请求的响应,所述响应包括对所述程序代码执行所述智能辅助功能的结果,所述结果涵盖与所述程序代码相关联的多个上下文的所有上下文;以及
多上下文辅助迭代器,其由所述至少一个处理器电路实现,其被配置为响应于用于生成所述结果的所述请求,对所述程序代码迭代地执行所述智能辅助功能,所述多上下文辅助迭代器包括
功能执行器,其被配置为针对所述多个上下文的当前所选择的上下文对所述程序代码执行所述智能辅助功能,以确定针对所述当前所选择的上下文的关于所述程序代码的代码知识,所确定的所述代码知识被包括在所述结果中,
代码跟踪器,其被配置为跟踪所述程序代码的未分析部分,针对所选择的当前上下文和任何先前所选择的上下文不能够对所述未分析部分执行所述智能辅助功能,以及
上下文选择器,其被配置为将所述多个上下文的下一上下文选择为下一所选择的当前上下文,以使得所述功能执行器对所述程序代码的所述未分析部分执行所述智能辅助功能,以确定针对下一所选择的下一上下文的关于所述程序代码的代码知识。
9.根据权利要求8所述的系统,其中所述功能执行器被配置为初始地在所述多个上下文的活动上下文中对所述程序代码执行所述智能辅助功能,以确定针对所述活动上下文的关于所述程序代码的代码知识;
所述代码跟踪器被配置为跟踪所述程序代码的第一未分析部分,针对所述活动上下文不能够针对所述第一未分析部分执行所述智能辅助功能;以及
所述上下文选择器被配置为将所述多个上下文的下一上下文选择为在所述活动上下文之后的所述下一所选择的当前上下文,以使得所述功能执行器对所述程序代码的所述第一未分析部分执行所述智能辅助功能,以确定针对所述下一所选择的下一上下文的关于所述程序代码的代码知识。
10.根据权利要求8所述的系统,其中所述多个上下文包括调试上下文和发布上下文。
11.根据权利要求8所述的系统,其中所述多个上下文包括第一操作系统上下文和第二操作系统上下文。
12.根据权利要求8所述的系统,其中所述多个上下文包括第一指令集架构上下文和第二指令集架构上下文。
13.根据权利要求8所述的系统,其中所述功能执行器被配置为检测标记有针对与所述当前所选择的上下文不同的上下文的条件编译指示符的所述程序代码中的一个或多个未分析代码部分;以及
所述功能执行器被配置为积累所述程序代码的所述未分析部分中的所检测到的所述一个或多个未分析代码部分。
14.根据权利要求8所述的系统,其中所述智能辅助功能未针对所述多个上下文的所有上下文由所述功能执行器执行以生成涵盖所述多个上下文的所有上下文的所述结果。
15.一种包括具有记录在其上的计算机程序逻辑的计算机可读介质的计算机程序产品,包括:
计算机程序逻辑,其使得处理器能够执行权利要求1至7中的任一项。
CN201580049776.5A 2014-09-11 2015-09-14 具有多上下文智能辅助的代码开发工具 Pending CN107077346A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/486,851 2014-09-15
US14/486,851 US20160077831A1 (en) 2014-09-11 2014-09-15 Accurate and performant code design using memoization
PCT/US2015/049871 WO2016044109A1 (en) 2014-09-11 2015-09-14 Code development tool with multi-context intelligent assistance

Publications (1)

Publication Number Publication Date
CN107077346A true CN107077346A (zh) 2017-08-18

Family

ID=54197107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580049776.5A Pending CN107077346A (zh) 2014-09-11 2015-09-14 具有多上下文智能辅助的代码开发工具

Country Status (5)

Country Link
US (1) US20160077831A1 (zh)
EP (1) EP3195115A1 (zh)
KR (1) KR20170057264A (zh)
CN (1) CN107077346A (zh)
WO (1) WO2016044109A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360144A (zh) * 2021-06-22 2021-09-07 北京百度网讯科技有限公司 软件开发的辅助处理方法、设备、存储介质及程序产品

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452227B1 (en) * 2016-03-31 2019-10-22 United Services Automobile Association (Usaa) System and method for data visualization and modification in an immersive three dimensional (3-D) environment
CN106802806B (zh) * 2017-01-17 2021-01-15 泰康保险集团股份有限公司 用于集成软件开发环境的方法及装置
US11487933B2 (en) 2018-12-07 2022-11-01 Hewlett Packard Enterprise Development Lp Error detection and correction for multiple document editor
US11150876B2 (en) * 2019-01-09 2021-10-19 Servicenow, Inc. Transparent client-side source code editing on a remote network management platform
US11947933B2 (en) 2021-01-08 2024-04-02 Microsoft Technology Licensing, Llc Contextual assistance and interactive documentation
WO2022236031A1 (en) * 2021-05-06 2022-11-10 Wisconsin Alumni Research Foundation Computer implemented program specialization
WO2024103764A1 (zh) * 2022-11-15 2024-05-23 华为云计算技术有限公司 基于云服务的代码生成方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070044066A1 (en) * 2005-08-19 2007-02-22 Microsoft Corporation Embedded multi-language programming
CN101589380A (zh) * 2006-01-30 2009-11-25 微软公司 基于上下文的代码分析
US20130339928A1 (en) * 2012-06-18 2013-12-19 Microsoft Corporation Adaptive portable libraries

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774728A (en) * 1995-12-27 1998-06-30 International Business Machines Corporation Method and system for compiling sections of a computer program for multiple execution environments
US6799718B2 (en) * 2001-07-10 2004-10-05 Borland Software Corp. Development assistance for mixed-language sources
US7127707B1 (en) * 2002-10-10 2006-10-24 Microsoft Corporation Intellisense in project upgrade
US7761859B2 (en) * 2004-08-13 2010-07-20 National Instruments Corporation Application development environment with features for aiding a user in writing function calls
US20060112397A1 (en) * 2004-11-18 2006-05-25 Makaram Raghunandan Cross-architecture software development
US8266585B2 (en) * 2005-12-15 2012-09-11 International Business Machines Corporation Assisting a software developer in creating source code for a computer program
US20080127037A1 (en) * 2006-10-16 2008-05-29 Prashanth Kadur System and method for detecting software on a computing device
CA2630865A1 (en) * 2007-05-07 2008-11-07 Nextair Corporation System, apparatus and method for programming a computing device
US8479156B2 (en) * 2009-06-18 2013-07-02 National Instruments Corporation Providing target specific information for textual code at edit time
US9002876B2 (en) * 2010-12-02 2015-04-07 Sap Se Interpreted computer language to analyze business object data with defined relations
US9081595B1 (en) * 2011-12-06 2015-07-14 The Mathworks, Inc. Displaying violated coding rules in source code
US8898200B2 (en) * 2012-12-03 2014-11-25 Sap Ag Insight generation from statistical measure/dimension combinations
US20140173563A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Editor visualizations
US9471286B2 (en) * 2013-06-04 2016-10-18 Microsoft Technology Licensing, Llc System and method for providing code completion features for code modules
US9740462B2 (en) * 2014-08-27 2017-08-22 Sap Se Adaptive, context-aware, model-based suggestions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070044066A1 (en) * 2005-08-19 2007-02-22 Microsoft Corporation Embedded multi-language programming
CN101589380A (zh) * 2006-01-30 2009-11-25 微软公司 基于上下文的代码分析
US20130339928A1 (en) * 2012-06-18 2013-12-19 Microsoft Corporation Adaptive portable libraries

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360144A (zh) * 2021-06-22 2021-09-07 北京百度网讯科技有限公司 软件开发的辅助处理方法、设备、存储介质及程序产品
CN113360144B (zh) * 2021-06-22 2023-08-08 北京百度网讯科技有限公司 软件开发的辅助处理方法、设备、存储介质及程序产品

Also Published As

Publication number Publication date
US20160077831A1 (en) 2016-03-17
WO2016044109A1 (en) 2016-03-24
KR20170057264A (ko) 2017-05-24
EP3195115A1 (en) 2017-07-26

Similar Documents

Publication Publication Date Title
CN107077346A (zh) 具有多上下文智能辅助的代码开发工具
CN106471476B (zh) 用于对经优化代码的编辑并继续以及增强的经优化调试的技术
CN106462399B (zh) 代码推荐
EP3161627B1 (en) Incremental compilation of whole program code
CN105190548B (zh) 用于自动分析软件风险的方法和系统
US9075918B1 (en) System and method for creating change-resilient scripts
CN105580384A (zh) 触摸屏上显示的可操作内容
CN107221328B (zh) 修改源的定位方法及装置、计算机设备及可读介质
CN104424402B (zh) 一种用于检测盗版应用程序的方法及装置
WO2014100475A1 (en) Editor visualizations
JP6756079B2 (ja) 人工知能に基づく三元組チェック方法、装置及びコンピュータプログラム
US10534861B2 (en) Automated term extraction
CN108139891A (zh) 针对外部文件的缺失包括建议
CN104484671B (zh) 应用于移动平台的目标检索系统
EP2706459B1 (en) Apparatus and method for validating a compiler for a reconfigurable processor
CN102566912B (zh) 按钮激活的上下文搜索
CN108920382B (zh) 测试用例生成方法、装置、存储介质及服务器
CN105045588A (zh) 一种切换输入法皮肤的方法和装置
CN106055343B (zh) 一种基于程序演进模型的目标代码逆向工程系统
CN110232277A (zh) 网页后门的检测方法、装置和计算机设备
CN113961919A (zh) 恶意软件检测方法和装置
CN110850982A (zh) 基于ar的人机交互学习方法、系统、设备及存储介质
CN102289835A (zh) 微动画效果查看方法及装置
Hany et al. Hands-On Generative Adversarial Networks with PyTorch 1. x: Implement next-generation neural networks to build powerful GAN models using Python
CN110489563B (zh) 图结构的表示方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170818

WD01 Invention patent application deemed withdrawn after publication