ML Post-Processing for Static Analysis Bug Severity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing static analysis tools are unsound and imprecise, leading to false negatives and false positives in code quality assessments, limiting their effectiveness in determining the actual quality of software projects.

Innovation Solution

Implementing a machine learning-based post-processing system that accesses bug datasets from static analysis tools, selects relevant features, and uses trained ML classifiers to estimate the severity of reported issues, thereby improving the accuracy of code quality assessments by distinguishing true positives from false positives.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If static analysis tools are used to assess code quality, then code quality assessment can be performed automatically, but the assessment results contain false positives and false negatives reducing reliability

Engineering Contradiction:
Improveautomated code quality assessmentVSAvoidaccuracy of bug detection
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent introduces machine learning models as intermediary components between static analysis tools and code quality assessment results. These ML models process the raw bug reports from static analysis tools and filter out false positives and negatives, thereby improving the reliability of the final assessment without eliminating automated analysis

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system implements feedback mechanisms where ML models learn from the results of static analysis tools and continuously improve their filtering capability. The system uses historical data and patterns from multiple static analysis runs to refine its understanding of true positives versus false positives, creating a self-improving assessment pipeline

Inventive Principle:
Principle #23Feedback

2Reliability

If multiple static analysis tools are used to improve assessment coverage, then more bugs can be detected, but the complexity of processing and analyzing results increases

Engineering Contradiction:
Improvecoverage of bug detectionVSAvoidcomplexity of analysis system
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent merges the results from multiple static analysis tools into a unified assessment framework. Instead of processing each tool's results separately, the system combines them and applies a single ML-based filtering layer that handles false positives and negatives across all tools, reducing overall system complexity while maintaining comprehensive coverage

Inventive Principle:
Principle #5Merging (Combining)

3Reliability

If formal verification is used to ensure high code quality, then code quality can be guaranteed, but the cost of specification and verification becomes prohibitively high

Engineering Contradiction:
Improvecode quality assuranceVSAvoidcost of verification
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent employs inexpensive machine learning models that can be rapidly trained and deployed as alternatives to expensive formal verification methods. These ML models provide sufficient quality assurance for practical purposes at a fraction of the cost of formal verification, making high-reliability assessment accessible for regular software development cycles

Inventive Principle:
Principle #27Cheap short-living objects (Disposable)

Data Source

PatentUS12197913B1Machine learning methods for source code quality analysis
Publication Date: 2025.01.14 SONATYPE INC
  • US12197913B1 patent drawing
  • US12197913B1 patent drawing
  • US12197913B1 patent drawing

AI summary

A preferably cloud-based platform supports improvements in software development by assessing quality of source code files, for example, when files are pushed to a software repository. Various static analysis tools are executed on a source file, and the resulting bug reports, which reflect native features of the tools are assembled in a dataset. The bug dataset is enhanced by adding additional features that are not natively generated by the static analysis tool. An ML classifier is trained to predict a selected bug feature, and the classifier is used to update the bug dataset to include estimated values of the selected feature. In an embodiment, post-processing analysis of bug report datasets applies machine learning methods to predict the “severity” of bug reports, an indication of whether they are likely to be true or false. Further, a report of code quality can be returned based on the severity predictions.