Code Analysis Tool for Target Typing Refactoring

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Identifying and implementing refactoring opportunities in source code that leverage new features and enhancements of programming languages, such as Java, becomes increasingly complex due to the sophistication of these features and their interdependencies, making it difficult to determine which combinations of code transformations are acceptable and beneficial.

Innovation Solution

A code analysis tool (CAT) is developed to identify and evaluate combinations of target typing-dependent refactoring opportunities by examining source code, using pattern matching and compiler functionality to determine acceptable transformations that result in error-free compilation and preserve original code semantics, while also considering readability and safety criteria.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If multiple refactoring transformations are applied to leverage new language features, then code readability and safety are improved, but the complexity of identifying acceptable combinations increases

Engineering Contradiction:
Improvecode readabilityVSAvoidcomplexity of identifying refactoring combinations
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent segments the refactoring analysis process into multiple independent stages: (1) identifying individual refactoring opportunities using pattern matching, (2) determining target types for each transformation, (3) generating combinations of transformations, and (4) validating combinations through compiler analysis. This segmentation allows complex refactoring identification to be broken down into manageable steps that can be performed systematically.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a code analysis tool as an intermediary system that sits between the source code and the refactoring process. This tool automatically identifies refactoring opportunities, determines target types, generates combinations, and validates them using compiler functionality, thereby mediating the complexity of identifying acceptable refactoring combinations and making the process more manageable.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If multiple refactoring transformations are applied to leverage new language features, then code safety is improved, but the complexity of identifying acceptable combinations increases

Engineering Contradiction:
Improvecode safetyVSAvoidcomplexity of identifying refactoring combinations
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the refactoring analysis process into multiple independent stages: (1) identifying individual refactoring opportunities using pattern matching, (2) determining target types for each transformation, (3) generating combinations of transformations, and (4) validating combinations through compiler analysis. This segmentation allows complex refactoring identification to be broken down into manageable steps that can be performed systematically.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements feedback mechanisms at multiple levels: (1) pattern matching identifies refactoring opportunities based on code structure, (2) target type determination provides feedback on type compatibility, (3) combination generation creates potential refactoring sets, and (4) compiler validation provides final feedback on whether combinations are acceptable. This feedback loop ensures that only safe and valid refactoring combinations are selected.

Inventive Principle:
Principle #23Feedback

3Extent of automation

If pattern matching is used to identify refactoring opportunities, then the process is automated, but determining acceptable combinations becomes non-trivial

Engineering Contradiction:
Improveautomation of refactoring identificationVSAvoiddifficulty of determining acceptable combinations
Core Design Contradiction:
Extent of automationVSDifficulty of detecting and measuring

Solution Approach 1:

The patent segments the refactoring analysis process into multiple independent stages: (1) identifying individual refactoring opportunities using pattern matching, (2) determining target types for each transformation, (3) generating combinations of transformations, and (4) validating combinations through compiler analysis. This segmentation allows complex refactoring identification to be broken down into manageable steps that can be performed systematically.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent replaces manual analysis of code transformations with automated mechanical systems: pattern matching algorithms automatically identify refactoring opportunities, compiler functionality automatically validates transformations, and systematic combination generation algorithms create all possible refactoring sets. This substitution of manual analysis with automated mechanisms makes the process tractable despite the complexity.

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

4Duration of action of stationary object

If target typing mechanisms are used in refactoring transformations, then code maintainability is improved, but the interdependence of transformations increases complexity

Engineering Contradiction:
Improvecode maintainabilityVSAvoidinterdependence of transformations
Core Design Contradiction:
Duration of action of stationary objectVSDevice complexity

Solution Approach 1:

The patent segments the refactoring analysis process into multiple independent stages: (1) identifying individual refactoring opportunities using pattern matching, (2) determining target types for each transformation, (3) generating combinations of transformations, and (4) validating combinations through compiler analysis. This segmentation allows complex refactoring identification to be broken down into manageable steps that can be performed systematically.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements dynamic target type determination where the target type for each refactoring transformation is inferred based on the specific code context and dependencies. The system dynamically analyzes the code to determine appropriate target types rather than using static pre-defined types, allowing the refactoring process to adapt to the specific interdependencies present in each codebase.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS10303467B2Target typing-dependent combinatorial code analysis
Publication Date: 2019.05.28 ORACLE INT CORP
  • US10303467B2 patent drawing
  • US10303467B2 patent drawing
  • US10303467B2 patent drawing

AI summary

A code analysis tool identifies a first and a second proposed code transformation (PCT) for respective expressions within a refactoring candidate section of source code, such that at least one PCT would result in an exercise of a target typing mechanism of the programming language being used. The determination of the data type of at least one of the expressions depends on the determination of the data type of the other. The tool generates a plurality of PCT combinations for the refactoring candidate section. In response to determining that a particular PCT combination meets acceptance criteria, a refactoring option which includes that PCT combination is recommended.