# US 2019/0171444 A1 · Inferring code deprecation from module deprecation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0171444 A1
- Document ID: US20190171444A1
- Status: Published application
- Kind: A1
- Application number: 15/830,241
- Filed: 2017-12-04
- Published: 2019-06-06
- Earliest claimed: 2017-12-04
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: Chris Hegarty; Alexander R. Buckley; Stuart Warren Marks
- Web page: https://patentgrep.com/patent/US20190171444A1

## CPC

- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/41: Compilation
- G06F 8/75: Structural analysis for program understanding
- G06F 11/3604: Analysis of software for verifying properties of programs (testing of software G06F11/3668)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques for inferring code deprecation from module deprecation are disclosed. A system detects a reference to a type. The system determines that a particular module, in a plurality of modules in a module system, exposes the referenced type. The system determines that the particular module is associated with a deprecation status. Responsive to determining that the particular module is associated with the deprecation status, the system presents information indicating that the reference references a deprecated module.

## Claims

### Claim 1

A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, cause performance of operations comprising:
detecting a reference to a type;
determining that a particular module, in a plurality of modules in a module system, exposes the referenced type;
determining that the particular module is associated with a deprecation status;
responsive to determining that the particular module is associated with the deprecation status, presenting information indicating that the referenced type is exposed by a deprecated module.

### Claim 2 (depends on 1)

The medium of claim 1, wherein the deprecation status indicates that use of the referenced type, exposed by the particular module, is discouraged.

### Claim 3 (depends on 1)

The medium of claim 1, wherein the deprecation status indicates the particular module is degraded relative to at least one other module in the plurality of modules.

### Claim 4 (depends on 1)

The medium of claim 1, wherein determining that the particular module exposes the referenced type is based, at least in part, on an analysis of source code comprising the reference.

### Claim 5 (depends on 1)

The medium of claim 1, wherein determining that the particular module exposes the referenced type is based, at least in part, on an analysis of compiled code comprising the reference.

### Claim 6 (depends on 5)

The medium of claim 5, wherein the analysis of compiled code is performed prior to runtime.

### Claim 7 (depends on 1)

The medium of claim 1, wherein presenting information comprises presenting a warning at compile-time.

### Claim 8 (depends on 1)

The medium of claim 1, wherein presenting information comprises discouraging use of the referenced type.

### Claim 9 (depends on 1)

The medium of claim 1, wherein the information presented identifies the particular module.

### Claim 10 (depends on 1)

The medium of claim 1, the operations further comprising:
determining a kind of the deprecation status associated with the particular module; and
determining, based at least in part on the kind of the deprecation status associated with the particular module, which information to present.

### Claim 11 (depends on 1)

The medium of claim 1, wherein determining that the particular module is associated with the deprecation status comprises:
inspecting a descriptor of the particular module; and
determining that the descriptor comprises an annotation indicating the deprecation status.

### Claim 12 (depends on 1)

The medium of claim 1, wherein the deprecation status indicates terminal deprecation, wherein terminal deprecation indicates that the particular module will be removed from the plurality of modules.

### Claim 13 (depends on 1)

The medium of claim 1, wherein the reference to the referenced type comprises at least one of: an instantiation of an object of the referenced type; a field declared as the referenced type; a method that returns the referenced type; inheritance from a superclass corresponding to the referenced type; and a reference to a type of which the referenced type is a supertype.

### Claim 14 (depends on 1)

The medium of claim 1, wherein the reference to the referenced type comprises an indirect reference, via at least one other type, to the referenced type.

### Claim 15 (depends on 16)

The medium of claim 16, the operations further comprising:
traversing a module dependency graph to identify the indirect reference.

### Claim 16 (depends on 1)

The medium of claim 1, the operations further comprising:
modifying the deprecation status from ordinary deprecation to terminal deprecation.

### Claim 17 (depends on 1)

The medium of claim 1, the operations further comprising:
detecting an other reference to the type;
determining that the other reference to the type is located in deprecated code; and
based on determining that the other reference to the type is located in deprecated code, refraining from presenting information associated with the other reference to the type.

### Claim 18 (depends on 1)

The medium of claim 1, the operations further comprising:
determining that the reference to the type is associated with an application programming interface (API) signature; and
based at least in part on the reference to the type being associated with the API signature, increasing a priority and/or a severity of information presented.

### Claim 19

A system comprising:
one or more hardware processors; and
one or more non-transitory computer-readable media storing instructions, which when executed by the one or more hardware processors, cause execution of operations comprising:
detecting a reference to a type;
determining that a particular module, in a plurality of modules in a module system, exposes the referenced type;
determining that the particular module is associated with a deprecation status;
responsive to determining that the particular module is associated with the deprecation status, presenting information indicating that the referenced type is exposed by a deprecated module.

### Claim 20

A method comprising:
detecting a reference to a type;
determining that a particular module, in a plurality of modules in a module system, exposes the referenced type;
determining that the particular module is associated with a deprecation status;
responsive to determining that the particular module is associated with the deprecation status, presenting information indicating that the referenced type is exposed by a deprecated module.
wherein the method is performed by at least one device comprising a hardware processor.
