Patents by Inventor Michael C. Fanning

Michael C. Fanning has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20120311533
    Abstract: Enhancing dynamic code. A method includes obtaining one or more first data structures defining constructs in a body of dynamic language source code. From the one or more first data structures, identifier information is extracted for one or more of the defined constructs. Knowledge about the constructs is augmented. Using the identifier information and augmented knowledge, metadata about the body of the dynamic language source code is generated. The generated metadata is represented as a symbol table. The body of dynamic language source code is visually enhanced based on the symbol table structure.
    Type: Application
    Filed: May 31, 2011
    Publication date: December 6, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Michael C. Fanning, Randy S. Kimmerly, Steven Edward Lucco, Andrew Sterland
  • Publication number: 20120311540
    Abstract: Performing tracing functionality. A method includes collecting runtime information that describes the execution of code. The collected runtime information is correlated to specific lines of code and one or more paths taken to get to specific lines of code. User input is received defining a view preference. A code visualization is provided based on the user input defining a view preference and the act of correlating the collected runtime information to specific lines of code and a path taken to get to the line of code.
    Type: Application
    Filed: June 6, 2011
    Publication date: December 6, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Michael C. Fanning, Timothy Scott Rice, Christopher Paul Schmich
  • Publication number: 20120311535
    Abstract: Analyzing dynamic source code. A method includes accessing a specific metadata format data structure. The data structure was created by obtaining one or more first data structures defining constructs in a body of dynamic language source code. From the one or more first data structures, identifier information is extracted for one or more of the defined constructs. Knowledge about the constructs is augmented. The metadata format data structure is parsed to compute metrics about the metadata format data structure. The metrics about the metadata format data structure are provided to a user.
    Type: Application
    Filed: May 31, 2011
    Publication date: December 6, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Michael C. Fanning, Frederico A. Mameri, Zachary A. Nation
  • Publication number: 20120311546
    Abstract: Transforming dynamic code. The method includes obtaining one or more first data structures defining constructs in a body of dynamic language source code. From the one or more first data structures, identifier information is extracted for one or more of the defined constructs. Knowledge about the constructs is augmented. Using the identifier information and augmented knowledge, metadata is generated about the body of the dynamic language source code. The generated metadata is represented as a symbol table. Using the symbol table, the body of dynamic language source code is transformed.
    Type: Application
    Filed: May 31, 2011
    Publication date: December 6, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Michael C. Fanning, Frederico A. Mameri, Zachary A. Nation
  • Publication number: 20120266141
    Abstract: API description techniques are described for consumption by dynamically-typed languages. In one or more implementations, machine-readable data is parsed to locate descriptions of one or more application programming interfaces (APIs). The descriptions of the one or more application programming interfaces are projected into an alternate form that is different than a form of the machine-readable data.
    Type: Application
    Filed: April 13, 2011
    Publication date: October 18, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Michael C. Fanning, Ani Babaian, Jomo A. Fisher, Anson M. Horton, Lucas J. Hoban
  • Patent number: 7975257
    Abstract: Static and dynamic code analyses are seamlessly, iteratively performed. A software analysis tool integrates the results of dynamic and static analysis and iteratively utilizes results from a previous analysis, or analyses, to augment a current analysis. During a debugging process, information collected at runtime is integrated with static code analysis results. This information is generated and stored as part of the results of the testing and debugging processes. The stored information is subsequently utilized to provide improved analysis results. The software analysis tool eliminates the need for software developers to separately perform static analysis and dynamic analysis.
    Type: Grant
    Filed: June 13, 2006
    Date of Patent: July 5, 2011
    Assignee: Microsoft Corporation
    Inventors: Michael C. Fanning, Nicholas Guerrera
  • Publication number: 20110113405
    Abstract: A method to measure the performance of an Application Programming Interface (API) includes selecting a target API and tracking memory allocation for the functional calls of the selected API to generate a list of functions called by the API. The individual functions are then called within the API in isolation and timing and memory allocation data for each are collected and recorded. The recorded results are then bucketized according to a log base 2 method and made accessible by API users to indicate the performance of specific APIs.
    Type: Application
    Filed: January 11, 2011
    Publication date: May 12, 2011
    Applicant: Microsoft Corporation
    Inventors: Nicholas Guerrera, Rico Mariani, Michael C. Fanning, Jan Stephen Gray
  • Patent number: 7895579
    Abstract: A method to measure the performance of an Application Programming Interface (API) includes selecting a target API and tracking memory allocation for the functional calls of the selected API to generate a list of functions called by the API. The individual functions are then called within the API in isolation and timing and memory allocation data for each are collected and recorded. The recorded results are then bucketized according to a log base 2 method and made accessible by API users to indicate the performance of specific APIs.
    Type: Grant
    Filed: June 16, 2006
    Date of Patent: February 22, 2011
    Assignee: Microsoft Corporation
    Inventors: Nicholas Guerrera, Rico Mariani, Michael C. Fanning, Jan Stephen Gray
  • Patent number: 7873949
    Abstract: Upon accessing binary that was generated by a compiler using corresponding source code, a potential reportable problem in the binary is identified. The binary includes a compiler transformed indication that the potential reportable problem is to be suppressed at least under some circumstances. The transformed indication is generated by the compiler using a corresponding untransformed indication in the corresponding source code. The transformed indication is then used to decide that the potential reportable problem should not be reported. Thus, artifacts within the source code itself may ultimately direct what problems are not to be reported on when the corresponding binary is analyzed after the compile phase.
    Type: Grant
    Filed: February 8, 2006
    Date of Patent: January 18, 2011
    Assignee: Microsoft Corporation
    Inventors: Sean David Sandys, Jeffrey van Gogh, Michael C. Fanning, Nicholas P. Guerrera
  • Patent number: 7836433
    Abstract: The present invention extends to methods, systems, and computer program products for analyzing binary code. Binary code is received. Code analysis rules indicative of a query related to the functionality of the binary code are received. The query is implemented in analysis code configured to determine results of the query. It is determined if valid cached results for the query are cached in a results store. If not, the analysis code is invoked to determine the results for the query and the results are cached. Accordingly, when the query is received in the future, the results can be accessed from the results store without having to invoke the analysis code to determine the results. If so, the cached results are retrieved so as to avoid further invocation of the analysis code. The results are returned.
    Type: Grant
    Filed: January 26, 2006
    Date of Patent: November 16, 2010
    Assignee: Microsoft Corporation
    Inventors: Michael C. Fanning, Nicholas P. Guerrera, Jeffrey van Gogh
  • Publication number: 20100211865
    Abstract: Many web developers spend significant time investigating and/or mitigating inconsistencies that may present when a web page is rendered across different browsers. Most websites are developed for multiple versions of one or more web browser and/or for multiple versions of one or more platforms. As provided herein, a cross-browser page visualization may be generated. A visualization may comprise a Document Object Model (DOM) associated with a screenshot image of a web page rendered within an available browser. Multiple visualizations may be created using locally installed browsers and/or remote browsers. The visualizations provide high-fidelity browser renderings coupled with underlying styling and/or DOM information that may be used to interrogate and/or annotate the screenshot image, thus allowing a web page to be developed that can be desirably rendered on different browsers, different operating systems and/or on different versions of the same.
    Type: Application
    Filed: February 19, 2009
    Publication date: August 19, 2010
    Applicant: Microsoft Corporation
    Inventors: Michael C. Fanning, Boris Feldman, Steven I. Guttman, Tyler G. Simpson, Erik A. Saltwell
  • Publication number: 20100211893
    Abstract: Web developers devote significant time and resources to investigating and mitigating inconsistencies that may present when a web page is rendered across different browsers. As provided herein, a cross-browser page visualization may be presented, which comprises one or more screenshot images of a web page rendered with different browsers, coupled with underlying styling and/or Document Object Model representation data. This allows for powerful page visualization and/or feature analysis. For example, rendering inconsistencies may be easily (or even automatically) detected and/or corrected.
    Type: Application
    Filed: February 19, 2009
    Publication date: August 19, 2010
    Applicant: Microsoft Corporation
    Inventors: Michael C. Fanning, Boris Feldman, Steven I. Guttman, Tyler G. Simpson, Erik A. Saltwell
  • Publication number: 20100088669
    Abstract: An assembly aggregate comprising a virtual, logical view of an arbitrarily defined collection of intermediate code and metadata can be authored, factored, accessed, modified, and distributed. Multiple physical containers of assembly information can be aggregated to create a single logical assembly called an assembly aggregate. An assembly can thus be redefined as a logical view against (or projection over) the assembly aggregate. Such an assembly can be targeted to the requester: that is, an assembly can be redefined according to tool and/or execution context rather than conforming to explicit or implicit requirements enforced by the runtime.
    Type: Application
    Filed: October 8, 2008
    Publication date: April 8, 2010
    Applicant: Microsoft Corporation
    Inventors: Krzysztof J. Cwalina, Michael C. Fanning, Brian M. Grunkemever, Brent E. Rector, Barend H. Venter
  • Publication number: 20100083238
    Abstract: One or more embodiments, described herein, are directed towards a technology for performing transformations and/or modifications to managed byte code. In order to perform the transformations and/or modifications, a mutable programmable representation (MPR) is laid out. A programmer then performs an arbitrary adjustment using the MPR.
    Type: Application
    Filed: September 30, 2008
    Publication date: April 1, 2010
    Applicant: Microsoft Corporation
    Inventors: Michael Barnett, Michael C. Fanning, Brian M. Grunkemeyer, Barend H. Venter
  • Publication number: 20090144698
    Abstract: An exemplary method includes receiving source code having a plurality of code segments, providing a desired level of quality for the source code, analyzing the source code to assign a complexity measure to each of the plurality of code segments and assigning a level of code coverage to each of the plurality of code segments based at least in part on the desired level of quality and the complexity measures. An exemplary system prioritizes quality improvements to source code based, in part, on a quality assessment. Such a system can improve code quality by assigning higher test coverage levels to modules with higher complexity.
    Type: Application
    Filed: November 29, 2007
    Publication date: June 4, 2009
    Applicant: Microsoft Corporation
    Inventors: Michael C. Fanning, Nachiappan Nagappan, Thomas J. Ball, Sean Sandys
  • Publication number: 20080320457
    Abstract: Metrics may be determined from intermediate computer code by reading and analyzing an entire application using intermediate code, including any linked portions. The metrics may include cyclomatic complexity, estimated or actual number of lines of code, depth of inheritance, type coupling, and other metrics. The metrics may be combined into a quantifiable metric for the code.
    Type: Application
    Filed: June 19, 2007
    Publication date: December 25, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Todd King, Michael C. Fanning, Nachiappan Nagappan, Marcelo Birnbach
  • Publication number: 20080209401
    Abstract: Various technologies and techniques are disclosed for integrating debugging with decompilation. A debugger integrated with a decompiler is provided. The system determines a need to debug at least a portion of an application for which necessary debug information is not available. A decompile process is performed to decompile a binary into a decompiled source code in a particular language. A symbol file is generated that maps code sequence execution points to the decompiled source code. The decompiled source code and the symbol file are provided to the debugger. The debugging then continues using the decompiled source code. The user is able to debug applications when source code and symbol files are not available, and/or when the user prefers to debug in a different language than the language of the available source code.
    Type: Application
    Filed: February 22, 2007
    Publication date: August 28, 2008
    Applicant: Microsoft Corporation
    Inventors: Michael C. Fanning, Steven J. Steiner
  • Publication number: 20080178155
    Abstract: Various technologies and techniques are disclosed for providing a code analysis debugger. A code analysis process is performed to identify possible program defects that are present in particular source code. The results of the code analysis are stored in a results file in a structured format. The structured format contains sections that describe details about the one or more portions of source code that have been identified as possibly having the program defects. The analysis results are retrieved for display. A debugger-like feature allows a user to review a representation of the program defects identified during the code analysis. The debugger-like feature has a graphical user interface that can display at least some of the possible program defects in a call stack for further review.
    Type: Application
    Filed: January 19, 2007
    Publication date: July 24, 2008
    Applicant: Microsoft Corporation
    Inventors: Jeffrey van Gogh, Michael C. Fanning
  • Publication number: 20070294673
    Abstract: A method to measure the performance of an Application Programming Interface (API) includes selecting a target API and tracking memory allocation for the functional calls of the selected API to generate a list of functions called by the API. The individual functions are then called within the API in isolation and timing and memory allocation data for each are collected and recorded. The recorded results are then bucketized according to a log base 2 method and made accessible by API users to indicate the performance of specific APIs.
    Type: Application
    Filed: June 16, 2006
    Publication date: December 20, 2007
    Applicant: Microsoft Corporation
    Inventors: Nicholas Guerrera, Rico Mariani, Michael C. Fanning, Jan Stephen Gray
  • Publication number: 20070288899
    Abstract: Static and dynamic code analyses are seamlessly, iteratively performed. A software analysis tool integrates the results of dynamic and static analysis and iteratively utilizes results from a previous analysis, or analyses, to augment a current analysis. During a debugging process, information collected at runtime is integrated with static code analysis results. This information is generated and stored as part of the results of the testing and debugging processes. The stored information is subsequently utilized to provide improved analysis results. The software analysis tool eliminates the need for software developers to separately perform static analysis and dynamic analysis.
    Type: Application
    Filed: June 13, 2006
    Publication date: December 13, 2007
    Applicant: Microsoft Corporation
    Inventors: Michael C. Fanning, Nicholas Guerrera