在开发环境中集成诊断信息转让专利

申请号 : CN201380034213.X

文献号 : CN104428757B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·C·布拉东G·琼斯M·A·格罗夫斯T·G·特里温

申请人 : 微软技术许可有限责任公司

摘要 :

本文描述的主题的各方面涉及辅助软件开发。在各方面,软件开发环境可以在用户界面上显示代码以及关于该代码的信息。在一个示例中,该信息包括关于代码的诊断信息。该信息可由允许软件开发者进行深度挖掘并获取关于代码的更详细的信息的可操作标签表示。该信息可由软件开发环境以不干扰软件开发者的开发活动的方式自动获取。可操作标签紧邻与其相关联的代码显示。

权利要求 :

1.一种至少部分地由计算机实现的方法,所述方法包括:

在软件开发环境的图形界面上显示编程语言的代码,所述图形界面能操作用于接收关于软件开发活动的输入;

从用户接收关于软件开发活动的指令;

与从所述用户接收关于所述软件开发活动的所述指令异步地执行动作,所述动作包括:获取关于所述代码的信息;

确定要显示在所述图形界面上的可操作标签,所述可操作标签指示关于所述代码的附加数据,所述可操作标签与所述代码的各部分相关联,在被激活时所述可操作标签使得所述软件开发环境显示关于所述代码的附加信息;

在所述图形界面上毗邻所述代码显示所述可操作标签;以及

响应于检测到来自所述用户的对所述可操作标签的激活,显示与所激活的可操作标签相关联的更详细的信息。

2.如权利要求1所述的方法,其特征在于,与接收所述指令异步地执行动作包括由第一线程执行所述动作,所述第一线程在第二线程接收到所述指令并且根据所述指令操作时不被阻塞。

3.如权利要求1所述的方法,其特征在于,在所述图形界面上显示所述可操作标签包括在类、方法和变量中的一个或多个的上方显示所述可操作标签。

4.如权利要求1所述的方法,其特征在于,进一步包括可视地突出显示已经对与所述可操作标签中的至少一个相对应的数据进行的变更。

5.如权利要求4所述的方法,其特征在于,可视地突出显示已经对所述可操作标签中的至少一个进行的变更包括在关于所述代码的信息指示所述代码的执行时间已经改变的情况下显示突出显示的文本。

6.一种在计算环境中的系统,包括:

软件开发环境,所述软件开发环境能操作用于从用户接收关于软件开发活动的输入,所述软件开发环境包括:能操作用于呈现与软件程序的代码相关联的文本的显示器,

能操作用于从所述用户接收与所述代码相关的编辑指令的源代码编辑器,能操作用于获取关于所述代码的信息的获取管理器,以及能操作用于确定要呈现在所述显示器上的可操作标签的动作标签管理器,所述可操作标签表示关于所述代码的信息,所述动作标签管理器还能操作用于使得在所述显示器上呈现所述可操作标签,以使得每一个可操作标签毗邻该可操作标签所关联的代码部分呈现,并且响应于检测到来自所述用户的对所述可操作标签的激活,显示与所激活的可操作标签相关联的更详细的信息,其中所述获取管理器和所述动作标签管理器与所述源代码编辑器异步地操作。

7.如权利要求6所述的系统,其特征在于,进一步包括能操作用于与所述软件开发活动异步地生成所述信息的一个或多个信息提供者。

8.如权利要求6所述的系统,其特征在于,所述动作标签管理器还能操作用于接收指示正与动作标签交互的消息并且作为响应使得在所述显示器上呈现关于所述动作标签的更详细的信息。

9.一种在计算机系统中的图形用户界面,包括:

其中呈现软件程序的代码的第一区域;以及

其中呈现关于所述代码的可操作标签的第二区域,所述可操作标签指示关于所述代码的附加数据,所述附加数据与来自用户的在所述第一区域内进行的软件开发活动异步地获取,在被所述用户激活时所述可操作标签使得软件开发环境在第三区域中呈现关于所述代码的附加信息,所述第一、第二和第三区域彼此相邻。

10.如权利要求9所述的图形用户界面,其特征在于,所述可操作标签用比用于呈现表示所述代码的文本更小的字体大小且用与用于呈现表示所述代码的文本的颜色不同的颜色来呈现。

说明书 :

在开发环境中集成诊断信息

[0001] 背景
[0002] 存在可用于分析软件的许多工具。每一个工具都可测量软件的一个或多个特性。使用这些工具,从这些工具获取信息并将信息用来改进软件经常是复杂且耗时的过程。
[0003] 在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。
[0004] 概述
[0005] 简而言之,本文描述的主题的各方面涉及辅助软件开发。在各方面,软件开发环境可以在用户界面上显示代码以及关于该代码的信息。在一个示例中,该信息包括关于代码的诊断信息。该信息可由允许软件开发者进行深度挖掘并获取关于代码的更详细的信息的可操作标签表示。该信息可由软件开发环境以不干扰软件开发者的开发活动的方式自动获取。可操作标签紧邻与其相关联的代码显示。
[0006] 提供本概述是为了简要地标识在以下详细描述中进一步描述的主题的一些方面。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
[0007] 除非上下文清楚地指出,否则短语“本发明所描述的主题”指的是具体实施方式中描述的主题。术语“方面”应被当作“至少一个方面”。标识具体实施方式中所描述的主题的各方面不旨在标识所要求保护的主题的关键特征或必要特征。
[0008] 上述各方面和本发明所描述的主题的其它方面是作为示例说明的,并且不受附图限制,附图中相似的参考标号指示相似的元素。
[0009] 附图简述
[0010] 图1-2是表示本文描述的主题的各方面可以在其中操作的示例性环境的框图;
[0011] 图3是根据此处所描述的主题的各方面的示例性用户界面窗口的框图;
[0012] 图4-7是根据此处所描述的主题的各方面的附加示例性用户界面窗口的框图;以及
[0013] 图8是根据此处所描述的主题的各方面的概括地表示可发生的动作的流程图。
[0014] 详细描述
[0015] 定义
[0016] 如本文所使用的,术语“包括”及其变体被当作开放式术语,表示“包括但不限于”。除非上下文另外清楚地指示出,否则术语“或”被当作“和/或”。术语“基于”被当作“至少部分地基于”。术语“一个实施例”和“一实施例”被当作“至少一个实施例”。术语“另一实施例”被当作“至少一个其他实施例”。
[0017] 如此处所使用的,诸如“一”和“该”等术语包括了所指示的项目或动作中的一个或多个。具体而言,在权利要求书中,对一个项的引用一般表示至少一个这样的项存在,并且对一个动作的引用表示执行该动作的至少一个实例。
[0018] 本文中有时可使用术语“第一”、“第二”、“第三”等等。没有其他上下文,权利要求中对这些术语的使用不意在暗示排序,而是用于标识的目的。例如,短语“第一版本”和“第二版本”不一定意味着第一版本是真正的第一个版本或是在第二版本之前创建的,或甚至是第一版本是在第二版本之前被请求或操作的。相反,这些短语用于标识不同的版本。
[0019] 本文所使用的术语“函数”可被认为是执行一个或多个任务的代码部分。虽然函数可包括返回数据的代码块,但它不限于返回数据的代码块。函数还可执行特定任务而不返回任何数据。此外,函数可以或可以不具有输入参数。函数可包括子例程、子程序、过程、方法、例程等。因而,在使用术语函数时,在替换实施例中,词语函数将被以上术语中的每一个所替换。
[0020] 如本发明所使用的计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括:RAM、ROM、EEPROM、固态存储、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机访问的任何其它介质。计算机存储介质不包括通信介质。
[0021] 标题仅是为了方便;关于给定话题的信息可在其标题指示该话题的章节之外被寻找到。
[0022] 其他显式或隐式定义可包括在下文中。
[0023] 示例性实施例
[0024] 图1-2是表示本文描述的主题的各方面可以在其中操作的示例性环境的框图。图1-2中示出的组件是示例性的且不意味着包括一切的可能需要或包括的组件。在其他实施例中,结合图1-2描述的组件和/或功能可被包括在其他组件(示出或未示出)中或者被放置在子组件中而不背离本发明所描述的主题的各方面的精神或范围。在一些实施例中,结合图1-2描述的组件中的一个或多个可跨可彼此靠近(例如,局域网上)或分散开(例如,在因特网上的不同地方)的多个设备分布。
[0025] 本发明所描述的主题的各方面可与通用或专用计算系统环境或配置实现。可适用于本发明所述的主题的各方面的计算机包括个人计算机、服务器计算机(无论是裸金属还是作为虚拟机)、手持或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程和不可编程消费电子设备、网络PC、小型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶盒、媒体中心或其它电器的家电设备、嵌入汽车或附连到汽车的计算设备、其他移动设备、包括蜂窝电话、无线电话和有线电话的电话设备、包括任何上述系统或设备的分布式计算环境等等。
[0026] 本发明所述的组件中的一个或多个可在虚拟环境中操作。虚拟环境是由计算机来模仿或模拟的环境。虚拟环境可模仿或模拟物理机器、操作系统、一个或多个接口的组、以上各项的部分、或以上各项的组合等等。在机器被模仿或被模拟时,该机器有时被称为虚拟机。对于在虚拟机上执行的软件来说,虚拟机是一种看上去是物理机器的机器。该软件可将文件保存在诸如虚拟硬盘驱动器、虚拟软盘等之类的虚拟存储设备中,可从虚拟光学设备读取文件,可经由虚拟网络适配器来进行通信等等。
[0027] 转向图1,系统100可包括信息提供者105-107、代码信息服务110、开发环境115并且可包括其他组件(未示出)。如此处所使用的,术语组件要被当作包括以下各项中的全部或部分来理解:一个或多个设备、一个或多个软件模块或其各部分的集合、一个或多个软件模块或其各部分与一个或多个设备或其各部分的某种组合等等。
[0028] 线条120表示代码信息服务110与开发环境115之间的通信链路。线条120指示代码信息服务110和开发环境115可以经由任何类型的网络或其他通信路径(包括共享存储器、直接连接、局域网、非局域网、因特网、上述各项的某种组合等)来连接(例如,逻辑地、物理地、虚拟地或其他方式)。例如,线条120可包括一个或多个局域网、广域网、直接连接、虚拟连接、专用网络、虚拟专用网络、进程内或进程间通信信道、以上的某种组合等。
[0029] 代码信息服务110是向开发环境115提供关于代码的信息的服务。服务可包括执行指定任务的一个或多个进程、线程、组件、库等等。服务可以用硬件、软件、或硬件和软件的组合来实现。服务可分布在多个设备上或可实现在单个设备上。
[0030] 代码信息服务110可被主存在主存开发环境115的同一计算机、除了主存开发环境115的计算机之外的计算机上,或者可具有本地地和远程地驻留的组件。
[0031] 在一个实现中,代码信息服务110可被主存在云中。云是经常被用作因特网的暗喻的术语。这利用了这样的理念,即计算、软件、数据存取、存储、以及其它资源可由连接到因特网的实体来提供而无需用户知晓与递送那些资源的计算体系结构有关的位置或其它细节。
[0032] 代码信息服务110可存储涉及代码的不同快照的信息。信息快照包括在代码在特定时间点存在时关于该代码的信息。这可用于例如比较不同快照之间的特性。例如,代码信息服务110可存储指示代码部分在各快照之间执行得有多好的性能数据。术语立方体在此有时被称为存储在一个或多个快照中的数据。
[0033] 信息提供者105-107是代码信息服务110的信息源。在一个实施例中,信息提供者105-107中的一个或多个远离代码信息服务110(例如,在另一计算机上)。在另一实施例中,信息提供者105-107中的一个或多个可被主存在与代码信息服务110相同的计算机上。
[0034] 信息提供者105-107可以静态地(例如,在不执行代码的情况下)、动态地(例如,结合执行代码)或通过静态和动态分析的组合来分析代码。例如,信息提供者可分析代码以确定对特定类做出调用的所有函数。作为另一示例,信息提供者可获取尝试将代码构建到相干系统中的结果,并且从结果中提取可被提供给代码信息服务110的信息。作为又一示例,信息提供者可获取运行一套自动化测试的结果。
[0035] 信息提供者105-107可以在各种时间收集/生成信息。例如,某些信息可以在代码发生改变时获取。其他信息可以周期性地或跨一时间间隔获取。还有一些其他信息可以通过对代码的间接处理(例如,在将代码构建到相干系统中期间)来获取。这种收集/生成信息的方式可以与软件开发活动异步。
[0036] 信息提供者收集到的信息可按照方法、类、文件、库、目录、上述各项中的两个或更多个的组合等来组织。
[0037] 在一个实现中,代码信息服务110可以按与开发者环境115内的开发者动作异步的方式向开发环境115提供关于代码的信息。该上下文中的异步意指代码信息服务110在与开发环境115交互时所采取的动作不干扰开发者正在做的事。
[0038] 例如,当开发者在用户界面内滚动到一代码部分时,开发环境115可以向代码信息服务110请求关于该代码部分的信息。作为响应,代码信息服务110可检索该信息和/或请求由信息提供者105-107中的一个或多个来生成该信息。当信息在代码信息服务110上可用之后,代码信息服务110可以向开发环境115提供该信息。当这正在发生时,开发者可能正在查看、编辑或调试代码或者甚至可以滚动到另一代码部分。开发者无需等待直到代码信息服务110提供该信息。
[0039] 在一个实现中,当信息被更新时可以将经更新的信息从代码信息服务110提供至开发环境115。例如,指示针对所显示的代码的单元测试是否通过的信息可以从代码信息服务110发送到开发环境115。在一个实施例中,可提供的经更新的信息的类型是可以配置的(例如,经由用户界面或其他方式)。经更新的信息可以自动和/或响应于用户致动刷新用户界面元素来提供。
[0040] 在一个实现中,当软件开发者打开代码文件或其他作用域时,代码信息服务110可提供与用于该作用域的可操作标签相对应的数据。开发环境115然后可使用该数据来将可操作标签与代码一起显示在如图3所示的图形界面中。
[0041] 图3是根据本文所描述的主题的各方面的示例性用户界面窗口的框图。在一个示例中,窗口300可包括菜单305、页边空白310和窗格315,它们各自是用户界面的元素。
[0042] 一般而言,元素(有时称为控件)可包括零个或更多个其他元素。例如,元素可包括零个或更多个其他元素,该其他元素可包括零个或更多个其他元素,以此类推。此外,将明白,窗口300可具有可按各种方式来安排的更多、更少、或其他元素,而不背离本文所描述的主题的精神或范围。
[0043] 如图3所示,菜单305可包括诸如文件、编辑、查看以及所需的其他菜单项等菜单项。选择菜单项可使得子菜单出现,子菜单提供可从中选择的附加菜单项。子菜单中的菜单项可使得附加的子菜单出现,以此类推。
[0044] 页边空白310可包括一个或多个可操作标签(例如,T1-T7)。页边空白中的每一个标签可以毗邻窗格315中所显示的代码行。标签可指示关于代码行的各种信息,诸如对函数中的变量的直接使用数、使用一函数的函数数量、for循环重复以及特定置信度内的变化的平均次数、条件语句评估为真的频率、条件语句中的分支是否曾经到达过、是否在函数中捕捉到异常、其他信息等等。
[0045] 在包括在窗格315中的区域中,窗格315可显示代码以及一个或多个可操作标签(例如,标签320和标签325)。如图所示,标签通过竖条(例如,通过“|”)分隔,但在其他实现中,可使用其他分隔符。如图所示,可操作标签被置于与其相关联的函数的上方,但在其他实现中,可操作标签可被置于其他位置。
[0046] 在一些实现中,可以存在与枚举、类的变量、类、名字空间或其他作用域相关联的可操作标签。
[0047] 可操作标签320包括指示执行时间增加了25ms的标签。该标签通过加粗来突出显示,但在其他实现中可通过加下划线、不同颜色、更大的文本等来突出显示。
[0048] 如果开发环境未将文件内容识别为符合某一编程或其他结构化语言句法,则可显示适合于该文件的文本的标签。例如,可显示表示对文件的修改(若存在)的标签。
[0049] 可操作标签可允许软件开发者进行“深度挖掘”以获取更多细节。例如,响应于检测到可操作标签上方的悬停动作,开发环境115可显示关于该可操作标签的更多细节。作为另一示例,响应于检测到对可操作标签的鼠标点击,开发环境115可显示关于该可操作标签的更高水平的细节。
[0050] 也可使用包括自然用户界面(NUI)在内的其他形式的输入来与标签交互。NUI可依赖于语音识别、触摸和指示笔识别、屏幕上和邻近该屏幕两者的姿势识别、空中姿势、头和眼睛跟踪、语音和话音、视觉、触摸、姿势、机器智能等等。可被用来与用户交互的一些示例性NUI技术可包括触敏显示器,语音和话音识别,意图和目的理解,使用深度相机(如立体相机系统、红外相机系统、RGB相机系统、以及这些的组合)的运动姿势检测,使用加速度计/陀螺仪的运动姿势检测,面部识别,3D显示,头部、眼睛和注视跟踪,沉浸式增强现实和虚拟现实系统,以及用于使用电场传感电极(EEG和相关方法)的传感大脑活动的技术。
[0051] 返回到图1,代码信息服务110提供的信息可包括对于正在开发或以其他方式与代码交互的人可以是有用的任何数据。例如,信息可包括静态信息、动态信息、变更历史、代码分析等。
[0052] 下文描述了以上各种类型的信息中的每一种信息的一些示例。下述例子并不旨在是包括一切的或是穷举的。实际上,基于此处的教示,本领域技术人员可认识到落入此处所描述的主题的各方面的精神或范围内的其他示例。
[0053] 静态信息可包括例如:
[0054] 1.调用。该数据可包括有多少函数包括调用图形界面上所显示的函数的语句。
[0055] 2.元调用。该数据可包括指示有多少函数包括调用以下函数的语句的信息:进而包括调用用户界面上所显示的函数的语句的函数。元调用数据可以扩展至任何水平。例如,元调用数据可包括指示有多少调用以下函数的函数的信息:调用对调用用户界面上所显示的函数的函数进行调用的函数的函数。
[0056] 3.盖写。如果一方法能够被盖写,这该数据指示该方法实际上已经被盖写多少次。
[0057] 4.接口。如果一方法实现一接口的全部或部分,则该数据可指示存在该接口的多少实现。该数据还可指示方法所涉及的接口的数量。例如,方法可用于实现任何数量的接口的全部或部分。
[0058] 5.复杂度。可使用各种算法来确定代码复杂度。该数据可包括指示代码有多复杂的值。
[0059] 6.提交的隐错。该数据可指示已经提交针对一方法的多少隐错报告。
[0060] 7.代码分析建议。代码分析器可分析代码以确定要提供的建议。例如,代码分析器可确定是否遵循最佳实践并且可以在未遵循时给出建议。作为另一示例,代码分析器可查找被赋值但未被使用的变量。代码分析器可给出移除该变量和赋值的建议。
[0061] 8.变异。变异数据包括指示一个方法中的变化的变量可以如何影响其他方法的信息。例如,变异数据可包括指示什么其他方法改变一方法使用或依赖的变量的信息。该变异数据可被称为上游变异数据。作为另一示例,变异数据可包括指示一方法修改其他方法使用的什么变量的信息。该变异数据可被称为下游变异数据。
[0062] 9.测试和测试覆盖。该数据可指示测试代码的测试数量以及测试覆盖代码的什么部分。该数据可指示关于驻留在块、函数、文件、项目、上述各项中的不止一个、上述各项的组合等中的代码的信息。
[0063] 10.任务。该数据可包括与假定开发者要执行的任务以及所显示的代码是否涉及该任务有关的信息。
[0064] 11.耦合。该数据可指示什么类或方法与其他类或方法紧密耦合。紧密耦合可经由试探来确定。
[0065] 12.克隆。该数据可指示类似于所显示的代码的代码的存在。
[0066] 动态信息可包括例如:
[0067] 1.运行时间。该数据指示执行代码花费多长时间。该数据可用于确定性能。
[0068] 2.调用率。该数据指示代码的热度/冷度。热代码相对于不热的代码被频繁地调用。类似地,冷代码相对于不冷的代码被较不频繁地调用。
[0069] 3.存储器使用。该数据指示代码所使用的存储器的量。
[0070] 变更历史可包括例如:
[0071] 1.作者。该数据指示改变代码的作者。在一个实现中,该数据可包括指示作者改变代码的相对频率的信息,并且可用于从最频繁地改变代码的作者到最不频繁地改变代码的作者对作者进行排序。在另一实现中,该数据可包括指示改变代码的最后一个作者的信息。在另一实现中,该数据可包括指示主要改变代码的作者的信息。
[0072] 2.使用者。该数据指示编写使用所显示的代码的代码的软件开发者。
[0073] 3.共同变更。该数据指示在与所显示的方法相同的时间改变的方法。例如,在特定方法被改变时软件开发者可能频繁地或总是改变其他方法。
[0074] 4.变更历史。该数据包括指示随时间对代码做出的变更的信息。
[0075] 5.校验历史。在一个实现中,该数据可包括指示任何人当前是否校验代码的信息。在另一实现中,该数据可包括指示自从代码被检验以来其他任何人是否改变过代码的信息。
[0076] 分析信息可包括例如:
[0077] 1.成本。云服务可为使用服务对服务的消费者记账。该数据可包括关于使用代码的成本的信息。
[0078] 2.I/O。该数据可指示在执行时代码读取和写入的数据量。
[0079] 3.带宽。该数据可指示在执行时代码消耗的带宽量。
[0080] 4.数据库使用。该数据可指示代码使用的数据库使用量。
[0081] 同样注意,对于可以存储的关于代码的信息类型,上述示例不旨在是包括全部的或穷尽性的。
[0082] 转向图2,示出了根据本文描述的主题的各方面的示例性软件开发系统。软件开发系统205可包括开发组件210、显示器215、通信机构220和其他组件(未示出)。开发组件210可包括源代码编辑器225、获取管理器230、动作标签管理器235、配置管理器240和其它组件(未示出)。
[0083] 通信机构220允许软件开发系统205的组件与软件开发系统205之外的其他组件进行通信。例如,通信机构220可允许与图1的代码信息服务110进行通信。通信机构440可以是网络接口或适配器、调制解调器或用于建立通信的任何其它机构。
[0084] 显示器215是可用于以可视方式显示数据的输出设备。显示器可实现软件开发者可用于查看代码和关于代码的信息的图形界面或作为该图形界面的一部分。图形界面可显示文本、图标、控件、其他图形元素等。
[0085] 源代码编辑器225可操作用于接收与代码相关的编辑指令。源代码编辑器225可显示代码和其他数据,如图3-7所示的示例所示出的。
[0086] 获取管理器230可以负责从代码信息服务获取关于代码的信息。为了效率,获取管理器230可以通过发送单个请求来获取对应于多个标签的信息。在一个实施例中,获取可以对当前被显示在显示器上的所有代码进行。在另一实施例中,获取可以对整个文件或其他作用域中的所有代码进行。
[0087] 动作标签管理器235可操作用于确定要呈现在显示器215上的可操作标签。可操作标签表示关于代码的信息(例如,由获取管理器230来获取)。每一个可操作标签都可被呈现在显示器215上以使其紧邻该可操作标签与其相关联的代码。例如,用于一函数的可操作标签可被呈现在该函数的略上方,而用于各代码行的可操作标签可被呈现在页边空白中。
[0088] 动作标签管理器235还可负责响应于用户交互来显示关于代码的更详细的信息。例如,动作标签管理器可接收指示正与一动作标签交互的消息(例如,用户正将鼠标指针悬停在该标签上方、点击该标签等),并且作为响应可以在显示器215上呈现关于该动作标签的更详细的信息。
[0089] 动作标签管理器235可接收指示将更显著地呈现动作标签的消息。作为响应,动作标签管理器235可以在显示器上呈现动作标签时突出显示这些动作标签。突出显示可包括增加字体大小、改变字体颜色、改变背景颜色、将前景颜色与背景颜色对调、为标签加下划线、使标签闪烁、或者执行将注意力吸引到标签的某一其他动作。
[0090] 动作标签管理器235可接收指示将进入临时模式的消息。作为响应,动作标签管理器235可修改页边空白中的标签以使得每一个标签聚焦于相同的信息并指示来自行的贡献。例如,对于程序执行统计数据,为每一行显示的信息可指示该代码行花费多久来执行。
[0091] 配置管理器240可接收指示哪一些可操作标签将呈现在显示器215上的输入。配置管理器240还可接收指示呈现可操作标签的次序的输入。
[0092] 图4-7是根据此处所描述的主题的各方面的附加示例性用户界面窗口的框图。
[0093] 转向图4,窗格405显示具有3个共同变更的函数。点击或以其他方式与这些共同变更动作标签交互导致显示窗格410,该窗格410指示经常在与窗格405中的函数相同的时间改变的3个函数。
[0094] 转向图5,窗格515示出了具有3个作者的函数。点击或以其他方式与作者交互导致显示窗格520。窗格520可显示谁修改过该函数并且可突出显示所做出的修改。
[0095] 转向图6,窗格615显示与4个编码建议相关联的函数。点击或以其他方式与建议交互导致显示窗格620。窗格620可显示这些建议并且在适当时允许软件开发者点击建议以实现建议。
[0096] 转向图7,窗格715显示与两个测试相关联的函数。点击或以其他方式与测试交互导致显示窗格720。窗格720可显示针对这两个测试的代码。尽管未示出,但每一个测试都可具有与其相关联的动作标签,这些动作标签指示例如该测试覆盖多少函数、多少函数被该测试元覆盖、执行测试花费多久、测试是通过还是失败、其他信息等等。
[0097] 可使用与图3-7所示的格式相似的格式来显示关于其他动作标签的详细信息。
[0098] 图8是根据此处所描述的主题的各方面的概括地表示可发生的动作的流程图。为解释简明起见,结合图8来描述的方法被描绘和描述为一系列动作。可以理解和明白,此处所描述的主题的各方面不受所示出的各动作和/或各动作次序的限制。在一个实施例中,各动作以如下描述的次序发生。然而,在其它实施例中,各动作可以并行地发生、以另一次序发生、和/或与此处未呈现和描述的其它动作一起发生。此外,并非所有示出的动作都是实现根据此处所描述的主题的各方面的方法所必需的。另外,本领域的技术人员将了解和明白,方法也可以替代地经由状态图或作为事件表示为一系列相互相关联的状态。
[0099] 转向图8,在框805处,动作开始。
[0100] 在框810,获取代码。例如,参考图2。源代码编辑器225可以从代码储存库中获取代码。
[0101] 在框815,获取关于代码的信息。例如,参考图1和2,获取管理器230可以从代码信息服务110获取关于代码的信息。
[0102] 在框820,确定要显示的可操作标签。可操作标签指示关于代码的附加数据。可操作标签与代码的各部分(例如,各行、各函数、各类、各变量、各文件)相关联。当被激活时,可操作标签使得软件开发环境显示关于代码的附加信息。
[0103] 在框825,显示代码和可操作标签。例如,参考图2,可以在显示器215上紧邻可操作标签显示遵循编程语言的句法的源代码。显示代码和可操作标签的示例在图3-7中示出。
[0104] 在框830处,执行其他动作(若存在)。
[0105] 软件开发活动可以与执行动作810-825异步地执行。这由框835示出。例如,在对代码执行分析时,软件开发者可以继续修改、调试和导航通过代码,而无需等待。此外,可以在软件开发者正在执行软件开发活动时更新或添加标签。
[0106] 在一个实施例中,与软件开发活动异步地执行与可操作标签相关联的动作可涉及以动作不彼此等待的方式相互独立地执行动作。在一个实现中,这可通过使用不彼此阻塞的两个线程来执行。
[0107] 如从上述详细描述中可以看到,已经描述了关于软件开发的各方面。尽管本文所描述的主题的各方面易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而,应当理解,并不旨在将所要求保护主题的各方面限制于所公开的具体形式,而是相反地,目的是要覆盖落入本文所描述的主题的各方面的精神和范围之内的所有修改、替换构造和等效方案。