API Description Module for Dynamic Language Static Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The complexity of executable code, particularly in dynamically-typed languages, makes it difficult to determine callable APIs, check for compatibility, and verify identifier resolution without executing the code, leading to complications in development and tool support.

Innovation Solution

API description techniques that parse machine-readable data to generate descriptions of APIs, projecting them into an alternate form consumable by dynamically-typed languages, allowing for verification and compatibility checking without execution, using a module that converts metadata into a form suitable for code editors and static checkers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If executable code is written in dynamically-typed languages to provide flexibility and rapid development, then ease of operation and adaptability are improved, but the ability to perform static analysis, verify APIs, and check compatibility without execution deteriorates

Engineering Contradiction:
Improveease of operationVSAvoiddifficulty of detecting and measuring
Core Design Contradiction:
Ease of operationVSDifficulty of detecting and measuring

Solution Approach 1:

The patent introduces an intermediary representation (IR) that serves as a mediator between dynamically-typed code and static analysis tools. The IR captures type information, API signatures, and metadata in a structured format that enables static verification while preserving the flexibility of dynamically-typed languages. This intermediary layer allows tools to analyze code without full execution while maintaining the benefits of dynamic typing.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs preliminary actions by generating and analyzing intermediary representations before full code execution. Type checking, API verification, and compatibility checking are performed in advance during the analysis phase, enabling early detection of errors and compatibility issues without requiring runtime execution of the entire codebase.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If code complexity increases to provide more functionality, then adaptability and versatility are improved, but device complexity and difficulty of detecting and measuring APIs worsen

Engineering Contradiction:
ImproveadaptabilityVSAvoiddevice complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the analysis process into distinct phases: parsing source code into an abstract syntax tree (AST), generating an intermediary representation (IR) with type information, and performing static analysis on the IR. This segmentation allows complex code to be analyzed in manageable stages, reducing the apparent complexity while maintaining comprehensive analysis capabilities.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The intermediary representation acts as a simplified mediator between complex source code and analysis tools. It structures type information, API signatures, and metadata in a standardized format that reduces complexity for static analysis operations while preserving the full functionality and adaptability of the original code.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Loss of time

If API descriptions are generated without executing machine-readable data to improve safety and efficiency, then loss of time is reduced, but the precision and completeness of API verification worsen

Engineering Contradiction:
Improveloss of timeVSAvoidmeasurement precision
Core Design Contradiction:
Loss of timeVSMeasurement precision

Solution Approach 1:

The system performs preliminary generation of intermediary representations that capture type information and API signatures before full execution. This preliminary action enables static verification of APIs and compatibility checking without runtime execution, saving time while maintaining precision through careful construction of the IR from source code analysis.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent replaces the mechanical execution system with a static analysis system that uses intermediary representations. Instead of running code to verify APIs, the system analyzes structured type information and metadata in the IR, substituting computational execution with symbolic analysis to achieve both speed and precision.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS9424008B2API descriptions
Publication Date: 2016.08.23 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9424008B2 patent drawing
  • US9424008B2 patent drawing
  • US9424008B2 patent drawing

AI summary

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.