Fuzzy Fingerprinting for Code Ancestry Tracking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current software development tools lack a mechanism to track code changes across temporal and spatial boundaries, making it difficult to identify code ancestry and ensure license compliance across large codebases.

Innovation Solution

A system using fuzzy fingerprinting generates fingerprints from source code functions and stores them in a graph database, allowing for the comparison of code similarities across different revisions and repositories, thereby determining code ancestry and identifying potential license issues.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If traditional code tracking methods are used, then code changes can be monitored within single repositories, but code ancestry cannot be tracked across temporal and spatial boundaries

Engineering Contradiction:
Improvecode tracking capabilityVSAvoidcode ancestry information
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The system segments code into function-level units and generates fingerprints for individual functions rather than tracking entire files or repositories. This segmentation enables precise tracking of code ancestry across different temporal and spatial boundaries by comparing function fingerprints independently

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces fingerprinting as an intermediary mechanism that bridges code across different repositories and time periods. By converting code functions into comparable fingerprint representations, the system enables ancestry tracking without requiring direct access to original source code locations

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If comprehensive code analysis is performed across large codebases, then code ancestry can be identified, but the number of source files to review becomes unmanageably large

Engineering Contradiction:
Improvecode ancestry identification accuracyVSAvoidnumber of source files
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

The system extracts only the essential identifying features of code functions by generating fingerprints that capture unique characteristics. This extraction process filters out irrelevant information and retains only the key elements needed for ancestry identification, reducing the analysis scope from entire source files to condensed fingerprint representations

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent transforms code functions into a different parameter space through fingerprinting, converting complex source code into compact, comparable representations. This parameter transformation enables efficient similarity comparison and reduces the effective quantity of data that needs to be reviewed for ancestry identification

Inventive Principle:
Principle #35Parameter changes

3Measurement precision

If exact code matching is used, then precise code identification is achieved, but code evolution and modifications cannot be detected

Engineering Contradiction:
Improvecode identification accuracyVSAvoidcode evolution detection capability
Core Design Contradiction:
Measurement precisionVSAdaptability or versatility

Solution Approach 1:

The fingerprinting system employs dynamic matching that can adapt to code variations. Rather than requiring exact matches, the system uses fuzzy fingerprinting that can detect similarities despite modifications, allowing it to track code evolution while maintaining identification accuracy through configurable matching thresholds

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11972256B2Software code analysis using fuzzy fingerprinting
Publication Date: 2024.04.30 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11972256B2 patent drawing
  • US11972256B2 patent drawing
  • US11972256B2 patent drawing

AI summary

A system for determining code ancestry. The system includes: a memory; and a processor communicatively coupled to the memory. The processor is configured to perform a method comprising: receiving a source code file; parsing a plurality of functions out of the source code file; generating fuzzy fingerprints from the plurality of functions; and storing the fuzzy fingerprints in a graph database.