Methods and apparatus for analyzing software interface usage
First Claim
1. A method of programmatically analyzing Java byte code in order to identify one or more called application programming interfaces (APIs), the method comprising:
- providing a first file path containing first Java byte code;
providing a second file path containing second Java byte code;
parsing files found on said first file path to create at least one first parsed class file;
placing a name of at least one class defined in the first parsed class file into a dictionary;
parsing files found on said second file path to create at least one parsed second class file;
evaluating each class on said second file path to identify one or more methods associated therewith; and
evaluating each of said one or more methods to identify at least one method or field invocation associated with any classes in said dictionary.
9 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
46 Claims
-
1. A method of programmatically analyzing Java byte code in order to identify one or more called application programming interfaces (APIs), the method comprising:
-
providing a first file path containing first Java byte code; providing a second file path containing second Java byte code; parsing files found on said first file path to create at least one first parsed class file; placing a name of at least one class defined in the first parsed class file into a dictionary; parsing files found on said second file path to create at least one parsed second class file; evaluating each class on said second file path to identify one or more methods associated therewith; and evaluating each of said one or more methods to identify at least one method or field invocation associated with any classes in said dictionary. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of analyzing class-based computer code, comprising:
-
receiving a first input containing first code; receiving a second input containing second code; extracting a first set of classes from said first input; extracting a second set of classes from said second input; analyzing each class in said first set of classes to generate a dictionary; analyzing each class in said second set of classes to generate a set of methods; and analyzing each method from said set of methods to identify invocations of classes present in said dictionary. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A computer-readable storage device comprising a medium adapted to store a computer program, said program being adapted to analyze class-based computer code using the method comprising:
-
extracting a first set of classes from a first input, said first input comprising first code; extracting a second set of classes from a second input, said second input comprising second code; analyzing each class in said first set of classes to generate a listing; analyzing each class in said second set of classes to generate a set of methods; and analyzing each method from said set of methods to identify invocations of classes present in said listing.
-
-
15. A method of evaluating the compliance of a first computer program to a target standard, said target standard specifying use of a plurality of application programming interfaces (APIs), the method comprising:
-
processing, using a second computer program, a third computer program in order to determine the API usage of said third program, said third program being known to comply with said standard; and evaluating at least a portion of said first computer program against said determined API usage to determine if said first computer program supports all of the APIs used by said third program. - View Dependent Claims (16)
-
-
17. A method of analyzing first software for application programming interface (API) usage via second software, said first software being rendered in an object-oriented programming language, said first software comprising at least one file path and referencing a library, the method comprising:
-
generating using at least said second software a data structure comprising a listing of all APIs that can be called by said first software; recursively examining, using at least said second software, all classes on the file path to identify library calls made by said first software; and generating, using at least said second software, a call report including at least said identified library calls. - View Dependent Claims (18, 19, 20)
-
-
21. A method of evaluating application programming interface (API) usage within an application program based on a library, the method comprising:
-
identifying first and second sets of files to be processed; generating a first dictionary of all public classes and interfaces in the library; and performing a comparison process on said first and second sets of files to generate a second dictionary, said second dictionary comprising a plurality of entries indicating APIs called by said application program.
-
-
22. A method of computer program evaluation, said program having a plurality of classes and methods associated therewith, said method of evaluation comprising:
-
disassembling at least one of said associated methods into a plurality of instructions; analyzing at least a portion of said instructions to identify one or more operation codes (op codes); analyzing at least one of said one or more identified op codes to determine an owning class for a target method or field associated therewith; evaluating said owning class against a dictionary of classes; and if said owning class is in the dictionary, including said at least one associated method in an output data structure. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A method of specifying the minimum application programming interface (API) support requirements for a first computer program, the method comprising:
-
processing, using a second computer program, a third computer program in order to determine the API usage of said third program; and generating output indicative of said API usage, said output being useful for specifying said minimum API support requirements for said first program. - View Dependent Claims (28, 29)
-
-
30. A method of developing a first computer program for use on a target platform, the method comprising:
specifying application programming interface (API) support requirements for said computer program, said specifying comprising; processing, using a second computer program, a third computer program in order to determine the API usage of said third program; generating output indicative of said API usage within said third program; and developing said first program based at least in part on said output, said first program at least meeting said support requirements.
-
31. A method of processing object-oriented computer software, comprising:
-
providing a plurality of class paths; and generating code to implement one or more calls that are present in a first of said plurality of class paths, but not in a second of said plurality of class paths, said generated code being adapted to duplicate at least one interface associated with said one or more calls. - View Dependent Claims (32)
-
-
33. For use in a content based network, a software architecture adapted to determine the application programming interface (API) requirements for applications used in said network, the architecture comprising:
-
a first software component disposed on a first computer; a second software component disposed on a second computer and in data communication with said first computer; and wherein said second component is adapted to receive a computer program to be evaluated from said first component, and evaluate said computer program to determine at least API usage therein, and provide a report comprising said usage to said first component. - View Dependent Claims (34, 35, 36, 37)
-
-
38. A method of doing business, comprising:
-
receiving a request for software interface support specifications associated with a network; generating a report comprising said interface support specifications; and providing said report to an entity issuing said request, said report being useful in developing at least one new application adapted to operate within said network. - View Dependent Claims (39, 40)
-
-
41. A method of software processing, comprising:
-
providing a computer program application adapted for use on one or more network devices; determining those network devices on which the application is to be used; analyzing said application to identify API usage associated therewith; and providing said application to selective ones of said determined network devices; wherein said act of providing to selected ones is based at least in part on results obtained from said act of analyzing. - View Dependent Claims (42, 43, 44)
-
-
45. A method of identifying and correcting incompatibilities or discrepancies within an application program, comprising:
-
analyzing said application for application interface usage; identifying within said application one or more function calls against interfaces that are either prohibited or that do not exist; and providing at least placeholder code for said interfaces. - View Dependent Claims (46)
-
Specification