CN108885574B - 用于监视和报告设计、编译和运行时的性能和正确性问题的系统 - Google Patents

用于监视和报告设计、编译和运行时的性能和正确性问题的系统 Download PDF

Info

Publication number
CN108885574B
CN108885574B CN201780022307.3A CN201780022307A CN108885574B CN 108885574 B CN108885574 B CN 108885574B CN 201780022307 A CN201780022307 A CN 201780022307A CN 108885574 B CN108885574 B CN 108885574B
Authority
CN
China
Prior art keywords
event
rule
code
development
computing device
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.)
Active
Application number
CN201780022307.3A
Other languages
English (en)
Other versions
CN108885574A (zh
Inventor
S·基尔巴赫
C·菲利波纳
H·M·A·库马
U·拉文德拉纳森
D·齐尔萨克
D·W·舒茨
F·托德
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 CN108885574A publication Critical patent/CN108885574A/zh
Application granted granted Critical
Publication of CN108885574B publication Critical patent/CN108885574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Abstract

公开了用于向开发者提供规则输出的技术,该规则输出指示在他们正在开发的代码中存在或可能存在问题。此类规则输出可以包括或附有被结构化以帮助开发者了解和解决问题的指南和/或最佳实践。在一个示例中,这涉及标识问题,使得进一步调查问题的机制可用,以及提供针对问题的最佳实践和/或推荐的解决方案。最后,公开的技术可以自动化推荐的解决方案的应用。可以在设计时、编译时和/或运行时提供通知和附带的指导/自动化等,其中通知和附带的指导/自动化被集成到编辑器、编译器、调试器和其他提供真实的实时和原位开发体验的开发环境工具内。

Description

用于监视和报告设计、编译和运行时的性能和正确性问题的 系统
背景
检测应用正确性问题可以有助于开发更有效和高质量的应用。已经有许多解决方案,如FXCop和Rosyln分析仪,可以检测应用正确性问题,但是在编译和构建时,它们的保真度非常低。这大大降低了它们的有效性,因为在使用真实数据和服务部署应用时它们不会计算对应用的实际影响或标识应用正确性问题。使用这些工具具有许多问题。在开发路径的每个阶段都需要在检测应用正确性问题领域中的显著改进。
概述
本部分中提供的概述总结了本文描述的技术的一个或多个部分或完整的示例实施例,以便向读者提供基本的高级理解。本概述不是对技术的广泛描述,它可能无法标识技术的关键要素或方面,或描述技术的范围。其唯一目的是以简化形式呈现技术的各个方面,作为下面提供的详细描述的序言。整个技术不应限于本文提供的任何特定实施例或示例或其组合。
应用开发者(即,创建代码等的人)可能遇到性能和其他问题,例如在使用通常可以基于一组规则和/或最佳实践被容易地避免的代码的情况下。关于如何避免常见的性能和其他问题的指导通常很容易获得。但是,例如关注于性能的开发者并不总是意识到他们遇到了特定问题,而非关注于性能的开发者可能甚至没有意识到存在特定问题。
现有的分析工具往往受到多种限制。例如,现有工具只能分析编译形式的代码,而不能分析在其预期运行时环境中操作的源代码和相关源文件或可执行代码。另外,传统分析器通常包括命令行功能并且可以具有它们自己的图形界面,但是通常不与开发过程中使用的主要开发工具(诸如编辑器,编译器,调试器等)集成。当开发者例如在编辑器或其他开发环境中输入源代码,检测和标识问题以及在原位输入代码时提供潜在的解决方案时,这些传统分析器也不会实时地操作。当开发者例如在调试器或调试环境中调试可执行代码,检测和标识问题以及在原位调试代码时提供潜在的解决方案时,这些传统分析器也不会实时地操作。相反,现有的分析工具往往需要在从设计到执行的开发路径中添加单独的分析步骤。并且在添加的分析步骤期间产生的报告必须由开发者解释,并且任何建议或推荐得由开发者手动地实施。
本文公开的技术为开发者提供规则输出,该规则输出在他们正在开发的代码中存在或可能存在的问题。此类规则输出可以包括或附有被构造的用于帮助开发者了解和解决问题的指导和/或最佳实践。在一个示例中,这涉及标识问题,使得进一步调查问题的机制可用,以及提供针对问题的最佳实践和/或推荐的解决方案。最后,本文公开的技术可以自动化推荐的解决方案的应用。可以在设计时、编译时和/或运行时提供通知和附带的指导/自动化等,其中通知和附带的指导/自动化被集成到编辑器、编译器、调试器和其他提供真实的实时和原位开发体验的开发环境工具内。
本文使用的术语“代码”通常是指在计算环境中使用的任何类型或形式的计算机可执行或可解释的指令或规范,包括任何语言的源代码、机器代码、中间代码、可执行代码、可解释代码、脚本、分布式代码、用户界面规范和指令、标记语言中的信息、软件、固件、应用等。
附图描述
当结合附图考虑时,将更好地理解下面提供的详细描述,其中:
图1是示出其中可以实现本文所描述的技术的示例计算环境的框图。
图2是示出示例开发环境200的框图,该示例开发环境200示出了开发路径250,该开发路径250包括使用设计时工具220的设计阶段、使用编译时工具230的编译阶段以及使用运行时工具240的运行时阶段,并且进一步示出系统210,其使应用开发者能够监视和报告正被开发给开发者的应用的性能、正确性和其他问题。
图3是示出用于处理事件的示例方法300的框图,该方法包括接收事件310,将事件映射到规则320,处理经映射的事件330以标识任何问题和/或生成状态信息,以及提供关于任何被标识的问题的适当规则输出340。
图4示出了呈现规则输出410的示例主机用户界面,其中主机是调试器工具。
不同图中的相似编号的标记被用于表示附图中的类似或相同的元件或步骤。
详细描述
在本部分中结合附图提供的详细描述描述了本技术的一个或多个部分或完整的示例实施例,但是不旨在描述本技术的所有可能的实施例。该详细描述给出了本技术的系统和/或方法中的至少一些的各种示例。然而,也可以根据其他示例实现相同或等同的技术,系统和/或方法。
计算环境
虽然本文提供的示例被描述并示出为可在计算环境中实现,但是所描述的环境仅仅是作为示例而非限制来提供的。如本领域技术人员将领会的,所公开的示例适于各种不同类型的计算环境中的实现。
图1是示出其中可以实现本文所描述的技术的示例计算环境100的框图。可以利用众多通用或专用设备和/或系统中的任何一种来实现合适的计算环境。这样的设备/系统的示例包括但不限于个人数字助理(“PDA”)、个人计算机(“PC”)、手持或膝上型设备、基于微处理器的系统、多处理器系统、片上系统(“SOC”)、服务器、因特网服务、工作站、消费者电子设备、蜂窝电话、机顶盒等。在所有情况下,这样的系统严格限于制品等。
计算环境100通常包括耦合到各种组件(例如外围设备102、103、101等)的至少一个计算设备101。这些可以包括各组件,诸如可以通过一个或多个输入/输出(“I/O”)接口来操作的输入设备103(诸如语音识别技术、触摸板、按钮、键盘和/或诸如鼠标或轨迹球的定点设备)。计算设备101的组件可包括一个或多个处理器(包括中央处理单元(“CPU”)、图形处理单元(“GPU”)、微处理器(“μP”)等)107、系统存储器109、以及通常耦合各组件的系统总线108。处理器107通常处理或执行各种计算机可执行指令,并且基于那些指令来控制计算设备101的操作。这可包括计算设备101经由诸如网络连接114等的各种通信技术与其他电子和/或计算设备、系统或环境(未示出)通信。系统总线108表示任何数量的总线结构,包括存储器总线或存储器控制器、外围总线、串行总线、加速图形端口、使用各种总线架构中的任意总线架构的处理器或本地总线等。除非前面带有“虚拟”一词,否则本文使用的术语“计算设备”严格指物理制品等。术语“虚拟计算设备”和“虚拟机”通常是指特定计算系统的仿真,并且通常被称为虚拟机(“VM”)。这些可操作的VM最终被托管在非虚拟计算设备上。
系统存储器109可包括诸如随机存取存储器(“RAM”)等易失性存储器形式的和/或诸如只读存储器(“ROM”)或闪存(“FLASH”)等非易失性存储器形式的计算机可读介质。基本输入/输出系统(“BIOS”)可以存储在非易失性等中。系统存储器109通常存储数据、计算机可执行指令和/或包括计算机可执行指令的程序模块,包括可由一个或多个处理器107立即访问或目前正在其上操作的计算机可执行指令。本文使用的术语“系统存储器”严格指物理制品等。
大容量存储设备104和110可耦合到计算设备101,或者经由耦合到系统总线而合并到计算设备101中。这些大容量存储设备104和110可包括非易失性RAM;对可移动、非易失性磁盘(例如“软盘”)105进行读和/或写的磁盘驱动器;和/或对诸如CD ROM、DVD ROM 106等非易失性光盘进行读和/或写的光盘驱动器。或者,诸如硬盘110等大容量存储设备可包括不可移动存储介质。其它大容量存储设备可包括存储卡、记忆棒、磁带存储设备等。本文使用的术语“大容量存储设备”严格地指物理制品等。
任何数量的计算机程序、文件、数据结构等可被存储在大容量存储110、其它存储设备104、105、106以及系统存储器109(通常受可用空间限制)上,作为示例而非限制,包括操作系统、应用程序、数据文件、目录结构、计算机可执行指令等。
诸如显示设备102等输出组件或设备可通常经由诸如显示适配器111等接口耦合到计算设备101。输出设备102可以是液晶显示器(“LCD”)。其它示例输出设备可包括打印机、音频输出、语音输出、阴极射线管(“CRT”)显示器、触觉设备或其它传感输出机制等等。输出设备可以使计算设备101能够与人类操作者或其他机器、系统、计算环境等交互。用户可以经由诸如触摸垫、按钮、键盘、鼠标、操纵杆、游戏手柄、数据端口等任何数量的不同I/O设备100来与计算环境103进行接口。这些和其它I/O设备可以经由耦合到系统总线108的I/O接口112来耦合到处理器107,和/或可以经由诸如串行端口、游戏端口、通用串行总线(“USB”)、火线、红外(“IR”)端口等其它接口和总线结构来耦合。
计算设备101可以经由通过一个或多个蜂窝网络、无线网络、局域网(“LAN”)、广域网(“WAN”)、存储区域网络(“SAN”)、因特网、无线电链路、光学链路等到一个或多个远程计算设备的通信连接来在网络化环境中操作。计算设备101可经由网络适配器113等,或作为替换,经由调制解调器、数字用户线(“DSL”)链路、综合业务数字网(“ISDN)链路、因特网链路、无线链路等来耦合到网络。”
诸如网络连接等通信连接114通常提供到诸如网络等通信介质的耦合。通信介质通常使用诸如载波或其它传输机制等已调制数据信号来提供计算机可读以及计算机可执行指令、数据结构、文件、程序模块和其它数据。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质可包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声、射频(RF)、红外和其他无线通信机制之类的无线介质。
诸如电池或电源等的电源190通常向计算环境100的部分和全部提供电力。在计算环境100是移动设备或便携式设备等的情况下,电源190可以是电池。另选地,在计算环境100是台式计算机或服务器等的情况下,电源190可以是被设计成诸如经由墙上插座连接到交流(“AC”)源的电源。
一些移动设备可以仅包括结合图1描述的一些组件。例如,电子证件可包括线圈等连同简单处理单元107等,该线圈被配置成在其靠近读卡器设备等时用作电源190。这样的线圈还可以被配置为用作耦合到处理单元107等的天线,线圈天线能够辐射/接收电子证件和诸如读卡器设备之类的另一设备之间的通信。这样的通信可能不涉及联网,但也可以是通过遥测、点对点、RF、IR、音频或其他手段进行的一般或专用通信。电子卡可以不包括显示器102、I/O设备103、或结合图1描述的其它组件中的多个。可能不包括结合图1所描述的组件中的多个的其它移动设备包括电子腕带、电子标签、可移植设备等。
本领域技术人员应当认识到,用于提供计算机可读和计算机可执行的指令及数据的存储设备可分布在网络上。例如,远程计算机或存储设备可以以软件应用和数据的形式存储计算机可读和计算机可执行指令。本地计算机可以经由该网络访问远程计算机或存储设备,并下载软件应用程序或数据的部分或全部并且可执行任何计算机可执行指令。另选地,本地计算机可按需下载软件或数据的片断,或者通过在本地机器执行一些指令并且在远程计算机和/或设备执行一些指令来分布式地处理该软件。
本领域的技术人员还将认识到,通过利用常规技术,软件的计算机可执行指令的全部或部分可由诸如数字信号处理器(“DSP”)、可编程逻辑阵列(“PLA”)、分立电路等专用电子电路来执行。术语“电子装置”可包括含有任何软件、固件等的计算设备或消费电子设备,或不含有软件、固件等的电子设备或电路。
本文中使用的术语“固件”通常指的是在诸如ROM等电子设备中维护的可执行指令、代码、数据、应用、程序、程序模块等。本文中使用的术语“软件”通常包括并指代被维护在计算机可读介质中或被维护在任何形式或任何类型的计算机可读介质上的计算机可执行指令、代码、数据、应用、程序、程序模块、固件等,该计算机可读介质被配置为用于以可对计算设备访问的方式来存储计算机可执行指令等。
本文中以及权利要求中使用的术语“(诸)计算机可读介质”、“计算机可读介质”等限于严格地指代不是信号或载波本身的一个或多个法定装置、制品等。因此,如本文使用的术语,计算机可读介质旨在并且必须被解释为法定主题。
本文和权利要求中使用的术语“计算设备”限于严格地指代不是信号或载波本身的一个或多个法定装置、制品等,诸如包括客户端设备、移动设备、一个或多个服务器、网络服务(诸如因特网服务或基于一个或多个计算机的公司网络服务等)等和/或其任何组合的计算设备101。因此,如本文使用的术语,计算设备旨在并且必须被解释为法定主题。
图2是示出示例开发环境200的框图,该开发环境200示出了开发路径250,该开发路径250包括通常使用设计时工具220的设计阶段、通常使用编译时工具230的编译阶段、以及通常使用运行时工具240的运行时阶段。系统210(本文也称为“应用分析器”或“App分析器”)使应用开发者能够监视和报告正被开发的代码的性能、正确性和其他问题。这些各种工具通常向系统210提供足以确定这些问题的数据或以其他方式(例如通过各种事件)使得该数据对系统210可用。在一个示例中,可以基于事件分析引擎212(在本文中也称为“规则引擎”)结合可被存储在规则存储214等中的各种规则对事件250的分析来确定这些问题。这种分析的结果通常以标识所确定的问题的规则输出的形式显现给用户界面218和/或日志等。事件分析引擎212可以用硬件、软件和/或其任何组合来实现。事件可被系统210或其组件经由包括输入/输出接口112、网络适配器113和/或任何其他软件接口或电子机制的任何合适的接口来接收。
映射存储216通常包括足以使引擎212将传入事件映射到规则以供通过规则或根据规则进行分析的信息。在特定规则指示存在问题的情况下,该规则可以以可以至少部分地经由用户界面218等呈现的规则输出的形式显现警告等。系统210或某个其他中介可以格式化这样的规则输出,以通过一个或多个用户界面呈现给代码的开发者。此外,这样的用户界面可以由一个或多个“UI主机”托管,该“UI主机”术语通常指在包括UI 218时的系统210,指工具220、230和240中的任何一个,和/或指在用户界面或日志中呈现规则输出的至少一部分的任何其他工具等等。本文中使用的术语“开发工具”通常指工具220、230和240等中的任何一个。这样的开发工具可以用硬件、软件或其任何组合来实现。
在一个示例中,规则存储214和/或映射存储216是系统210的一部分。在替代示例中,规则存储214和/或映射存储216被实现在系统210外部。在又一个示例中,任一个存储或两个存储可以被实现为由各种实体提供的多个数据存储,其中一些可以在系统210内部而在一些外部。
在一个示例中,用户界面218允许规则被创建并被添加到规则存储214等,并且还允许这样的规则被单独地和/或成组地分类、更新、编辑、移除、删除、测试、调试、启用和禁用或者以其他方式在系统210内被管理或由系统210管理。用户界面218还可以允许规则被关联或以其他方式映射到诸如来自开发工具220、230、240等的传入事件,和/或被关联或以其他方式映射到规则的各种类别或分类。例如,一些规则可以针对最佳实践,并且因此被分类为“最佳实践”规则等。其他规则可以针对例如应用性能、可访问性、本地化或者开发者和/或应用用户可能感兴趣的应用开发和/或操作等的任何其他方面,并且这样的规则可以被如此地分类。此外,每个规则可被分类为一个类别或多个类别。如上所述的规则管理和映射还可以通过命令行界面、应用编程接口(“API”)和/或除用户界面218之外或替代用户界面218的任何其他机制来完成。附加地或替代地,系统210可以包括预定义的规则和/或规则的类别或分类,使得可以在无需用户首先定义规则的情况下利用系统210。
在一个示例中,用户界面218被包括作为系统210的一部分。在替代示例中,用户界面218被实现在系统210外部。并且在又一个示例中,用户界面218可被实现为多个用户界面,该多个用户界面中的每个用户界面提供类似和/或不同的功能并且该多个用户界面由各种实体提供,一些实体在系统210内部,一些实体在外部。
UI主机的示例通常包括开发工具或产品,诸如编辑器、调试器、编译器、浏览器、Web应用开发工具、开发环境、用户界面设计工具以及任何其他设计时工具、编译时工具、运行时工具等等。
本文中使用的术语“设计时”是指开发者等正在诸如通过以下来设计代码的时间:将诸如在应用开发中使用的设计、指令、规范、描述、声明、流程规范、状态规范、用户界面规范、规则、序列、代码、脚本、对象、模型等输入到任何设计时工具或环境等,诸如设计时工具220。Microsoft(微软)Visual Studio是这种也可以适用于其他开发工具类别(编译时和运行时)的设计时工具的一个示例。
本文中使用的术语“编译时”是指开发者等正在编译、组装、链接或以其他方式将代码(包括但不限于源代码和中间代码)等转换成可执行代码(诸如可执行应用)的时间,和/或开发者等正使用工具来解释代码(包括但不限于脚本)的时间。本领域技术人员将认识到,这样的代码解释可以附加地或替代地被认为是运行时活动。
本文中使用的术语“运行时”是指开发者等出于包括调试、测试、评估代码的目的正在运行(即,包括通过解释器执行)代码的时间。
事件、规则和问题
图3是示出用于处理事件的示例方法300的框图,该方法包括接收事件310,将事件映射到规则320,处理经映射的事件330以标识任何问题和/或生成状态信息,以及提供关于任何被标识的问题的适当规则输出340。
块310通常指示接收传入事件。在一个示例中,事件由系统210的事件分析引擎212接收。传入事件通常由沿着开发路径250使用的各种工具提供,诸如设计时工具220、编译时工具230、运行时工具240等。这样的传入事件通常关于正沿着开发路径250的各个阶段处被开发的特定代码。
本文中使用的术语“事件”通常是指关于由工具220、230、240等提供的代码的任何开发信息。事件可以通过将开发信息作为事件的一部分包括在内、通过在事件中经由某些链接或指针等参考开发信息或其任何组合来指示开发信息。开发信息通常标识来自设计时工具的设计时通知、来自编译时工具的编译时通知和/或来自运行时工具的运行时通知。这种开发信息和通知通常由事件形式的工具主动提供。
在一个示例中,事件包括标识事件类型的事件类型标识符。这样的事件类型标识符可以是唯一标识符,诸如唯一地将一个事件与其他事件区分开的全局唯一标识符(“GUID”)等。事件还可以包括源标识符,该源标识符标识事件源自的工具或其他源。一旦接收到事件,方法300通常在框320处继续。
框320通常指示将接收到的事件映射到一个或多个规则。在一个示例中,事件分析引擎212基于映射存储216等中的映射信息将接收到的事件映射到规则存储214等中的一个或多个规则。在一个示例中,映射可以基于接收到的事件的事件类型标识符。例如,从将事件类型映射到规则的映射信息中标识对接收到的事件类型的事件感兴趣的任何规则。
在另一示例中,事件类型可以被分组为一个或多个事件类别等,并且这些类别可以被映射到规则。在该示例中,映射涉及首先标识事件类型被分组到其中的一个或多个类别,然后将一个或多个事件类别映射到任何感兴趣的规则。通常,可以将事件类型和/或事件类别映射到规则,并且可以使用任何合适的机制来确定这样的映射。一旦接收到的事件被映射到特定规则,方法300就通常在框330处继续。
块330通常指示根据接收到的事件被映射到的规则来处理该接收到的事件。在一个示例中,事件由系统210的事件分析引擎212根据它们被映射到的规则来处理。在另一示例中,事件完全由规则本身处理和/或部分地由规则本身处理并且部分地由事件分析引擎212处理。
通常根据规则来处理一个或多个接收到的事件,以便确定正被系统210分析的代码中是否存在特定问题。在一个示例中,规则被实现为文本表达,诸如具有可扩展标记语言(“XML”)或其他一些标记语言或其他文本格式。在另一示例中,规则以脚本或其他指令的形式实现。规则可以是代码的形式。
状态信息可以根据一个或多个规则跨多个事件和/或跨处理被持久保存。这种状态信息可被用于事件的进一步处理和/或被规则使用。在一个示例中,事件处理330的结果可以是状态信息的生成或修改。这种状态信息可以基于来自相同工具的事件和/或基于来自任何工具中的一个或多个的事件。这种状态信息可以由系统210和/或一个或多个规则本身来持久保存。
在另一示例中,事件处理330的结果可以附加地或替代地是一个或多个问题的标识。本文中同义地使用的术语“问题”和“开发问题”是指代码的特定问题,其可以基于规则输出来被系统210校正或改进。这样的问题的一些非限制性示例包括以下:
a.可被阻塞或空闲的用户界面(“UI”)线程;
b.UI线程上非UI操作的存在;
c.没有被虚拟化但应该被虚拟化的ListView(列表视图);
d.正被使用的应该是ListView的ListBox(列表框);以及
e.启动时被折叠的元素。
问题可以用各种方式来分类。一些非限制性示例问题分类包括:性能、用户界面、可访问性、内存使用、跨平台、线程化、本地化、代码大小、最佳实践等。此外,问题可以另外地或替代地根据诸如在开发路径250上的设计时、编译时和/或运行时来被分类。通常,可以由系统210确定的问题仅受可被创建的规则以及可以从工具显现到系统210的事件的限制。此外,一个规则可以标识一个或多个问题,并且多个规则可以互操作以基于一个或多个事件和/或基于状态信息来标识问题。一旦问题被标识,方法300通常在框340处继续。
对于给定的被标识的问题,框340通常指示提供规则输出,该规则输出使得进一步调查问题的机制可用,标识问题的根本原因,和/或提供用于解决问题的最佳实践信息和/或推荐的解决方案。关于进一步调查的机制,示例包括在调试器、剖析器、代码编辑器、UI编辑器等中自动显现或标识问题处的代码—每个这样的工具是用于根据问题的类型进一步调查问题的示例机制。以这种方式,开发者能够响应于系统210标识问题而在呈现给开发者的适当工具的上下文中进一步研究该问题。图4中示出了在调试器中显现问题的示例。
关于根本原因、最佳实践信息和/或推荐的解决方案,系统210可以经由用户界面218、经由一个或多个UI主机、经由诸如上面讨论的用于进一步调查的机制和/或经由任何其他用户界面来提供规则输出。在一个示例中,可以基于诸如以下的模板来格式化和结构化规则输出:
Figure BDA0001821395130000111
Figure BDA0001821395130000121
使用这样的模板使UI主机能够一致地理解和解释规则输出以供在一个或多个用户界面中呈现。在此示例中,<RuleID>部分通常唯一地标识规则。<RuleName>部分通常提供规则的描述性名称或标题。<Impact>部分通常至少提供规则所标识的问题的影响的概要,并且还可包括与问题相关的其他细节。<Cause>部分通常至少提供规则所标识的问题的原因的概要。<ProposedSolution>部分通常至少提供用于解决规则所标识的问题的建议解决方案或最佳实践等的概要,并且还可包括通常与解决问题有关的附加信息或链接。<Actions>部分通常提供到用于进一步调查规则所标识的问题的一个或多个机制的至少一个链接,并且还可以包括可被传递给该机制以供该机制在调查中使用的与问题有关的附加信息和/或参数。在其他示例中,可以使用用于组织和提供规则输出的任何合适的格式和/或结构。
考虑以上的示例(a)—UI线程上非UI操作的存在,可使用以上示出的模板来将对于该示例问题的规则输出格式化和结构化为如以下示例中所示。
Figure BDA0001821395130000122
Figure BDA0001821395130000131
Figure BDA0001821395130000141
这样的规则输出通常由一个或多个UI主机和/或日志消费,其中信息可被使得以由UI主机或日志确定的呈现格式对用户可用。
最后,系统210可自动应用任何推荐的或建议的解决方案,例如规则输出中指示的那些。这种自动化的应用可包括根据推荐的解决方案修改正由系统210和/或UI主机分析的代码。这种自动化的应用可以对开发者响应于推荐的或建议的解决方案的呈现而进行的选择或指令进行响应。
图4示出了在用户界面中呈现规则输出410的示例UI主机的示例用户界面,其中示例UI主机是调试器工具。在UI中呈现的这种规则输出可以例如响应于正被调试的代码中的错误。规则输出410的文本在放大420中示出。文本422标识问题,在这种情况下是以上示例问题(a)。可以在以上示出的示例规则输出的<RuleName>部分中提供文本422(420的第一行和第二行)。文本424(420的第三行)提供到有关该问题的附加信息的链接。可以在以上示出的示例规则输出的<Link>部分中提供文本424。例如,用户可以选择该链接,如图4中带圆圈的鼠标箭头所指示的,以访问附加信息。文本426(420的第四行)提供到剖析工具的链接,该剖析工具是用于进一步调查该问题的示例机制。可以在以上示出的示例规则输出的<Actions>部分中提供文本426。此外,来自规则输出的其他部分的信息和/或链接可被附加地或替代地呈现在诸如图4中所示的用户界面或其他用户界面中。
呈现规则输出的全部或部分的其他用户界面也可以由其他工具托管。这样的其他工具包括但不限于文本编辑器、用户界面编辑器和其他设计时工具,编译器、汇编器、链接器和其他编译时工具,以及解释器、剖析器、模拟器和其他包括调试器在内的运行时工具,如以上示例中所讨论的。其他这样的工具包括可以组合一些或所有上述工具和任何其他开发工具等的集成开发环境。在一个或多个用户界面中呈现规则输出的至少一部分的工具在本文中称为系统210的“UI主机”。附加地或替代地,系统210可以包括其自己的UI,诸如UI218等,并且可以因此也被视为UI主机。
结语
在第一示例中,在包括至少一个处理器、存储器和事件分析引擎的计算设备上执行的一种方法,该方法包括:由事件分析引擎从开发工具接收至少一个事件,该至少一个事件标识与代码相关联的设计时、编译时或运行时问题中的至少一个;所述事件分析引擎基于至少一个接收到的事件来标识与所述代码的开发相关联的多个规则中的至少一个规则,所述至少一个接收到的事件被映射到至少一个被标识的规则;以及所述计算设备根据所述至少一个被标识的规则来评估所述至少一个接收到的事件,从而导致对与所述代码相关联的开发问题的标识。
在第二示例中,存在一种计算设备,包括:至少一个处理器;耦合到至少一个处理器的存储器;事件分析引擎,所述事件分析引擎被配置为从开发工具接收至少一个事件,该至少一个事件标识与代码相关联的设计时、编译时或运行时问题中的至少一个;所述事件分析引擎还被配置为基于至少一个接收到的事件来标识与所述代码的开发相关联的多个规则中的至少一个规则,所述至少一个接收到的事件被映射到至少一个被标识的规则;以及计算设备,所述计算设备被配置为根据所述至少一个被标识的规则来评估所述至少一个接收到的事件,从而导致对与所述代码相关联的开发问题的标识。
在第三示例中,包括计算机可执行指令的至少一个计算机可读介质,所述计算机可执行指令基于由包括存储器的计算设备的至少一个处理器的执行,使得计算设备执行包括以下的动作:由事件分析引擎从开发工具接收至少一个事件,该至少一个事件标识与代码相关联的设计时、编译时或运行时问题中的至少一个;所述事件分析引擎基于至少一个接收到的事件标识与所述代码的开发相关联的多个规则中的至少一个规则,所述至少一个接收到的事件被映射到至少一个被标识的规则;以及所述计算设备根据所述至少一个被标识的规则来评估所述至少一个接收到的事件,从而导致对与所述代码相关联的开发问题的标识。
在第一,第二和第三示例中,事件分析引擎还基于所评估的至少一个接收到的事件来生成规则输出,该规则输出指示代码的开发问题的原因,针对代码的开发问题的建议解决方案以及用于进一步调查代码的开发问题的工具;事件分析引擎还将生成的规则输出提供给用户界面主机;事件分析引擎还将生成的规则输出提供给日志;规则输出进一步标识开发问题;根据基于先前根据多个规则中的至少一个先前标识的规则评估至少一个先前接收到的事件而生成的状态信息来评估至少一个接收到的事件;以及,通过对至少一个接收到的事件的分类,将至少一个接收到的事件映射到至少一个被标识的规则。

Claims (20)

1.在包括至少一个处理器、存储器和事件分析引擎的计算设备上执行的一种方法,所述方法包括:
通过所述事件分析引擎从开发工具接收至少一个事件,所述至少一个事件标识与代码相关联的设计时、编译时或运行时问题中的至少一个;
通过所述事件分析引擎基于至少一个接收到的事件来标识与所述代码的开发相关联的多个规则中的至少一个规则,所述至少一个接收到的事件被映射到至少一个被标识的规则;以及
通过所述计算设备根据所述至少一个被标识的规则来评估所述至少一个接收到的事件,从而导致对与所述代码相关联的开发问题的标识;
基于所述评估来生成并显现规则输出,所述规则输出指示与所述代码相关联的所述开发问题的原因以及针对所述代码的所述开发问题的建议解决方案;以及
基于所述规则输出来根据针对所述代码的所述开发问题的建议解决方案来修改所述代码。
2.如权利要求1所述的方法,其特征在于,所述规则输出还指示用于进一步调查所述代码的所述开发问题的工具。
3.如权利要求2所述的方法,其特征在于,还包括由所述事件分析引擎将生成的规则输出提供给用户界面主机。
4.如权利要求2所述的方法,其特征在于,还包括由所述事件分析引擎将生成的规则输出提供给日志。
5.如权利要求2所述的方法,其特征在于,生成的规则输出还标识所述开发问题。
6.如权利要求1所述的方法,其特征在于,所述至少一个接收到的事件根据基于先前根据所述多个规则中的至少一个先前标识的规则评估至少一个先前接收到的事件而生成的状态信息来被评估。
7.如权利要求1所述的方法,其特征在于,所述至少一个接收到的事件通过对所述至少一个接收到的事件的分类来被映射到所述至少一个被标识的规则。
8.一种计算设备,包括:
至少一个处理器;
耦合到所述至少一个处理器的存储器;
事件分析引擎,所述事件分析引擎被配置为从开发工具接收至少一个事件,所述至少一个事件标识与代码相关联的设计时、编译时或运行时问题中的至少一个;
所述事件分析引擎还被配置为基于至少一个接收到的事件来标识与所述代码的开发相关联的多个规则中的至少一个规则,所述至少一个接收到的事件被映射到至少一个被标识的规则;以及
所述计算设备被配置为根据所述至少一个被标识的规则来评估所述至少一个接收到的事件,从而导致对与所述代码相关联的开发问题的标识;
所述事件分析引擎还被配置为基于所评估的至少一个接收到的事件来生成并显现规则输出,所述规则输出指示所述代码的所述开发问题的原因、针对所述代码的所述开发问题的建议解决方案;
所述计算设备还被配置为基于所述规则输出来根据针对所述代码的所述开发问题的建议解决方案来修改所述代码。
9.如权利要求8所述的计算设备,其特征在于,所述规则输出还指示用于进一步调查所述代码的所述开发问题的工具。
10.如权利要求9所述的计算设备,其特征在于,所述事件分析引擎还被配置为将生成的规则输出提供给用户界面主机。
11.如权利要求9所述的计算设备,其特征在于,所述事件分析引擎还被配置为将生成的规则输出提供给日志。
12.如权利要求9所述的计算设备,其特征在于,所述规则输出还标识所述开发问题。
13.如权利要求8所述的计算设备,其特征在于,所述至少一个接收到的事件根据基于先前根据所述多个规则中的至少一个先前标识的规则评估至少一个先前接收到的事件而生成的状态信息来被评估。
14.如权利要求8所述的计算设备,其特征在于,所述至少一个接收到的事件通过对所述至少一个接收到的事件的分类来被映射到所述至少一个被标识的规则。
15.包括计算机可执行指令的至少一个计算机可读介质,所述计算机可执行指令基于由包括存储器的计算设备的至少一个处理器的执行,使得所述计算设备执行包括以下的动作:
通过事件分析引擎从开发工具接收至少一个事件,所述至少一个事件标识与代码相关联的设计时、编译时或运行时问题中的至少一个;
通过所述事件分析引擎基于至少一个接收到的事件来标识与所述代码的开发相关联的多个规则中的至少一个规则,所述至少一个接收到的事件被映射到至少一个被标识的规则;
通过所述计算设备根据所述至少一个被标识的规则来评估所述至少一个接收到的事件,从而导致对与所述代码相关联的开发问题的标识;
基于所述评估来生成并显现规则输出,所述规则输出指示与所述代码相关联的所述开发问题的原因、针对所述代码的所述开发问题的建议解决方案;以及
基于所述规则输出来根据针对所述代码的所述开发问题的建议解决方案来修改所述代码。
16.如权利要求15所述的至少一个计算机可读介质,其特征在于,所述规则输出还指示用于进一步调查所述代码的所述开发问题的工具。
17.如权利要求16所述的至少一个计算机可读介质,其特征在于,所述动作还包括由所述事件分析引擎将生成的规则输出提供给用户界面主机。
18.如权利要求16所述的至少一个计算机可读介质,其特征在于,所述动作还包括由所述事件分析引擎将生成的规则输出提供给日志。
19.如权利要求16所述的至少一个计算机可读介质,其特征在于,所述规则输出还标识所述开发问题,或者其中所述至少一个接收到的事件通过对所述至少一个接收到的事件的分类来被映射到所述至少一个被标识的规则。
20.如权利要求15所述的至少一个计算机可读介质,其特征在于,所述评估是根据基于先前根据所述多个规则中的至少一个先前标识的规则评估至少一个先前接收到的事件而生成的状态信息。
CN201780022307.3A 2016-03-29 2017-03-28 用于监视和报告设计、编译和运行时的性能和正确性问题的系统 Active CN108885574B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662314937P 2016-03-29 2016-03-29
US62/314,937 2016-03-29
US15/168,191 2016-05-30
US15/168,191 US10339032B2 (en) 2016-03-29 2016-05-30 System for monitoring and reporting performance and correctness issues across design, compile and runtime
PCT/US2017/024404 WO2017172672A1 (en) 2016-03-29 2017-03-28 System for monitoring and reporting performance and correctness issues across design, compile and runtime

Publications (2)

Publication Number Publication Date
CN108885574A CN108885574A (zh) 2018-11-23
CN108885574B true CN108885574B (zh) 2022-04-01

Family

ID=59961576

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780022307.3A Active CN108885574B (zh) 2016-03-29 2017-03-28 用于监视和报告设计、编译和运行时的性能和正确性问题的系统

Country Status (4)

Country Link
US (1) US10339032B2 (zh)
EP (1) EP3436948A1 (zh)
CN (1) CN108885574B (zh)
WO (1) WO2017172672A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397656B2 (en) 2019-11-04 2022-07-26 Microsoft Technology Licensing, Llc Telemetry generation for in-field hardware testing
CN111651155B (zh) * 2020-06-03 2020-12-11 北京智趣工场教育科技有限公司 一种编程学习操作系统及外接交互系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529455A (zh) * 2003-09-29 2004-09-15 港湾网络有限公司 网络故障实时相关性分析方法及系统
US6961768B2 (en) * 1998-08-21 2005-11-01 Hewlett-Packard Development Company, L.P. Status polling failover of devices in a distributed network management hierarchy
CN1317678C (zh) * 2002-09-20 2007-05-23 联想(新加坡)私人有限公司 为计算环境提供问题确定和错误恢复特征的方法和系统
CN101981546A (zh) * 2008-09-30 2011-02-23 株式会社日立制作所 以不取得事件信息的it装置为对象的根本原因分析方法、装置及程序
CN102143008A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 用于数据中心的诊断故障事件的方法及装置
CN103269290A (zh) * 2013-04-18 2013-08-28 中国移动通信集团陕西有限公司 基于案例库智能分析网络异常的方法和装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US986851A (en) * 1909-05-12 1911-03-14 Frank Paff Miter-box.
US6536037B1 (en) * 1999-05-27 2003-03-18 Accenture Llp Identification of redundancies and omissions among components of a web based architecture
US6324647B1 (en) * 1999-08-31 2001-11-27 Michel K. Bowman-Amuah System, method and article of manufacture for security management in a development architecture framework
US7139999B2 (en) * 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US20020078106A1 (en) * 2000-12-18 2002-06-20 Carew David John Method and apparatus to spell check displayable text in computer source code
US7017162B2 (en) * 2001-07-10 2006-03-21 Microsoft Corporation Application program interface for network software platform
US20040002958A1 (en) * 2002-06-26 2004-01-01 Praveen Seshadri System and method for providing notification(s)
AU2003259744A1 (en) 2002-08-09 2004-02-25 Corticon Technologies, Inc. Rule engine
US7539974B2 (en) 2003-10-24 2009-05-26 Microsoft Corporation Scalable synchronous and asynchronous processing of monitoring rules
US7818723B2 (en) * 2004-09-07 2010-10-19 Sap Ag Antipattern detection processing for a multithreaded application
US7464366B2 (en) 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US7707559B2 (en) * 2005-08-30 2010-04-27 International Business Machines Corporation Analysis of errors within computer code
US8595703B2 (en) 2006-01-30 2013-11-26 Microsoft Corporation Context based code analysis
US8656350B2 (en) * 2007-02-06 2014-02-18 Software Ag Event-based process configuration
US7975254B2 (en) 2007-06-27 2011-07-05 Sap Portals Israel Ltd. Design-time rules mechanism for modeling systems
US20090182689A1 (en) 2008-01-15 2009-07-16 Microsoft Corporation Rule-based dynamic operation evaluation
US8930930B2 (en) * 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
EP2438545A2 (en) * 2009-06-02 2012-04-11 Vector Fabrics B.V. Improvements in embedded system development
US20110078103A1 (en) 2009-09-29 2011-03-31 Sap Ag Framework to support application context and rule based ui-control
US8887125B1 (en) 2011-04-19 2014-11-11 Misys Ireland Limited Systems and methods for dynamic artefact substitution
EP2829970B1 (en) * 2013-07-26 2017-02-01 Fujitsu Limited A method and apparatus for porting source code
DE202013006746U1 (de) * 2013-07-29 2014-10-31 Geka Gmbh Drahtkernbürste mit mehreren Schlaufen aus einem einzigen Filament
US9898387B2 (en) * 2014-03-21 2018-02-20 Ca, Inc. Development tools for logging and analyzing software bugs
US9658907B2 (en) * 2014-06-24 2017-05-23 Ca, Inc. Development tools for refactoring computer code
US10055329B2 (en) * 2015-09-30 2018-08-21 International Business Machines Corporation Detection of antipatterns through statistical analysis

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961768B2 (en) * 1998-08-21 2005-11-01 Hewlett-Packard Development Company, L.P. Status polling failover of devices in a distributed network management hierarchy
CN1317678C (zh) * 2002-09-20 2007-05-23 联想(新加坡)私人有限公司 为计算环境提供问题确定和错误恢复特征的方法和系统
CN1529455A (zh) * 2003-09-29 2004-09-15 港湾网络有限公司 网络故障实时相关性分析方法及系统
CN101981546A (zh) * 2008-09-30 2011-02-23 株式会社日立制作所 以不取得事件信息的it装置为对象的根本原因分析方法、装置及程序
CN102143008A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 用于数据中心的诊断故障事件的方法及装置
CN103269290A (zh) * 2013-04-18 2013-08-28 中国移动通信集团陕西有限公司 基于案例库智能分析网络异常的方法和装置

Also Published As

Publication number Publication date
EP3436948A1 (en) 2019-02-06
US10339032B2 (en) 2019-07-02
CN108885574A (zh) 2018-11-23
WO2017172672A1 (en) 2017-10-05
US20170286275A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
EP2368189B1 (en) Debugging pipeline
US8850581B2 (en) Identification of malware detection signature candidate code
US7739553B2 (en) System crash analysis using path tracing technologies
US9262132B1 (en) Incremental local source code analysis
US8285662B2 (en) Framework for delta analysis during automated builds
US20120102458A1 (en) Generating documentation from tests
CN111459495B (zh) 单元测试代码文件生成方法、电子装置及存储介质
EP4006732A1 (en) Methods and apparatus for self-supervised software defect detection
CN110532185B (zh) 测试方法、装置、电子设备和计算机可读存储介质
CN111309343A (zh) 一种开发部署方法及装置
CN111797020A (zh) 基于动态字节码的mock数据方法及装置
US9715372B2 (en) Executable guidance experiences based on implicitly generated guidance models
Nouman et al. Software testing: A survey and tutorial on white and black-box testing of C/C++ programs
US9779014B2 (en) Resilient mock object creation for unit testing
Usman et al. TEGDroid: Test case generation approach for android apps considering context and GUI events
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
CN108885574B (zh) 用于监视和报告设计、编译和运行时的性能和正确性问题的系统
US7475388B2 (en) Method and apparatus for defining and instrumenting reusable java server page code snippets for website testing and production
CN110908915A (zh) 一种测试覆盖率的展示方法、装置及计算机系统
CN112988578A (zh) 一种自动化测试方法和装置
US20200167153A1 (en) Highlight source code changes in user interface
CN112579475A (zh) 代码测试方法、装置、设备及可读存储介质
US9710360B2 (en) Optimizing error parsing in an integrated development environment
CN112286802B (zh) 一种测试程序性能方法、装置和电子设备
CN115033489A (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
GR01 Patent grant
GR01 Patent grant