Methods and apparatus for analyzing software interface usage
First Claim
1. A method of analyzing first software for software interface usage via second software, said first software comprising at least one file path and referencing a library, said method comprising:
- generating, using at least said second software, a data structure comprising a listing of all software application programming interfaces (APIs) that can be called by said first software wherein said generating said data structure further comprises generating a listing of all public methods on all public classes;
recursively examining, using at least said second software, all classes on a file path to identify library calls made by said first software, wherein said recursively examining further comprises identifying constituent methods associated with each class on said file path, and disassembling each of said constituent methods that reference calls within said listing into a plurality of instructions to identify one or more API calls therein;
generating, using at least said second software, a call report including least said identified library calls; and
marking based on the call report, using at least said second software, one or more APIs of said listing for impending removal.
5 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus for analyzing the interface usage and requirements within software applications. In one embodiment, the interfaces comprise application programming interfaces (APIs) used with Java-based software, and the apparatus comprises a computer program that analyzes file paths (or classpaths) containing one or more files comprising Java bytecode. The names of the classes are extracted and placed into a class dictionary. The different classes listed in the dictionaries are broken down into their individual methods. Each method is then dissembled and analyzed for method or field invocations on other classes found in the dictionary. Methods called are added to a “used class” report. The used class report preferably contains the name of the class, method and the instruction information.
-
Citations
18 Claims
-
1. A method of analyzing first software for software interface usage via second software, said first software comprising at least one file path and referencing a library, said method comprising:
-
generating, using at least said second software, a data structure comprising a listing of all software application programming interfaces (APIs) that can be called by said first software wherein said generating said data structure further comprises generating a listing of all public methods on all public classes; recursively examining, using at least said second software, all classes on a file path to identify library calls made by said first software, wherein said recursively examining further comprises identifying constituent methods associated with each class on said file path, and disassembling each of said constituent methods that reference calls within said listing into a plurality of instructions to identify one or more API calls therein; generating, using at least said second software, a call report including least said identified library calls; and marking based on the call report, using at least said second software, one or more APIs of said listing for impending removal. - View Dependent Claims (2, 3, 4)
-
-
5. For use in a content delivery network, a software architecture operative to determine application programming interface (API) requirements for applications used in said network, said architecture comprising:
-
a first software component disposed on a first computer; a second software component disposed on a second computer, said second software component in data communication with said first computer; and
wherein said second software component is configured to;receive a computer program to be evaluated from said first software component; generate a data structure comprising a listing of all APIs that can be called by said computer program wherein said generation of said data structure further comprises generation of a listing of all public methods on all public classes; recursively evaluate all classes on a file path to identify library calls made by said computer program, wherein said recursive evaluation further comprises identification of constituent methods associated with each class on said file path, and disassembly of each of said constituent methods that reference calls within said listing into a plurality of instructions to identify one or more API calls therein; provide a report comprising at least said identified library calls and an indication of use of one or more deprecated APIs; and provide one or more placeholders configured to replace said one or more deprecated APIs; and
wherein at least one of said one or more placeholders is configured to identify itself and one or more parameters said at least one of said one or more placeholders accepts. - View Dependent Claims (6, 7, 8, 9, 10, 11)
-
-
12. A method of analyzing first software for software interface usage via second software, said first software comprising at least one file path and referencing a library, said method comprising:
-
generating, using at least said second software, a data structure comprising a listing of all software interfaces that can be called by said first software, wherein said generating said data structure further comprises generating a listing of all public methods on all public classes; recursively examining, using at least said second software, all classes on a file path to identify library calls made by said first software, wherein said recursively examining further comprises identifying constituent methods associated with each class on said file path, and disassembling each of said constituent methods that reference calls within said listing into a plurality of instructions to identify one or more API calls therein; generating, using at least said second software, a call report including at least said identified library calls; and adding information to said call report, said information configured to enable generation of computer code, the code useful to accomplish one or more functions identified by a programmer. - View Dependent Claims (13)
-
-
14. An apparatus for analysis of software, said software comprising a file path, and said apparatus comprising a hardware processor configured to execute a plurality of instructions, said plurality of instructions being configured to, when executed, cause said apparatus to:
-
generate, at a previously deployed client device, a data package comprising a list of all interfaces which can be called by said software, wherein said generation of said data package further comprises generation of a dictionary of all public methods on all public classes, said public methods mapped to respective ones of said public classes; recursively examine, at said client device, all classes on said file path to identify calls made by said software, wherein said recursively examining further comprises identifying constituent methods associated with each class on said file path, and disassembling each of said constituent methods that reference calls within said listing into a plurality of instructions to identify one or more API calls therein; generate, at said client device, a report comprising at least said identified calls, said report configured to be provided to an application server; and in response to a call made by said software that cannot be correlated to said identified calls in said report; generate code configured to duplicate an interface associated with said uncorrelated call; and match a method present in said interface associated with said uncorrelated call with a similar class present in said dictionary, wherein said matching renders said interface associated with said uncorrelated call interoperable with said software. - View Dependent Claims (15, 16, 17, 18)
-
Specification