Detection Method, Device and Electronic Device of a Program Library

By obtaining and comparing the bytecode of the third-party library, determining public information and detecting compatibility in the target library, the problem of low compatibility efficiency in the existing technology is solved, and more efficient compatibility judgment is achieved.

CN115185849BActive Publication Date: 2025-06-17HILLSTONE NETWORKS CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202210857535.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-07-20
Publication Date
2025-06-17
Estimated Expiration
2042-07-20

AI Technical Summary

Technical Problem

The existing technology has low detection efficiency when detecting the compatibility of third-party libraries, and cannot effectively predict whether there will be compatibility problems between third-party libraries.

Method used

By obtaining the bytecodes of the first source library and the second source library, the common information is determined, and whether the target public information exists in the target library, and then determining whether the target library and the second source library are compatible.

Benefits of technology

Improves detection efficiency, narrows the scope of compatibility inspection, accurately determines the specific causes of incompatibility problems, and avoids inefficiency caused by comprehensive testing and source code compilation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115185849B_ABST
    Figure CN115185849B_ABST
Patent Text Reader

Abstract

The present invention discloses a method, apparatus, and electronic device for detecting a program library. It relates to the field of data processing. The method includes: obtaining first bytecode corresponding to a first source library and second bytecode corresponding to a second source library, where the second source library is an updated version of the first source library; determining common information based on the first bytecode and the second bytecode, where the common information represents information that allows all objects to access, and the common information is at least used to represent the information that has changed in the first source library; detecting whether target common information exists in a target library to obtain a detection result, where the target common information is at least part of the common information, and the target library, the first source library, and the second source library are all third-party libraries referenced by a target application, and the target library has an association relationship with the first source library; determining whether the target library is compatible with the second source library based on the detection result. The present invention solves the technical problem of low detection efficiency in the prior art during the process of detecting the compatibility of third-party libraries.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of data processing, and in particular, to a method, device, and electronic device for detecting a program library. Background Art

[0002] With the continuous progress and development of technology, a rich ecosystem of programming languages (such as Java, etc.) has gradually formed, and a large number of tools and frameworks developed based on programming languages have emerged, greatly improving the development efficiency of enterprise-level applications.

[0003] In modern enterprise-level application development, it is inevitable to use third-party frameworks and tools. For example, the well-known Spring framework has become the de facto standard for Java application development, and the vast majority of enterprise applications will use it. Moreover, it will integrate with many other third-party libraries. During the iterative process of an application, due to security considerations or functional factors, it is inevitable to change the versions of third-party libraries or third-party frameworks. For example, if there is a security vulnerability in a certain third-party library, it may be necessary to upgrade the library to a new version at this time.

[0004] In fact, there are dependencies between many third-party libraries. Suppose two third-party libraries are used in an application, and the first third-party library depends on the second third-party library. At this time, if the version of the second third-party library is modified, there may be a problem of incompatibility between the two third-party libraries. Although most of the time they are compatible, once incompatibility occurs, it may cause problems during the operation of the application. Unfortunately, third-party libraries are a black box for users, and users cannot predict whether there will be incompatibility between third-party libraries and when incompatibility will occur. Therefore, it is necessary to detect the compatibility between third-party libraries after modification. However, in the prior art, the related methods have the problem of low detection efficiency in the process of detecting the compatibility of third-party libraries.

[0005] In view of the above problems, no effective solution has been proposed yet. Summary of the Invention

[0006] Embodiments of the present invention provide a method, device, and electronic device for detecting a program library, so as to at least solve the technical problem of low detection efficiency in the process of detecting the compatibility of third-party libraries in the prior art.

[0007] According to one aspect of an embodiment of the present invention, a method for detecting a program library is provided, including: obtaining first bytecode corresponding to a first source library and second bytecode corresponding to a second source library, where the second source library is an updated first source library; determining common information based on the first bytecode and the second bytecode, where the common information represents information that allows all objects to access, and the common information is at least used to represent information that has changed in the first source library; detecting whether target common information exists in a target library to obtain a detection result, where the target common information is at least part of the common information, and the target library, the first source library, and the second source library are all third-party libraries referenced by a target application, and the target library has an association relationship with the first source library; determining whether the target library is compatible with the second source library based on the detection result.

[0008] Further, the method for detecting a program library further includes: parsing the first bytecode to obtain a first parsing result; parsing the second bytecode to obtain a second parsing result; determining common information based on the first parsing result and the second parsing result.

[0009] Further, the method for detecting a program library further includes at least one of the following: comparing the common class information in the first parsing result with the common class information in the second parsing result to determine the common information; comparing the common field information of the first parsing result with the common field information in the second parsing result to determine the common information; comparing the common method information of the first parsing result with the common method information in the second parsing result to determine the common information; comparing the superclass information of the first parsing result with the superclass information in the second parsing result to determine the common information; comparing the interface information of the first parsing result with the interface information in the second parsing result to determine the common information.

[0010] Further, the method for detecting a program library further includes: comparing the common class information in the first parsing result with the common class information in the second parsing result. If the comparison result indicates that the target common class does not exist in the second parsing result, or the first access identifier is updated in the second parsing result, then determine the identifier corresponding to the target common class as the common information, where the target common class is at least one of all the common classes in the first parsing result, and the first access identifier is used to represent the access permission of an object to the target common class.

[0011] Further, the detection method of the library further includes: comparing the common field information in the first parsing result with the common field information in the second parsing result, and when the comparison result meets at least one of the following conditions, determining the identifier of the target common class corresponding to the target common field, the identifier corresponding to the target common field, and the data type as common information: there is no target common field in the second parsing result, where the target common field is at least one common field among all the common fields in the target common class corresponding to the target common field; the second access identifier is updated in the second parsing result, where the second access identifier is used to represent the access permission of the object to the target common field; the data type corresponding to the target common field is updated in the second parsing result.

[0012] Further, the detection method of the library further includes: comparing the common method information in the first parsing result with the common method information in the second parsing result, and when the comparison result meets at least one of the following conditions, determining the identifier of the target common class corresponding to the target common method, the identifier corresponding to the target common method, and the method signature as common information: there is no target common method in the second parsing result, where the target common method is at least one common method among all the common methods in the target common class corresponding to the target common method; the third access identifier is updated in the second parsing result, where the third access identifier is used to represent the access permission of the object to the target common method; the method signature corresponding to the target common method is updated in the second parsing result.

[0013] Further, the detection method of the library further includes: comparing the superclass information in the first parsing result with the superclass information in the second parsing result, and determining whether there is a target superclass in the second parsing result, where the target superclass is at least one superclass in the target superclass list, and the target superclass list includes the superclass of the current target common class and the superclasses having an association relationship with the superclass of the current target common class; if there is no target superclass in the second parsing result, then determining the identifier of the current target common class and the identifier corresponding to the target superclass as common information.

[0014] Further, the detection method of the library further includes: comparing the interface information in the first parsing result with the interface information in the second parsing result, and determining whether there is a target interface in the second parsing result, where the target interface is at least one interface in the target interface list, and the target interface list includes the interfaces of the current target common class and the interfaces having an association relationship with the interfaces of the current target common class; if there is no target interface in the second parsing result, then determining the identifier of the current target common class and the identifier corresponding to the target interface as common information.

[0015] Further, the method for detecting a program library further includes: when it is detected that target common information exists in the target library, determining that the target library is not compatible with the second source library; when it is detected that the target common information does not exist in the target library, determining that the target library is compatible with the second source library.

[0016] Further, the method for detecting a program library further includes: if it is determined based on the first bytecode and the second bytecode that no common information exists in the source library, determining that the target library is compatible with the second source library.

[0017] According to another aspect of the embodiments of the present invention, there is also provided a device for detecting a program library, including an acquisition module configured to acquire the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library, where the second source library is the updated first source library; a first determination module configured to determine common information based on the first bytecode and the second bytecode, where the common information represents information that allows all objects to access, and the common information is at least used to represent the information that has changed in the first source library; a detection module configured to detect whether target common information exists in the target library to obtain a detection result, where the target common information is at least part of the common information, and the target library, the first source library, and the second source library are all third-party libraries referenced by the target application, and the target library has an association relationship with the first source library; a second determination module configured to determine whether the target library is compatible with the second source library based on the detection result.

[0018] According to another aspect of the embodiments of the present invention, there is also provided a computer-readable storage medium storing a computer program, where the computer program is configured to execute the above-mentioned method for detecting a program library when running.

[0019] According to another aspect of the embodiments of the present invention, there is also provided an electronic device including one or more processors; a memory configured to store one or more programs, and when the one or more programs are executed by the one or more processors, enabling the one or more processors to implement a program for running, where the program is configured to execute the above-mentioned method for detecting a program library when running.

[0020] In an embodiment of the present invention, a method is adopted to determine the compatibility between a target library and an updated first source library by detecting whether information that has changed in the first source library exists in the target library. By obtaining the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library, then based on the first bytecode and the second bytecode, common information is determined. Next, it is detected whether target common information exists in the target library to obtain a detection result, and thus based on the detection result, it is determined whether the target library is compatible with the second source library. Herein, the second source library is the updated first source library, the common information represents information that allows all objects to access, the common information is at least used to represent the information that has changed in the first source library, the target common information is at least part of the common information, the target library, the first source library, and the second source library are all third-party libraries referenced by a target application, and the target library has an association relationship with the first source library.

[0021] In the above process, by determining the common information, the information that has changed in the first source library during the update process is determined. On the one hand, it can narrow the scope of compatibility inspection and avoid redundant inspections. On the other hand, it is convenient to determine the specific reasons for the incompatibility problem, thereby facilitating the improvement of detection efficiency. Further, by detecting whether target common information exists in the target library and determining the compatibility between the target library and the updated first source library based on the detection result, it avoids the low efficiency caused by comprehensively testing the existing functions for compatibility judgment after the version of the first source library is updated, and also avoids problems such as dependence on environment configuration caused by modifying the version of the first source library in the target library source code to the updated version and then compiling the target library source code and determining the compatibility problem based on the compilation result, thereby further improving the detection efficiency.

[0022] It can be seen that the solution provided by the present application achieves the purpose of determining the compatibility between the target library and the updated first source library by detecting whether information that has changed in the first source library exists in the target library, thereby achieving the technical effect of improving the detection efficiency, and further solving the technical problem of low detection efficiency in the process of detecting the compatibility of third-party libraries in the prior art. BRIEF DESCRIPTION OF THE DRAWINGS

[0023] The drawings described herein are used to provide a further understanding of the present invention, and constitute a part of this application. The schematic embodiments of the present invention and their descriptions are used to explain the present invention and do not constitute an improper limitation to the present invention. In the drawings:

[0024] Figure 1 is a schematic diagram of an optional method for detecting a program library according to an embodiment of the present invention;

[0025] Figure 2 is a schematic diagram of an optional device for detecting a program library according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE EMBODIMENTS

[0026] In order to enable those skilled in the art to better understand the solution of the present invention, the technical solutions in the embodiments of the present invention will be clearly and completely described below in conjunction with the accompanying drawings in the embodiments of the present invention. Obviously, the described embodiments are only a part of the embodiments of the present invention, rather than all the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those of ordinary skill in the art without making creative efforts shall fall within the protection scope of the present invention.

[0027] It should be noted that the terms "first", "second", etc. in the description and claims of the present invention and the above-mentioned drawings are used to distinguish similar objects, and do not necessarily need to be used to describe a specific order or sequence. It should be understood that the data used in this way can be interchanged under appropriate circumstances, so that the embodiments of the present invention described here can be implemented in an order different from those illustrated or described here. In addition, the terms "including" and "having" and any variations thereof are intended to cover non-exclusive inclusion. For example, a process, method, system, product or device including a series of steps or units does not necessarily have to be limited to those steps or units clearly listed, but may include other steps or units not clearly listed or inherent to these processes, methods, products or devices.

[0028] Embodiment 1

[0029] According to an embodiment of the present invention, an embodiment of a method for detecting a program library is provided. It should be noted that the steps shown in the flowchart of the accompanying drawings can be executed in a computer system such as a set of computer-executable instructions, and although the logical order is shown in the flowchart, in some cases, the steps shown or described can be executed in an order different from that here.

[0030] Figure 1 is a schematic diagram of an optional method for detecting a program library according to an embodiment of the present invention, as Figure 1 shown, the method includes the following steps:

[0031] Step S102, obtain the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library, where the second source library is the updated first source library.

[0032] In step S102, the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library can be obtained through devices such as electronic devices, servers, and application systems. In the present application, the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library are obtained through a program library detection system.

[0033] Optionally, the library detection system may determine the third-party libraries referenced by the current application (i.e., the target application), and determine the third-party libraries that have been updated from all the third-party libraries referenced by the current application. Thus, the version of the third-party library before the update is used as the first source library, the version of the third-party library after the update is used as the second source library, and multiple bytecode files corresponding to the first source library (i.e., the first bytecode) and multiple bytecode files corresponding to the second source library (i.e., the second bytecode) are obtained from a preset storage area. Among them, the target application is an application developed based on a programming language. In this application, the target application may be an application developed based on the Java language, and the libraries mentioned in this application may all be Java program libraries.

[0034] Optionally, the foregoing bytecode is explained. Specifically, all Java programs run in a Java virtual machine, and the Java virtual machine can run a program by parsing the bytecode compiled by the Java language. The structure of Java bytecode has a unified standard, which is defined in the Java virtual machine specification. The overall structure is shown in Table 1:

[0035] Table 1 - Java Bytecode Structure Standard

[0036]

[0037]

[0038] For example, there is the following Java code:

[0039]

[0040] It can be compiled into the following bytecode by a compiler:

[0041] ca fe ba be 00 00 00 34 00 13 0a 00 03 00 10 0700 11 07 00 12 01 0001 61 01 00 01 49 01 00 063c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 436f64 65 01 00 0f 4c 69 6e 65 4e 75 6d 62 65 7254 61 62 6c 65 01 00 12 4c 6f 6361 6c 56 61 7269 61 62 6c 65 54 61 62 6c 65 01 00 04 74 68 6973 01 00 0d 4c68 65 6c 6c 6f 2f 48 65 6c 6c 6f3b 01 00 02 68 69 01 00 0a 53 6f 75 72 63 654669 6c 65 01 00 0a 48 65 6c 6c 6f 2e 6a 61 76 610c 00 06 00 07 01 00 0b 6865 6c 6c 6f 2f 48 656c 6c 6f 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f4f 62 6a65 63 74 00 21 00 02 00 03 00 00 00 0100 02 00 04 00 05 00 00 00 02 00 01 0006 00 0700 01 00 08 00 00 00 2f 00 01 00 01 00 00 00 052a b7 00 01b1 00 00 0002 00 09 00 00 00 06 0001 00 00 00 03 00 0a 00 00 00 0c 00 01 00 00 0005 000b 00 0c 00 00 00 01 00 0d 00 07 00 01 0008 00 00 00 2b 00 00 00 01 00 00 0001 b1 00 0000 02 00 09 00 00 00 06 00 01 00 00 00 07 00 0a00 00 00 0c 00 0100 00 00 01 00 0b 00 0c 00 0000 01 00 0e 00 00 00 02 00 0f

[0042] The compiled bytecode is used to form a program library, which facilitates the operation of the program library in the Java virtual machine.

[0043] Step S104: Based on the first bytecode and the second bytecode, determine public information, where the public information represents information that allows all objects to access, and the public information is at least used to represent the information that has changed in the first source library.

[0044] In step S104, the program library detection system can directly determine the public information based on the first bytecode and the second bytecode, or can first parse the first bytecode and the second bytecode through relevant bytecode parsing tools, and then compare the parsed results to determine the public information, so as to improve the determination efficiency.

[0045] Among them, the public information represents information that allows all objects to access, that is, the information modified by the public modifier in the bytecode. The object is used to represent a class and the members of the class (member variables, methods, constructors, etc.). In the program library, there are multiple classes, and each class includes multiple methods and fields. Therefore, the information type of the foregoing information can be a class, a method, a field, etc.

[0046] Furthermore, in this application, the public information is at least used to represent the information that has changed in the first source library. For example, it can be the identifier of the information that has changed in the first source library, etc. The public information can also be used to represent the relevant information of the information that has changed in the first source library. For example, when a method in a certain bytecode file in the first source library has changed, not only can the identifier of the method be determined as public information, but also the method signature of the method and the identifier of the class to which the method belongs can be determined as public information.

[0047] Still further, the program library detection system can screen the changed information based on a preset rule, and determine the public information only based on the information corresponding to the change situation that will cause compatibility problems.

[0048] It should be noted that by determining the public information, the determination of the information that has changed in the first source library during the update process is realized. On the one hand, it can narrow the scope of compatibility inspection and avoid redundant inspections. On the other hand, it is convenient to determine the specific reasons for the occurrence of incompatibility problems.

[0049] Step S106: Detect whether there is target public information in the target library to obtain a detection result, where the target public information is at least part of the public information, and the target library, the first source library, and the second source library are all third-party libraries referenced by the target application, and the target library has an association relationship with the first source library.

[0050] In step S106, the target library is also the third-party library referenced by the aforementioned current application, and the target library depends on the first source library, that is, there is an association relationship between the target library and the first source library. Therefore, the library detection system can detect whether at least some of the aforementioned determined common information exists in the target library. Optionally, the detection result can only be used to represent "yes / no", or in the case of "yes", represent the specific content of the target common information.

[0051] Step S108, based on the detection result, determine whether the target library is compatible with the second source library.

[0052] In step S108, if the library detection system determines based on the detection result that at least some of the aforementioned determined common information exists in the target library, it means that at least some of the content in the first source library originally referenced by the target library has changed, which will cause compatibility problems. On the contrary, if the library detection system determines based on the detection result that none of the aforementioned determined common information exists in the target library, it means that the content in the first source library originally referenced by the target library has not changed, thus ensuring that compatibility problems will not occur.

[0053] It should be noted that by judging the compatibility between the target library and the second source library based on the detection result, it avoids the low efficiency caused by comprehensively testing the existing functions for compatibility judgment after the version update of the first source library, and also avoids the problems such as depending on the environment configuration (such as: maven, gradle), or being affected by other compilation failure factors (such as: compilation failure due to differences in Java versions), or it is difficult to find the location of the incompatibility problem (such as: once the incompatibility is found, the compilation cannot continue and multiple problems cannot be found) after modifying the version of the first source library in the target library source code to the updated version and then compiling the target library source code and determining the compatibility problem based on the compilation result. Therefore, the detection efficiency and the number of detectable problems are improved.

[0054] Based on the solution defined in the above steps S102 to S108, it can be known that in the embodiment of the present invention, by detecting whether there is information that has changed in the first source library in the target library to determine the compatibility between the target library and the updated first source library. By obtaining the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library, and then based on the first bytecode and the second bytecode, determining the common information, and then detecting whether there is target common information in the target library to obtain a detection result, so as to determine whether the target library is compatible with the second source library based on the detection result. Wherein, the second source library is the updated first source library, the common information represents information that allows all objects to access, the common information is at least used to represent the information that has changed in the first source library, the target common information is at least part of the common information, and the target library, the first source library, and the second source library are all third-party libraries referenced by the target application, and the target library has an association relationship with the first source library.

[0055] It is easy to notice that in the above process, by determining the common information, the information that has changed in the first source library during the update process is determined. On the one hand, it can narrow the scope of compatibility check and avoid redundant checks. On the other hand, it is convenient to determine the specific reasons for the incompatibility problem, thus facilitating the improvement of detection efficiency. Further, by detecting whether there is target common information in the target library and determining the compatibility between the target library and the updated first source library based on the detection result, it avoids the low efficiency caused by comprehensively testing the existing functions for compatibility judgment after the version update of the first source library, and also avoids the problems such as relying on environment configuration caused by modifying the version of the first source library in the target library source code to the updated version and then compiling the target library source code and determining the compatibility problem based on the compilation result, thereby further improving the detection efficiency.

[0056] It can be seen that the solution provided by this application achieves the purpose of determining the compatibility between the target library and the updated first source library by detecting whether there is information that has changed in the first source library in the target library, thus achieving the technical effect of improving the detection efficiency, and further solving the technical problem of low detection efficiency in the process of detecting the compatibility of third-party libraries in the prior art.

[0057] In an alternative embodiment, the program library detection system can perform parsing processing on the first bytecode and the second bytecode to determine the common information. Specifically, the program library detection system can parse the first bytecode to obtain a first parsing result, parse the second bytecode to obtain a second parsing result, and determine the common information based on the first parsing result and the second parsing result. Among them, the program library detection system can parse the bytecode through the java bytecode parsing tool javap to obtain the corresponding first parsing result and second parsing result.

[0058] It should be noted that by parsing the bytecode, the content corresponding to the programs in the program library becomes more intuitive, thereby effectively improving the work efficiency in the process of determining the common information.

[0059] In an optional embodiment, at least one of the information such as common classes, common fields, common methods, superclasses, and interfaces in the first source library may be detected to determine the common information. Specifically, the program library detection system may compare the common class information in the first parsing result with the common class information in the second parsing result to determine the common information, and / or compare the common field information in the first parsing result with the common field information in the second parsing result to determine the common information, and / or compare the common method information in the first parsing result with the common method information in the second parsing result to determine the common information, and / or compare the superclass information in the first parsing result with the superclass information in the second parsing result to determine the common information, and / or compare the interface information in the first parsing result with the interface information in the second parsing result to determine the common information.

[0060] Optionally, in the bytecode file, there are specific representation rules for the data types and methods corresponding to the fields. Therefore, first, the representation rules of the aforementioned fields and methods in the bytecode will be described.

[0061] Among them, the representation rules for the data types corresponding to the fields are shown in Table 2:

[0062] Table 2 - Representation Rules for the Data Types of Fields

[0063]

[0064]

[0065] Among them, a method is represented as a method name and a method signature. The method name is the name of the method written in the code. For example, in the example of the aforementioned parsing result, there is a method named hi in Hello. Additionally, there may be two special method names: <init>Represents the constructor method of a class, <clinit>Represents the static code block of a class. And the method signature has a fixed representation: (parameter type list) return value type. In the above example, the signature of the hi method is represented as ()V, indicating that this method does not receive parameters and the return value type is void. Another example is (Ljava / lang / String;)I, and this method signature indicates that it accepts a parameter of type String and the return value type is int.

[0066] Furthermore, since some specific situations during the iteration of the source library are the root causes of compatibility issues, therefore, finding these specific situations can minimize the scope of inspection when detecting its compatibility with other libraries and avoid unnecessary inspections. Specifically, these specific situations can be:

[0067] 1. A certain public class is deleted in the second source library;

[0068] 2. The access identifier of a certain public class is modified in the second source library;

[0069] 3. The public field of a certain public class is deleted in the second source library;

[0070] 4. The access identifier of the public field of a certain public class is modified in the second source library;

[0071] 5. The type of the public field of a certain public class is modified in the second source library;

[0072] 6. A certain public method of a certain public class is deleted in the second source library;

[0073] 7. The access identifier of a certain public method of a certain public class is changed in the second source library;

[0074] 8. The method signature of a certain public method of a certain public class is changed in the second source library;

[0075] 9. The public superclass inherited by a certain public class is changed in the second source library;

[0076] 10. The interface implemented by a certain public class is changed in the second source library.

[0077] Therefore, the program library detection system can compare the public class information, public method information, public field information, superclass information, and interface information in the first parsing result and the second parsing result to determine the aforementioned public information. In addition, after determining the public information, the program library detection system can record the aforementioned public information based on a preset table for subsequent inspections. Optionally, based on different information types (i.e., class, field, method, superclass, interface), the program library detection system can define different preset tables, thereby further facilitating subsequent inspections.

[0078] Specifically, the library detection system can define at least one of the following tables according to the method of determining common information: class incompatibility table, field incompatibility table, method incompatibility table, superclass incompatibility table, and interface incompatibility table. Among them, the class incompatibility table can be used to indicate that once the target library uses the classes in this table, incompatibility problems will definitely occur; the field incompatibility table can be used to indicate that once the target library uses the fields in this table, incompatibility problems will definitely occur; the method incompatibility table can be used to indicate that once the target library uses the methods in this table, incompatibility problems will definitely occur; the superclass incompatibility table can be used to indicate that in the same class in the target library, if the classes in this table and their corresponding superclasses are used at the same time, incompatibility problems may occur; the interface incompatibility table can be used to indicate that in the same class in the target library, if the classes in this table and their corresponding interfaces are used at the same time, incompatibility problems may occur.

[0079] It should be noted that by comparing at least one of the common class information, common field information, common method information, superclass information, and interface information in the two parsing results, the effective reduction of the detection range is achieved, and the problem of low detection efficiency caused by comparing useless information is avoided.

[0080] In an alternative embodiment, in the process of comparing the common class information in the first parsing result and the common class information in the second parsing result to determine the common information, the library detection system can compare the common class information in the first parsing result and the common class information in the second parsing result. If the comparison result indicates that there is no target common class in the second parsing result, or the first access identifier is updated in the second parsing result, the identifier corresponding to the target common class is determined as the common information, where the target common class is at least one of all the common classes in the first parsing result, and the first access identifier is used to represent the access permission of the object to the target common class.

[0081] Optionally, in a library, each class in the library corresponds to a bytecode file, and the file name of the bytecode file has a corresponding relationship with the class name of the class. Therefore, the library detection system can check whether there is a corresponding bytecode file with the same name in the same path in the second source library based on the bytecode file corresponding to each public class (i.e., the aforementioned target public class) in the first source library, or determine whether there is a corresponding fully qualified class name in the same path in the second parsing result based on the fully qualified class name in the first parsing result corresponding to the first source library. If not found, it is determined that the above-mentioned specific situation 1 has occurred, that is, a certain public class has been deleted from the second source library. Otherwise, it is determined that the above-mentioned specific situation 1 has not occurred. At the same time, the library detection system can also scan the access identifiers (i.e., the aforementioned first access identifiers) corresponding to the classes in the parsing results of the same public classes in the first source library and the second source library. If the access identifier corresponding to a certain public class in the second source library indicates that the public class is no longer public, it is determined that the above-mentioned specific situation 2 has occurred, that is, the access identifier of a certain public class in the second source library has been modified. Otherwise, it is determined that the above-mentioned specific situation 2 has not occurred. Among them, the access identifier can be used to determine whether the information corresponding to it allows all objects to access.

[0082] Furthermore, in the case where it is determined that the above-mentioned specific situation 1 has occurred, the library detection system can determine that the fully qualified class name of the aforementioned deleted public class in the first source library (i.e., the identifier of the target public class) is public information. In the case where it is determined that the above-mentioned specific situation 2 has occurred, the library detection system can determine that the fully qualified class name of the public class corresponding to the modified access identifier (i.e., the identifier of the target public class) is public information.

[0083] Still further, the library detection system can record the aforementioned public information in the class incompatibility table.

[0084] It should be noted that by determining whether the target public class is deleted or its access identifier is changed to determine the public information, an effective search and record of the accurate cause of the compatibility problem related to the class are achieved.

[0085] In an alternative embodiment, during the process of comparing the common field information in the first parsing result and the common field information in the second parsing result to determine the common information, the library detection system can compare the common field information in the first parsing result and the common field information in the second parsing result. When the comparison result meets at least one of the following conditions, the identifier of the target common class corresponding to the target common field, the identifier corresponding to the target common field, and the data type are determined as the common information: the target common field does not exist in the second parsing result; the second access identifier is updated in the second parsing result; the data type corresponding to the target common field is updated in the second parsing result. Herein, the target common field is at least one of all the common fields in the target common class corresponding to the target common field, and the second access identifier is used to represent the access permission of the object to the target common field.

[0086] Optionally, the library detection system can scan the content corresponding to the field table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library. If it is determined based on the parsing results that a certain common field (i.e., the aforementioned target common field) in the same common class only appears in the field table of the bytecode file in the first source library, it is determined that the above-mentioned specific situation 3 has occurred, that is, the common field of a certain common class has been deleted in the second source library. Conversely, it is determined that the above-mentioned specific situation 3 has not occurred. The library detection system can also scan the content corresponding to the field table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library. If the access identifier (i.e., the aforementioned second access identifier) corresponding to a certain common field in the first source library indicates that the common field is no longer public in the second source library, it is determined that the above-mentioned specific situation 4 has occurred, that is, the access identifier of the common field of a certain common class has been modified in the second source library. Conversely, it is determined that the above-mentioned specific situation 4 has not occurred. The library detection system can further scan the content corresponding to the field table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library. If a certain common field appears in both field tables, but the descriptions of the corresponding data types are different, it is determined that the above-mentioned specific situation 5 has occurred, that is, the data type of the common field of a certain common class has been modified in the second source library. Conversely, it is determined that the above-mentioned specific situation 5 has not occurred.

[0087] Furthermore, in the case where it is determined that the above-mentioned specific situation 3, or specific situation 4, or specific situation 5 has occurred, the library detection system can determine the fully qualified class name of the class to which the field in the first source library where each specific situation occurs belongs (i.e., the identifier of the target common class corresponding to the target common field), the field name of the field where each specific situation occurs (i.e., the identifier corresponding to the aforementioned target common field), and the corresponding data type as the common information.

[0088] Still further, the library detection system can record the aforementioned common information into the field incompatibility table.

[0089] It should be noted that by determining whether the target common field is deleted, or whether its access identifier is changed, or whether its data type is changed to determine the common information, an effective search and record of the accurate reasons for compatibility problems caused by fields are realized.

[0090] In an optional embodiment, in the process of comparing the common method information in the first parsing result and the common method information in the second parsing result to determine the common information, the library detection system can compare the common method information in the first parsing result and the common method information in the second parsing result. When the comparison result meets at least one of the following conditions, the identifier of the target common class corresponding to the target common method, the identifier corresponding to the target common method, and the method signature are determined as the common information: the target common method does not exist in the second parsing result; the third access identifier is updated in the second parsing result; the method signature corresponding to the target common method is updated in the second parsing result. Wherein, the target common method is at least one of all the common methods in the target common class corresponding to the target common method, and the third access identifier is used to represent the access permission of the object to the target common method.

[0091] Optionally, the library detection system can scan the content corresponding to the method table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library, and determine the method name and method signature of each common method (the method signature includes the return value type and the parameter type). If it is determined based on the parsing result that the method signature of a certain common method only appears in the method table of the first source library, it is determined that the above-mentioned specific situation 6 has occurred, that is, a certain common method of a certain common class has been deleted in the second source library, or the above-mentioned specific situation 8 has occurred, that is, the method signature of a certain common method of a certain common class has been changed in the second source library. On the contrary, it is determined that the above-mentioned specific situation 6 and specific situation 8 have not occurred. The library detection system can also scan the content corresponding to the method table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library, and determine the method name, method signature (the method signature includes the return value type and the parameter type), and access identifier of each common method. If the method signature of a certain common method appears in the method tables of both the first source library and the second source library, but the access identifier of this common method (that is, the aforementioned third access identifier) in the second source library indicates that this common method is no longer public, it is determined that the above-mentioned specific situation 7 has occurred, that is, the access identifier of a certain common method of a certain common class has been changed in the second source library. On the contrary, it is determined that the above-mentioned specific situation 7 has not occurred.

[0092] Further, in the case where the above-mentioned specific situation 6, or specific situation 7, or specific situation 8 is determined to have occurred, the library detection system can determine the fully qualified class name of the class to which the method for each specific situation occurred in the first source library (i.e., the identifier of the target common class corresponding to the target common method), the method name of the method for each specific situation occurred (i.e., the identifier corresponding to the foregoing target common method), and the corresponding method signature as common information.

[0093] Furthermore, the library detection system can record the foregoing common information into the method incompatibility table.

[0094] It should be noted that by determining whether the target common method is deleted, or whether its access identifier is changed, or whether its method signature is changed to determine the common information, an effective search and record of the accurate cause of the compatibility problem caused by the method are achieved.

[0095] In an alternative embodiment, in the process of comparing the superclass information in the first parsing result and the superclass information in the second parsing result to determine the common information, the library detection system can compare the superclass information in the first parsing result and the superclass information in the second parsing result to determine whether there is a target superclass in the second parsing result. If there is no target superclass in the second parsing result, the identifier of the current target common class and the identifier corresponding to the target superclass are determined as common information. Wherein, the target superclass is at least one superclass in the target superclass list, and the target superclass list includes the superclass of the current target common class and the superclass having an associated relationship with the superclass of the current target common class.

[0096] Optionally, the method for determining the superclass list is described first. The library detection system can determine the superclass of a certain common class (i.e., the foregoing current target common class) in the first source library through the superclass name in the parsing result corresponding to the bytecode file of the common class. After that, the library detection system can find the superclass name corresponding to the superclass based on the parsing result of the bytecode file corresponding to the superclass, and continuously search from bottom to top in this way until the found class no longer has a superclass, so as to generate the superclass list corresponding to the current target common class based on the superclass names of all the "superclasses" found in the foregoing process. Wherein, the superclass having an associated relationship with the superclass of the current target common class can be the superclass having an inheritance relationship with the superclass of the current target common class.

[0097] Specifically, the library detection system can determine the list of parent classes corresponding to a certain common class in the first source library (i.e., the aforementioned target parent class list) and the list of parent classes corresponding to the same common class in the second source library through the foregoing method. After that, if it is detected that a certain common parent class (i.e., the parent class that allows all objects to access) in the list of parent classes corresponding to the common class in the first source library does not exist in the corresponding list of parent classes in the second source library, it is determined that the above-mentioned specific situation 9 has occurred, that is, the common parent class inherited by a certain common class in the second source library has changed. Conversely, it is determined that the above-mentioned specific situation 9 has not occurred.

[0098] Furthermore, in the case where it is determined that the above-mentioned specific situation 9 has occurred, the library detection system can determine the fully qualified class name of the common class corresponding to the target parent class list where the specific situation 9 occurs in the first source library (i.e., the identifier of the current target common class) and the name of the parent class of the parent class where the specific situation 9 occurs (i.e., the identifier of the aforementioned target parent class) as common information.

[0099] Still further, the library detection system can record the aforementioned common information into the parent class incompatibility table.

[0100] It should be noted that by determining whether the parent class is deleted from the list of parent classes to determine the common information, an effective search and record of the accurate cause of the compatibility problem regarding the parent class are achieved.

[0101] In an alternative embodiment, in the process of comparing the interface information in the first parsing result and the interface information in the second parsing result to determine the common information, the library detection system can compare the interface information in the first parsing result and the interface information in the second parsing result to determine whether there is a target interface in the second parsing result. If there is no target interface in the second parsing result, the identifier of the current target common class and the identifier corresponding to the target interface are determined as the common information. Among them, the target interface is at least one interface in the target interface list, and the target interface list includes the interfaces of the current target common class and the interfaces having an association relationship with the interfaces of the current target common class.

[0102] Optionally, the method for determining the interface list is described first. The library detection system can determine the interfaces implemented by a certain common class (i.e., the aforementioned current target common class) in the first source library through the interface names in the parsing result corresponding to the bytecode file of the common class. After that, the library detection system can find the bytecode file corresponding to the interface through the interface name, and then find all the parent interfaces corresponding to the interface based on the parsing result of the bytecode file corresponding to the interface, and continuously search from bottom to top in this way until the found interface no longer has a parent interface, so as to generate the interface list corresponding to the current target common class based on the interface names of all the interfaces found in the foregoing process and the interface names of the "parent interfaces".

[0103] Specifically, the library detection system can determine the interface list corresponding to a certain common class in the first source library (i.e., the aforementioned target interface list) and the interface list corresponding to the same common class in the second source library through the aforementioned method. After that, if it is detected that a certain common interface (i.e., an interface that allows all objects to access) in the interface list corresponding to the common class in the first source library does not exist in the corresponding interface list of the second source library, it is determined that the above-mentioned specific situation 10 has occurred, that is, an interface implemented by a certain common class in the second source library has changed. On the contrary, it is determined that the above-mentioned specific situation 10 has not occurred.

[0104] Further, in the case where it is determined that the above-mentioned specific situation 10 has occurred, the library detection system can determine the fully qualified class name of the common class corresponding to the target interface list where the specific situation 10 occurs in the first source library (i.e., the identifier of the current target common class) and the interface name (i.e., the identifier corresponding to the target interface) of the interface (or parent interface) where the specific situation 10 occurs as common information.

[0105] Still further, the library detection system can record the aforementioned common information into the interface incompatibility table.

[0106] It should be noted that by determining whether an interface is deleted from the interface list to determine the common information, an effective search and record of the accurate cause of the compatibility problem regarding the interface are realized.

[0107] In an alternative embodiment, if it is determined based on the first bytecode and the second bytecode that there is no common information in the source library, the library detection system can determine that the target library is compatible with the second source library.

[0108] Optionally, if in the aforementioned comparison process, the library detection system determines that none of the specific situations 1 - 10 occur, it indicates that the second source library is fully compatible with the first source library. In this case, regardless of whether the target library references the first source library or the second source library, it can be determined that there will be no compatibility problems. Therefore, there is no need to further detect the target library, which can further improve the detection efficiency. On the contrary, if any of the specific situations 1 - 10 occur, then based on the recorded common information, further detection can be performed on the target library, and based on the detection results, it can be determined whether the target library is compatible with the second source library.

[0109] In an alternative embodiment, in the process of determining whether the target library is compatible with the second source library based on the detection results, the library detection system can determine that the target library is not compatible with the second source library when it detects that the target common information exists in the target library, and determine that the target library is compatible with the second source library when it detects that the target common information does not exist in the target library.

[0110] Optionally, although the above lists 10 reasons for compatibility issues, and for two different versions of the source library, there may be many occasions where the above 10 specific situations occur. However, since compatibility issues only occur when classes, methods, or fields that appear in the above 10 specific situations in the source library are used in the target library, and compatibility issues do not occur in other cases. Therefore, in fact, the possibility of incompatibility between the target library and the source library is much smaller, and further detection can be performed based on the following methods to determine whether there are compatibility issues between the target library and the second source library.

[0111] Optionally, the library detection system can first obtain the bytecode file corresponding to the target library by decompressing the jar package. After that, since the fields and methods of another Java class referenced in a Java class can be reflected in the constant pool of that class, the library detection system can only parse the constant pool part in the bytecode file corresponding to the target library to obtain the third parsing result, so as to effectively improve the bytecode parsing efficiency, further improve the detection efficiency, and avoid compiling or parsing code that does not need to be checked.

[0112] For example, there are the following two classes: Class A and Class B. Among them, the code of Class A is as follows:

[0113] package target;

[0114] public class A{

[0115] private void methodA(B b){

[0116] System.out.println(b.c);

[0117] b.methodB();

[0118] }

[0119] }

[0120] The code of Class B is as follows:

[0121]

[0122] Among the parsing results obtained after parsing the bytecode of Class A, the first 10 table entries in the constant pool are as follows:

[0123]

[0124]

[0125] In the parsing result corresponding to the bytecode of Class A, it can be determined that the field c of Class B is at the position of the third constant. Among them, the part after the comment " / / " and before the comment ":" is the fully qualified class name of Class B and the field name of field c. For example, source / B is the fully qualified class name of the class to which field c belongs, c is the field name, and after ":" is the fully qualified class name of the data type of c, that is, Lsource / C. The method methodB of Class B is at the position of the fifth constant. The fully qualified class name of the class to which this method belongs is source / B, the method name is methodB, and the method signature is ()V, indicating that it does not accept parameters and has no return value.

[0126] Therefore, based on the above characteristics and public information, the following rules can be used to determine whether there is target public information in the target library. Among them, the class to be detected in the target library is simply referred to as the class to be detected:

[0127] 1. When the fully qualified class name of a certain class in the constant pool of the class to be detected matches an entry in the aforementioned class incompatibility table, it is determined that there is target public information in the target library, and it is determined that the class to be detected will have an incompatibility problem.

[0128] 2. When a certain field appears in the constant pool of the class to be detected, and any one of the matching fields of the fully qualified class name of the class to which the field belongs, the field name, and the data type of the field does not match the fully qualified class name, the field name, and the data type of a certain field in the field incompatibility table, it is determined that there is target public information in the target library, and it is determined that the field will have an incompatibility problem.

[0129] 3. When a certain method appears in the constant pool of the class to be detected, and any one of the fully qualified class name of the class to which the method belongs, the method name, and the method signature matches the fully qualified class name, the method name, and the method signature of a certain method in the method incompatibility table, it is determined that there is target public information in the target library, and it is determined that the method will have an incompatibility problem.

[0130] 4. When two fully qualified class names appear in the constant pool of the class to be detected, which respectively match the fully qualified class name of an entry in the parent class incompatibility table and the fully qualified class name of the parent class, it is determined that there is target public information in the target library, and it is determined that the class to be detected will have an incompatibility problem.

[0131] 5. When two names appear in the constant pool of the class to be detected, which respectively match the fully qualified class name of an entry in the interface incompatibility table and the interface name of the interface, it is determined that there is target public information in the target library, and it is determined that the class to be detected will have an incompatibility problem.

[0132] Specifically, taking the code corresponding to the aforementioned Class A and Class B as an example, the detection method of the program library of the present application is illustrated.

[0133] Optionally, it is determined that class B is a class in the first source library, class A is a class in the target library, and class A references class B. The content regarding a certain method in the parsing result corresponding to class B is as follows:

[0134]

[0135] Among them, the method name is methodB and the signature is ()V. Further, if class B is also updated in version after the first source library is updated and the parameters of methodB change, the relevant code of class B in the second source library can be as follows:

[0136]

[0137] Correspondingly, the information of methodB in the parsing result corresponding to class B in the second source library will also change, as follows:

[0138]

[0139]

[0140] Among them, the method signature of methodB changes from the old version of ()V to the new version of (I)V. This scenario conforms to the aforementioned specific case 5. Therefore, the fully qualified class name source / B of the class to which methodB in the first source library belongs, the method name methodB, and the method signature ()V can be added to the method incompatibility table. And there will be a record in the method incompatibility table as shown in Table 3:

[0141] Table 3 - Method Incompatibility Table

[0142] Full class name Method name Method signature source / B methodB ()V

[0143] Further, compatibility issue detection can be performed on class A that references class B. Specifically, by parsing the constant pool in the bytecode corresponding to class A, the parsing result corresponding to class A shown above can be obtained, so as to determine that the 5th constant in the constant pool exactly matches the above record. Therefore, after class B is updated to the new version, the library corresponding to class A and the library corresponding to the updated class B will have an incompatibility problem.

[0144] It should be noted that by determining whether the target library is compatible with the second source library based on the existence of target common information in the target library, the compilation of the target library is avoided, thereby improving the detection efficiency.

[0145] It can be seen that the solution provided by this application achieves the purpose of determining the compatibility between the target library and the updated first source library by detecting whether there is information that has changed in the first source library in the target library, thereby achieving the technical effect of improving the detection efficiency, and further solving the technical problem of low detection efficiency in the process of detecting the compatibility of third-party libraries in the prior art.

[0146] Embodiment 2

[0147] According to an embodiment of the present invention, an embodiment of a detection device for a program library is provided, wherein, Figure 2 is a schematic diagram of an optional detection device for a program library according to an embodiment of the present invention, as Figure 2 shown, the device includes:

[0148] An acquisition module 202, configured to acquire a first bytecode corresponding to a first source library and a second bytecode corresponding to a second source library, wherein the second source library is the updated first source library.

[0149] Optionally, the acquisition module 202 may be configured to determine third-party libraries referenced by the current application (i.e., the target application), and determine the third-party libraries that have been updated from all the third-party libraries referenced by the current application, so as to use the version before the update of the third-party library as the first source library, use the version after the update of the third-party library as the second source library, and acquire multiple bytecode files (i.e., the first bytecode) corresponding to the first source library and multiple bytecode files (i.e., the second bytecode) corresponding to the second source library from a preset storage area. Wherein, the target application is an application developed based on a programming language. In this application, the target application may be an application developed based on the Java language, and the libraries mentioned in this application may all be Java program libraries.

[0150] A first determination module 204, configured to determine common information based on the first bytecode and the second bytecode, wherein the common information represents information that allows all objects to access, and the common information is at least used to represent information that has changed in the first source library.

[0151] Optionally, the first determination module 204 may be configured to directly determine the common information based on the first bytecode and the second bytecode, or may be configured to first parse the first bytecode and the second bytecode through relevant bytecode parsing tools, and then compare the parsed results to determine the common information, so as to improve the determination efficiency.

[0152] Wherein, the common information represents information that allows all objects to access, that is, information modified by the public modifier in the bytecode. An object is used to represent a class and members of the class (member variables, methods, constructors, etc.). In a program library, there are multiple classes, and each class includes multiple methods and fields. Therefore, the information type of the foregoing information may be a class, a method, a field, etc.

[0153] Further, in the present application, the public information is at least used to characterize the information that has changed in the first source library. For example, it can be the identifier of the information that has changed in the first source library, etc. The public information can also be used to characterize the relevant information of the information that has changed in the first source library. For example, when a method in a certain bytecode file in the first source library has changed, not only can the identifier of the method be determined as public information, but also the method signature of the method and the identifier of the class to which the method belongs can be determined as public information.

[0154] Still further, the first determination module 204 can screen the information that has changed based on a preset rule, and determine the public information only based on the information corresponding to the change situation that will cause compatibility problems.

[0155] It should be noted that by determining the public information, the information that has changed in the first source library during the update process is determined. On the one hand, it can narrow the scope of compatibility inspection and avoid unnecessary inspections. On the other hand, it is convenient to determine the specific reasons for the occurrence of incompatibility problems.

[0156] The detection module 206 is used to detect whether there is target public information in the target library to obtain a detection result, where the target public information is at least part of the public information. The target library, the first source library, and the second source library are all third-party libraries referenced by the target application, and the target library has an association relationship with the first source library.

[0157] Optionally, the target library is also a third-party library referenced by the aforementioned current application, and the target library depends on the first source library, that is, there is an association relationship between the target library and the first source library. Therefore, the detection module 206 can be used to detect whether there is at least part of the public information determined above in the target library. Optionally, the detection result can only be used to represent "yes / no", or in the case of "yes", represent the specific content of the target public information.

[0158] The second determination module 208 is used to determine whether the target library is compatible with the second source library based on the detection result.

[0159] Optionally, if the second determination module 208 determines based on the detection result that there is at least part of the public information determined above in the target library, it means that at least part of the content in the first source library originally referenced by the target library has changed, which will cause compatibility problems. On the contrary, if the second determination module 208 determines based on the detection result that there is no any information of the public information determined above in the target library, it means that the content in the first source library originally referenced by the target library has not changed, so that compatibility problems can be ensured not to occur.

[0160] It should be noted that by judging the compatibility between the target library and the second source library based on the detection results, it avoids the low efficiency caused by comprehensively testing the existing functions for compatibility judgment after the version of the first source library is updated, and also avoids the problems caused by modifying the version of the first source library in the target library source code to the updated version and then compiling the target library source code to determine the compatibility problem, such as relying on the environment configuration (e.g., maven, gradle), or being affected by other compilation failure factors (e.g., compilation failure due to differences in Java versions), or it is difficult to find the location of the incompatibility problem (e.g., once the incompatibility is found, the compilation cannot continue and multiple problems cannot be found). Thus, it improves the detection efficiency and the number of detectable problems.

[0161] In the embodiment of the present invention, a method is adopted to determine the compatibility between the target library and the updated first source library by detecting whether there is information that has changed in the first source library in the target library. By obtaining the first bytecode corresponding to the first source library and the second bytecode corresponding to the second source library, then based on the first bytecode and the second bytecode, the common information is determined. Then, it is detected whether there is target common information in the target library to obtain the detection result, and thus based on the detection result, it is determined whether the target library is compatible with the second source library. Among them, the second source library is the updated first source library, the common information represents the information that allows all objects to access, the common information is at least used to represent the information that has changed in the first source library, the target common information is at least part of the common information, the target library, the first source library, and the second source library are all third-party libraries referenced by the target application, and the target library has an association relationship with the first source library.

[0162] It is easy to notice that in the above process, by determining the common information, the information that has changed in the first source library during the update process is determined. On the one hand, it can narrow the scope of compatibility check and avoid redundant checks. On the other hand, it is convenient to determine the specific reason for the incompatibility problem, thus facilitating the improvement of the detection efficiency. Further, by detecting whether there is target common information in the target library and determining the compatibility between the target library and the updated first source library based on the detection result, it avoids the low efficiency caused by comprehensively testing the existing functions for compatibility judgment after the version of the first source library is updated, and also avoids the problems such as relying on the environment configuration caused by modifying the version of the first source library in the target library source code to the updated version and then compiling the target library source code to determine the compatibility problem. Thus, it further improves the detection efficiency.

[0163] It can be seen that the solution provided by this application achieves the purpose of determining the compatibility between the target library and the updated first source library by detecting whether there is information that has changed in the first source library in the target library, thereby achieving the technical effect of improving the detection efficiency, and further solving the technical problem of low detection efficiency in the process of detecting the compatibility of third-party libraries in the prior art.

[0164] It should be noted that the above-mentioned acquisition module 202, the first determination module 204, the detection module 206, and the second determination module 208 correspond to steps S102 to S108 in the above embodiment. The examples and application scenarios implemented by the four modules and the corresponding steps are the same, but are not limited to the content disclosed in the above embodiment 1.

[0165] Optionally, the first determination module further includes: a first parsing unit for parsing the first bytecode to obtain a first parsing result; a second parsing unit for parsing the second bytecode to obtain a second parsing result; a first determination unit for determining common information based on the first parsing result and the second parsing result.

[0166] Specifically, the first parsing unit can parse the first bytecode through the java bytecode parsing tool javap to obtain the first parsing result, and the second parsing unit can parse the second bytecode through the java bytecode parsing tool javap to obtain the second parsing result, so that the first determination unit can determine the common information based on the first parsing result and the second parsing result.

[0167] It should be noted that by parsing the bytecode, the content corresponding to the programs in the program library becomes more intuitive, so that the work efficiency can be effectively improved in the process of determining the common information.

[0168] Optionally, the first determination unit includes: a first determination sub-module for comparing the common class information in the first parsing result and the common class information in the second parsing result to determine the common information; a second determination sub-module for comparing the common field information in the first parsing result and the common field information in the second parsing result to determine the common information; a third determination sub-module for comparing the common method information in the first parsing result and the common method information in the second parsing result to determine the common information; a fourth determination sub-module for comparing the superclass information in the first parsing result and the superclass information in the second parsing result to determine the common information; a fifth determination sub-module for comparing the interface information in the first parsing result and the interface information in the second parsing result to determine the common information.

[0169] Among them, at least one of the information such as public classes, public fields, public methods, parent classes, and interfaces in the first source library can be detected to determine the public information. Specifically, since some specific situations during the iteration of the source library are the root causes of compatibility issues, finding these specific situations can minimize the scope of inspection when detecting their compatibility with other libraries and avoid unnecessary inspections. Specifically, these specific situations can be:

[0170] 1. A certain public class is deleted in the second source library;

[0171] 2. The access identifier of a certain public class is modified in the second source library;

[0172] 3. The public field of a certain public class is deleted in the second source library;

[0173] 4. The access identifier of the public field of a certain public class is modified in the second source library;

[0174] 5. The type of the public field of a certain public class is modified in the second source library;

[0175] 6. A certain public method of a certain public class is deleted in the second source library;

[0176] 7. The access identifier of a certain public method of a certain public class is changed in the second source library;

[0177] 8. The method signature of a certain public method of a certain public class is changed in the second source library;

[0178] 9. The public parent class inherited by a certain public class is changed in the second source library;

[0179] 10. The interface implemented by a certain public class is changed in the second source library.

[0180] Therefore, the first determination sub-module can detect the public class information in the first parsing result and the second parsing result to determine the public information, the second determination sub-module can detect the public field information in the first parsing result and the second parsing result to determine the public information, the third determination sub-module can detect the public method information in the first parsing result and the second parsing result to determine the public information, the fourth determination sub-module can detect the parent class information in the first parsing result and the second parsing result to determine the public information, and the fifth determination sub-module can detect the interface information in the first parsing result and the second parsing result to determine the public information.

[0181] In addition, after the public information is determined, at least one of the first determination sub-module, the second determination sub-module, the third determination sub-module, the fourth determination sub-module, and the fifth determination sub-module may record the foregoing public information based on a preset table for subsequent inspection. Optionally, based on different information types (i.e., class, field, method, parent class, interface), the first determination sub-module, the second determination sub-module, the third determination sub-module, the fourth determination sub-module, and the fifth determination sub-module may define different preset tables, thus further facilitating subsequent inspection.

[0182] Specifically, the first determination sub-module, the second determination sub-module, the third determination sub-module, the fourth determination sub-module, and the fifth determination sub-module may be correspondingly defined as the following tables according to the method of determining public information: class incompatibility table, field incompatibility table, method incompatibility table, parent class incompatibility table, and interface incompatibility table. Among them, the class incompatibility table can be used to indicate that once the class in the table is used in the target library, there will definitely be an incompatibility problem; the field incompatibility table can be used to indicate that once the field in the table is used in the target library, there will definitely be an incompatibility problem; the method incompatibility table can be used to indicate that once the method in the table is used in the target library, there will definitely be an incompatibility problem; the parent class incompatibility table can be used to indicate that in the same class in the target library, if the class in the table and its corresponding parent class are used at the same time, there may be an incompatibility problem; the interface incompatibility table can be used to indicate that in the same class in the target library, if the class in the table and its corresponding interface are used at the same time, there may be an incompatibility problem.

[0183] It should be noted that by comparing at least one of the public class information, public field information, public method information, parent class information, and interface information in the two parsing results, the detection range is effectively reduced, and the problem of low detection efficiency caused by comparing useless information is avoided.

[0184] Optionally, the first determination sub-module includes: a first determination subunit, configured to compare the public class information in the first parsing result with the public class information in the second parsing result. If the comparison result indicates that there is no target public class in the second parsing result, or the second parsing result updates the first access identifier, the identifier corresponding to the target public class is determined as the public information, where the target public class is at least one of all public classes in the first parsing result, and the first access identifier is used to represent the access permission of the object to the target public class.

[0185] Optionally, in the library, each class in the library corresponds to a bytecode file, and the file name of the bytecode file has a corresponding relationship with the class name of the class. Therefore, the first determination subunit can check whether there is a corresponding bytecode file with the same name in the same path in the second source library based on the bytecode files corresponding to each public class (i.e., the aforementioned target public classes) in the first source library, or determine whether there is a corresponding fully qualified class name in the same path in the second parsing result based on the fully qualified class names in the first parsing result corresponding to the first source library. If not found, it is determined that the above-mentioned specific situation 1 has occurred, that is, a certain public class has been deleted from the second source library. Otherwise, it is determined that the above-mentioned specific situation 1 has not occurred. At the same time, the first determination subunit can also scan the access identifiers (i.e., the aforementioned first access identifiers) corresponding to the classes in the parsing results of the same public classes in the first source library and the second source library. If the access identifier corresponding to a certain public class in the second source library indicates that the public class is no longer public, it is determined that the above-mentioned specific situation 2 has occurred, that is, the access identifier of a certain public class in the second source library has been modified. Otherwise, it is determined that the above-mentioned specific situation 2 has not occurred. Among them, the access identifier can be used to determine whether the information corresponding to it allows all objects to access.

[0186] Further, in the case where it is determined that the above-mentioned specific situation 1 has occurred, the first determination subunit can determine that the fully qualified class name of the aforementioned deleted public class in the first source library (i.e., the identifier of the target public class) is public information. In the case where it is determined that the above-mentioned specific situation 2 has occurred, the first determination subunit can determine that the fully qualified class name of the public class corresponding to the modified access identifier (i.e., the identifier of the target public class) is public information.

[0187] Still further, the first determination subunit can record the aforementioned public information in the class incompatibility table.

[0188] It should be noted that by determining whether the target public class is deleted or its access identifier is changed to determine public information, an effective search and record of the accurate cause of the compatibility problem regarding the class are achieved.

[0189] Optionally, the second determination sub-module includes: a second determination subunit, configured to compare the public field information in the first parsing result and the public field information in the second parsing result. When the comparison result meets at least one of the following conditions, the identifier of the target public class corresponding to the target public field, the identifier corresponding to the target public field, and the data type are determined as public information: the target public field does not exist in the second parsing result, where the target public field is at least one of all the public fields in the target public class corresponding to the target public field; the second access identifier is updated in the second parsing result, where the second access identifier is used to characterize the access permission of the object to the target public field; the data type corresponding to the target public field is updated in the second parsing result.

[0190] Optionally, the second determination subunit may scan the content corresponding to the field table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library. If it is determined based on the parsing results that a certain common field (i.e., the aforementioned target common field) in the same common class only appears in the field table of the bytecode file in the first source library, it is determined that the above-mentioned specific situation 3 has occurred, that is, the common field of a certain common class has been deleted in the second source library. Conversely, it is determined that the above-mentioned specific situation 3 has not occurred. The second determination subunit may also scan the content corresponding to the field table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library. If the access identifier (i.e., the aforementioned second access identifier) corresponding to a certain common field in the first source library in the second source library indicates that the common field is no longer public, it is determined that the above-mentioned specific situation 4 has occurred, that is, the access identifier of the common field of a certain common class has been modified in the second source library. Conversely, it is determined that the above-mentioned specific situation 4 has not occurred. The second determination subunit may further scan the content corresponding to the field table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library. If a certain common field appears in both field tables, but the descriptions of the corresponding data types are different, it is determined that the above-mentioned specific situation 5 has occurred, that is, the data type of the common field of a certain common class has been modified in the second source library. Conversely, it is determined that the above-mentioned specific situation 5 has not occurred.

[0191] Further, in the case where it is determined that the above-mentioned specific situation 3, or specific situation 4, or specific situation 5 has occurred, the second determination subunit may determine the fully qualified class name of the class to which the field in the first source library where each specific situation occurs belongs (i.e., the identifier of the target common class corresponding to the target common field), the field name of the field where each specific situation occurs (i.e., the identifier corresponding to the aforementioned target common field), and the corresponding data type as public information.

[0192] Still further, the second determination subunit may record the aforementioned public information in a field incompatibility table.

[0193] It should be noted that by determining whether the target common field is deleted, or whether its access identifier is changed, or whether its data type is changed to determine the public information, an effective search and record of the accurate cause of the compatibility problem regarding the field are realized.

[0194] Optionally, the third determination sub-module includes: a third determination subunit, configured to compare the common method information in the first parsing result with the common method information in the second parsing result, and when the comparison result meets at least one of the following conditions, determine the identifier of the target common class corresponding to the target common method, the identifier corresponding to the target common method, and the method signature as common information: there is no target common method in the second parsing result, where the target common method is at least one common method among all the common methods in the target common class corresponding to the target common method; the third access identifier is updated in the second parsing result, where the third access identifier is used to represent the access permission of the object to the target common method; the method signature corresponding to the target common method is updated in the second parsing result.

[0195] Optionally, the third determination subunit may scan the content corresponding to the method table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library, and determine the method name and method signature of each common method (the method signature includes the return value type and the parameter type). If it is determined based on the parsing result that the method signature of a certain common method appears only in the method table of the first source library, it is determined that the above-mentioned specific situation 6 has occurred, that is, a certain common method of a certain common class has been deleted in the second source library, or the above-mentioned specific situation 8 has occurred, that is, the method signature of a certain common method of a certain common class has been changed in the second source library. Conversely, it is determined that the above-mentioned specific situations 6 and 8 have not occurred. The third determination subunit may also scan the content corresponding to the method table in the bytecode file in the parsing results corresponding to the same common class in the first source library and the second source library, and determine the method name, method signature (the method signature includes the return value type and the parameter type), and access identifier of each common method. If the method signature of a certain common method appears in the method tables of both the first source library and the second source library, but the access identifier of this common method (i.e., the aforementioned third access identifier) in the second source library indicates that this common method is no longer public, it is determined that the above-mentioned specific situation 7 has occurred, that is, the access identifier of a certain common method of a certain common class has been changed in the second source library. Conversely, it is determined that the above-mentioned specific situation 7 has not occurred.

[0196] Further, in the case where it is determined that the above-mentioned specific situation 6, or specific situation 7, or specific situation 8 has occurred, the third determination subunit may determine the fully qualified class name of the class to which the method in which each specific situation occurs in the first source library belongs (i.e., the identifier of the target common class corresponding to the target common method), the method name of the method in which each specific situation occurs (i.e., the identifier corresponding to the aforementioned target common method), and the corresponding method signature as common information.

[0197] Still further, the third determination subunit may record the aforementioned common information in the method incompatibility table.

[0198] It should be noted that by determining whether the target public method is deleted, or whether its access identifier is changed, or whether its method signature is changed, the public information is determined, and an effective search and record of the accurate cause of the compatibility problem caused by the method are realized.

[0199] Optionally, the fourth determination sub-module includes: a fourth determination subunit, configured to compare the parent class information in the first parsing result with the parent class information in the second parsing result to determine whether there is a target parent class in the second parsing result, where the target parent class is at least one parent class in the target parent class list, and the target parent class list includes the parent classes of the current target public class and the parent classes associated with the parent classes of the current target public class; a fifth determination subunit, configured to, if there is no target parent class in the second parsing result, determine the identifier of the current target public class and the identifier corresponding to the target parent class as public information.

[0200] Optionally, first, the method for determining the parent class list is described. The fourth determination subunit can determine the parent class of a certain public class (i.e., the aforementioned current target public class) in the first source library through the parent class name in the parsing result corresponding to the bytecode file of the public class. Then, the fourth determination subunit can find the parent class name corresponding to the parent class based on the parsing result of the bytecode file corresponding to the parent class, and continuously search from bottom to top in this way until the found class no longer has a parent class, so as to generate the parent class list corresponding to the current target public class based on the parent class names of all the "parent classes" found in the foregoing process. Among them, the aforementioned parent classes associated with the parent classes of the current target public class can be the parent classes having an inheritance relationship with the parent classes of the current target public class.

[0201] Specifically, the fourth determination subunit can determine the parent class list corresponding to a certain public class in the first source library (i.e., the aforementioned target parent class list) and the parent class list corresponding to the same public class in the second source library through the foregoing method. Then, if it is detected that a certain public parent class (i.e., the parent class that allows all objects to access) in the parent class list corresponding to the public class in the first source library does not exist in the corresponding parent class list in the second source library, it is determined that the above-mentioned specific situation 9 has occurred, that is, the public parent class inherited by a certain public class in the second source library is changed. On the contrary, it is determined that the above-mentioned specific situation 9 has not occurred.

[0202] Further, in the case where it is determined that the above-mentioned specific situation 9 has occurred, the fifth determination subunit can determine the fully qualified class name of the public class corresponding to the target parent class list where the specific situation 9 occurs in the first source library (i.e., the identifier of the current target public class) and the parent class name of the parent class where the specific situation 9 occurs (i.e., the identifier of the aforementioned target parent class) as public information.

[0203] Furthermore, the fifth determination subunit can record the foregoing public information in the parent class incompatibility table.

[0204] It should be noted that by determining whether the parent class is deleted from the parent class list to determine the common information, an effective search and record of the accurate reasons for compatibility problems regarding the parent class are achieved.

[0205] Optionally, the fifth determination sub-module includes: a sixth determination sub-unit, configured to compare the interface information of the first parsing result with the interface information in the second parsing result to determine whether there is a target interface in the second parsing result, where the target interface is at least one interface in the target interface list, and the target interface list includes the interfaces of the current target common class and the interfaces associated with the interfaces of the current target common class; a seventh determination sub-unit, configured to, if there is no target interface in the second parsing result, determine the identifier of the current target common class and the identifier corresponding to the target interface as the common information.

[0206] Optionally, the second determination module includes: a second determination unit, configured to determine that the target library is incompatible with the second source library when it is detected that there is target common information in the target library; a third determination unit, configured to determine that the target library is compatible with the second source library when it is detected that there is no target common information in the target library.

[0207] Optionally, the detection device for the program library further includes: a third determination module, configured to determine that the target library is compatible with the second source library if it is determined based on the first bytecode and the second bytecode that there is no common information in the source library.

[0208] Embodiment 3

[0209] On the other hand, according to an embodiment of the present invention, there is also provided a computer-readable storage medium, in which a computer program is stored, and the computer program is configured to execute the above-mentioned detection method for the program library when running.

[0210] Embodiment 4

[0211] On the other hand, according to an embodiment of the present invention, there is also provided an electronic device, where the electronic device includes one or more processors; a memory for storing one or more programs, and when the one or more programs are executed by the one or more processors, the one or more processors are caused to implement a program for running, and the program is configured to execute the above-mentioned detection method for the program library when running.

[0212] The serial numbers of the above embodiments of the present invention are only for description and do not represent the advantages and disadvantages of the embodiments.

[0213] In the above embodiments of the present invention, the descriptions of the respective embodiments have their own emphases. For the parts not detailed in a certain embodiment, reference may be made to the relevant descriptions of other embodiments.

[0214] In several embodiments provided in the present application, it should be understood that the disclosed technical content can be implemented in other ways. Among them, the device embodiments described above are merely illustrative. For example, the division of units can be a logical function division. In actual implementation, there can be other division methods. For example, multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the couplings or direct couplings or communication connections shown or discussed with each other can be through some interfaces. The indirect couplings or communication connections of units or modules can be in electrical or other forms.

[0215] The units described as separate components may or may not be physically separated. The components shown as units may or may not be physical units, that is, they can be located in one place or distributed to multiple units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of this embodiment.

[0216] In addition, in each embodiment of the present invention, the functional units can be integrated into a processing unit, or each unit can exist physically alone, or two or more units can be integrated into one unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software functional units.

[0217] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on such an understanding, the technical solution of the present invention, in essence, or the part that contributes to the prior art, or all or part of this technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods in each embodiment of the present invention. The foregoing storage medium includes: various media such as USB flash drives, read-only memories (ROM, Read-Only Memory), random access memories (RAM, Random Access Memory), mobile hard disks, magnetic disks, or optical discs that can store program codes.

[0218] The above is only the preferred embodiment of the present invention. It should be noted that for those of ordinary skill in the art, without departing from the principle of the present invention, several improvements and refinements can be made, and these improvements and refinements should also be regarded as the protection scope of the present invention.< / clinit> < / init>

Claims

1. A method for detecting a program library, characterized in that, Including: Obtain a first bytecode corresponding to a first source library and a second bytecode corresponding to a second source library, where the second source library is the updated first source library; Based on the first bytecode and the second bytecode, determine public information, where the public information represents information that allows all objects to access, and the public information is at least used to represent the information that has changed in the first source library; Detect whether target public information exists in a target library to obtain a detection result, where the target public information is at least part of the public information, and the target library, the first source library, and the second source library are all third-party libraries referenced by a target application, and the target library has an association relationship with the first source library; Based on the detection result, determine whether the target library is compatible with the second source library; Based on the detection result, determine whether the target library is compatible with the second source library, including: In the case where it is detected that the target public information exists in the target library, determine that the target library is not compatible with the second source library; In the case where it is detected that the target public information does not exist in the target library, determine that the target library is compatible with the second source library; The method further includes: If it is determined based on the first bytecode and the second bytecode that there is no public information in the source library, determine that the target library is compatible with the second source library.

2. The method according to claim 1, characterized in that, Based on the first bytecode and the second bytecode, determining public information includes: Parse the first bytecode to obtain a first parsing result; Parse the second bytecode to obtain a second parsing result; Based on the first parsing result and the second parsing result, determine the public information.

3. The method according to claim 2, characterized in that, Based on the first parsing result and the second parsing result, determining the public information includes at least one of the following: Compare the public class information in the first parsing result with the public class information in the second parsing result to determine the public information; Compare the public field information in the first parsing result with the public field information in the second parsing result to determine the public information; Compare the public method information in the first parsing result with the public method information in the second parsing result to determine the public information; Compare the superclass information in the first parsing result with the superclass information in the second parsing result to determine the public information; Compare the interface information in the first parsing result with the interface information in the second parsing result to determine the public information.

4. The method according to claim 3, characterized in that, Comparing the public class information in the first parsing result with the public class information in the second parsing result to determine the public information includes: Compare the public class information in the first parsing result with the public class information in the second parsing result. If the comparison result indicates that there is no target public class in the second parsing result, or the first access identifier is updated in the second parsing result, then determine the identifier corresponding to the target public class as the public information, where the target public class is at least one of all public classes in the first parsing result, and the first access identifier is used to represent the access permission of the object to the target public class.

5. The method according to claim 3, characterized in that, Compare the common field information of the first parsing result with the common field information in the second parsing result to determine the common information, including: Compare the common field information in the first parsing result with the common field information in the second parsing result. When the comparison result meets at least one of the following conditions, determine the identifier of the target common class corresponding to the target common field, the identifier corresponding to the target common field, and the data type as the common information: The target common field does not exist in the second parsing result, where the target common field is at least one of all common fields in the target common class corresponding to the target common field; The second access identifier is updated in the second parsing result, where the second access identifier is used to represent the access permission of the object to the target common field; The data type corresponding to the target common field is updated in the second parsing result.

6. The method according to claim 3, characterized in that, Compare the common method information of the first parsing result with the common method information in the second parsing result to determine the common information, including: Compare the common method information in the first parsing result with the common method information in the second parsing result. When the comparison result meets at least one of the following conditions, determine the identifier of the target common class corresponding to the target common method, the identifier corresponding to the target common method, and the method signature as the common information: The target common method does not exist in the second parsing result, where the target common method is at least one of all common methods in the target common class corresponding to the target common method; The third access identifier is updated in the second parsing result, where the third access identifier is used to represent the access permission of the object to the target common method; The method signature corresponding to the target common method is updated in the second parsing result.

7. The method according to claim 3, characterized in that, Compare the superclass information of the first parsing result with the superclass information in the second parsing result to determine the common information, including: Compare the superclass information of the first parsing result with the superclass information in the second parsing result to determine whether there is a target superclass in the second parsing result, where the target superclass is at least one superclass in the target superclass list, and the target superclass list includes the superclass of the current target common class and the superclass having an association relationship with the superclass of the current target common class; If the target superclass does not exist in the second parsing result, determine the identifier of the current target common class and the identifier corresponding to the target superclass as the common information.

8. The method according to claim 3, wherein Compare the interface information of the first parsing result with the interface information in the second parsing result to determine the common information, including: Compare the interface information of the first parsing result with the interface information in the second parsing result to determine whether there is a target interface in the second parsing result, where the target interface is at least one interface in the target interface list, and the target interface list includes the interface of the current target common class and the interface having an association relationship with the interface of the current target common class; If the target interface does not exist in the second parsing result, the identifier of the current target common class and the identifier corresponding to the target interface are determined as the common information.

9. A detection device for a program library, wherein Including: An acquisition module, configured to acquire a first bytecode corresponding to a first source library and a second bytecode corresponding to a second source library, where the second source library is the updated first source library; A first determination module, configured to determine common information based on the first bytecode and the second bytecode, where the common information represents information that allows all objects to access, and the common information is at least used to represent the information that has changed in the first source library; A detection module, configured to detect whether target common information exists in a target library to obtain a detection result, where the target common information is at least part of the common information, and the target library, the first source library, and the second source library are all third-party libraries referenced by a target application, and the target library has an association relationship with the first source library; A second determination module, configured to determine whether the target library is compatible with the second source library based on the detection result; The second determination module includes: A second determination unit, configured to determine that the target library is not compatible with the second source library when it is detected that the target common information exists in the target library; A third determination unit, configured to determine that the target library is compatible with the second source library when it is detected that the target common information does not exist in the target library; The detection device for the program library further includes: A third determination module, configured to determine that the target library is compatible with the second source library if it is determined that no common information exists in the source library based on the first bytecode and the second bytecode.

10. A computer-readable storage medium, wherein A computer program is stored in the computer-readable storage medium, where the computer program is set to execute the detection method for the program library described in any one of claims 1 to 8 when running.

11. An electronic device, wherein The electronic device includes one or more processors; A memory, configured to store one or more programs, and when the one or more programs are executed by the one or more processors, the one or more processors are caused to implement a program for running, where the program is set to execute the detection method for the program library described in any one of claims 1 to 8 when running.

Citation Information

Patent Citations

  • Applet code similarity determination method and device, server and storage medium

    CN111562920A

  • Third-party program library function intermodulation method and system for software platform

    CN113867720A