Software version fingerprint generation and identification
AssigneeSap SE
InventorsMichele Bezzi, Antonino Sabetta, Henrik Plate, Serena Ponta, Francesco Di Cerbo
Life of this patent
Estimating the term…
Abstract
Systems and methods are provided for accessing a source code repository comprising a plurality of versions of code, analyzing the plurality of versions of code of the component to compute metrics to identify each version of code, analyzing the metrics to determine a subset of the metrics to use to as a fingerprint definition to identify each version of the code, generating a fingerprint for each version of code using the fingerprint definition, generating a fingerprint matrix with the fingerprint for each version of code for the software component and storing the fingerprint definition and the fingerprint matrix
Claims20
A computer-implemented method comprising:
- accessing, by a computing device, a metrics matrix comprising candidate metrics to identify each version of code of a plurality of versions of code for a software component;
- generating, by the computing device, a fingerprint definition to identify each version of the code for the software component by performing operations comprising:
- (1) determining a best candidate metric among the candidate metrics to identify the most versions of the plurality of versions of code;
- (2) adding the best candidate metric to a set of optimal metrics;
- (3) determining which versions of code of the plurality of versions of code can be identified with the best candidate metric;
- (4) removing the versions of code of the plurality of versions of code that can be identified with the best candidate metric and the best candidate metric from the metrics matrix to generate a reduced metrics matrix;
- and
- (5) repeating (1)-(4) on the reduced metrics matrix until all versions of the plurality of versions of code are uniquely identified by the set of optimal metrics or until there is one or more versions of code that cannot be uniquely identified using the candidate metrics;
- and
- based on determining that all versions of the plurality of version of code are uniquely identified by the set of optimal metrics, generating a fingerprint for each version of code for the software component, using the fingerprint definition comprising the set of optimal metrics.
A computing device comprising:
- a memory that stores instructions;
- and
- one or more processors configured to perform operations comprising:
- accessing a metrics matrix comprising candidate metrics to identify each version of code of a plurality of versions of code for a software component;
- generating a fingerprint definition to identify each version of the code for the software component by performing operations comprising:
- (1) determining a best candidate metric among the candidate metrics to identify the most versions of the plurality of versions of code;
- (2) adding the best candidate metric to a set of optimal metrics;
- (3) determining which versions of code of the plurality of versions of code can be identified with the best candidate metric;
- (4) removing the versions of code of the plurality of versions of code that can be identified with the best candidate metric and the best candidate metric from the metrics matrix to generate a reduced metrics matrix;
- and
- (5) repeating (1)-(4) on the reduced metrics matrix until all versions of the plurality of versions of code are uniquely identified by the set of optimal metrics or until there is one or more versions of code that cannot be uniquely identified using the candidate metrics;
- and
- based on determining that all versions of the plurality of version of code are uniquely identified by the set of optimal metrics, generating a fingerprint for each version of code for the software component, using the fingerprint definition comprising the set of optimal metrics.
A non-transitory computer-readable medium comprising instructions stored thereon that are executable by at least one processor to cause a computing device to perform operations comprising:
- accessing a metrics matrix comprising candidate metrics to identify each version of code of a plurality of versions of code for a software component;
- generating a fingerprint definition to identify each version of the code for the software component by performing operations comprising:
- (1) determining a best candidate metric among the candidate metrics to identify the most versions of the plurality of versions of code;
- (2) adding the best candidate metric to a set of optimal metrics;
- (3) determining which versions of code of the plurality of versions of code can be identified with the best candidate metric;
- (4) removing the versions of code of the plurality of versions of code that can be identified with the best candidate metric and the best candidate metric from the metrics matrix to generate a reduced metrics matrix;
- and
- (5) repeating (1)-(4) on the reduced metrics matrix until all versions of the plurality of versions of code are uniquely identified by the set of optimal metrics or until there is one or more versions of code that cannot be uniquely identified using the candidate metrics;
- and
- based on determining that all versions of the plurality of version of code are uniquely identified by the set of optimal metrics, generating a fingerprint for each version of code for the software component, using the fingerprint definition comprising the set of optimal metrics.
Dependencies are inferred from the claim text.