Software Updater

Update unupdated code strings through the rules engine selection handler, solving problems caused by API changes and encoding errors in the LTS version, improving the stability and security of the software, and simplifying the code update process.

CN117441157BActive Publication Date: 2025-08-05HONOR SYST LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202280038984.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-06-01
Filing Date
2022-05-31
Publication Date
2025-08-05
Estimated Expiration
2042-05-31

AI Technical Summary

Technical Problem

In the release of long-term software support (LTS), the new LTS version may not contain the API of the previous LTS version, resulting in code failures, and software developers may make coding errors that lead to performance, stability and security failures. At the same time, the update of third-party libraries brings new APIs and repairs, making it difficult for existing technologies to update and repair code efficiently.

Method used

The rules engine selection handler is used to update the unupdated code string, identify and update the code string by scanning, and display the updated code string on the display.

Benefits of technology

It realizes efficient update of unupdated code strings, reduces the risk of code failure, improves the performance, stability and security of the software, and simplifies the code maintenance process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117441157B_ABST
    Figure CN117441157B_ABST
Patent Text Reader

Abstract

In some aspects, a method for updating software using a rules engine is provided. The rules engine selects a handler for an unupdated code string from a plurality of code strings for updating a file based on a set of rules. The set of rules associates the handler with updating a unique unupdated code string. The rules engine further instructs the handler to scan the plurality of code strings, identify the unupdated code string uniquely associated with the handler based on the scan, and update the unupdated code string. The rules engine further receives an indication from the handler that the unupdated code string uniquely associated with the handler is an updated code string. In addition, the rules engine generates at least the updated code string for display on a display screen.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority claim

[0002] This application claims priority to and the benefit of U.S. patent application serial number 17 / 336,260, filed on June 1, 2021, entitled “SOFWARE UPDATER,” the entire contents of which are incorporated herein by reference as if fully set forth below and for all applicable purposes. Technical Field

[0003] The techniques discussed below relate generally to software, and more particularly to techniques for updating and modifying software. Background Art

[0004] Software developers continually implement new long-term support (LTS) releases for software. LTS may include a product lifecycle management strategy in which stable releases of computer software are maintained for a longer period of time than a standard version. LTS may typically be reserved for open source software, where the LTS describes a version of the software that is supported for months or years longer than a standard version of the software. Each new LTS may include one or more new application programming interfaces (APIs). An API may be an interface that defines interactions between multiple software applications or hybrid hardware-software intermediaries. An API may define the types of calls or requests that can be made, how these are made, the data formats that should be used, and the conventions to be followed. An API may also provide an extension mechanism so that users can extend existing functionality in various ways and to varying degrees.

[0005] In some aspects, a new LTS may not include one or more APIs included in a previous LTS. In other words, when a new LTS is created, one or more APIs from a previous LTS may be deleted. Therefore, when code that utilizes the deleted API is executed, the code may fail. In addition, typically, software support for non-LTS versions of the software may be abandoned once the next version is released. Although software support for an LTS may be longer, LTS support may be limited to the latest LTS, while the previous LTS is not supported. In some aspects, software developers may occasionally make coding errors, resulting in performance, stability and / or security failures. Additionally or alternatively, some third-party libraries may release new versions regularly. These new versions may contain new APIs, deleted old APIs, performance fixes, and security fixes. Summary of the Invention

[0006] The following presents a summary of one or more aspects of the present disclosure in order to provide a basic understanding of such aspects. This summary is not an extensive overview of all anticipated features of the present disclosure, and is neither intended to identify key or essential elements of all aspects of the present disclosure, nor to delineate the scope of any or all aspects of the present disclosure. Its sole purpose is to present some concepts of one or more aspects of the present disclosure in the form of a prelude to the more detailed description presented later.

[0007] In some aspects, a rule engine is provided. The rule engine includes a memory. The rule engine also includes one or more processors in electronic communication with the memory. The one or more processors are configured to select one or more handlers for updating one or more unupdated code strings from a plurality of code strings associated with a file based on a set of one or more rules. The set of one or more rules associates each of the one or more handlers with updating at least one unique unupdated code string. The one or more processors are further configured to instruct at least one of the one or more handlers to: scan a plurality of code strings; identify at least one unupdated code string from the one or more unupdated code strings that is uniquely associated with the at least one handler based on the scanning of the plurality of code strings; and update the at least one unupdated code string identified by the at least one handler. The one or more processors are further configured to receive an indication from the at least one handler that the at least one unupdated code string uniquely associated with the at least one handler is an updated code string. In addition, the one or more processors are configured to at least generate an updated code string for display on a display screen.

[0008] In some aspects, prior to selecting one or more handlers, the one or more processors are further configured to: receive a plurality of code strings associated with the file from a scanner, wherein each of the plurality of code strings includes the scanned code string; and identify one or more non-updated code strings in the plurality of code strings. In some aspects, receiving the plurality of code strings associated with the file from the scanner includes: receiving an indication of one or more non-updated code strings in the plurality of code strings from the scanner, and identifying the one or more non-updated code strings in the plurality of code strings based on the indication. In some aspects, instructing at least one of the one or more handlers to update at least one non-updated code string includes instructing the at least one handler to update at least one of the following: syntax of the non-updated code string, variables of the non-updated code string, or objects of the non-updated code string. In some aspects, instructing at least one of the one or more handlers to update at least one non-updated code string includes instructing the at least one of the one or more handlers to update at least one non-updated code string from an initial version of the code to an updated version of the code. In some aspects, the updated version includes a version of the code immediately preceding the initial version of the code. In some aspects, the updated version includes a latest version of the code.

[0009] In some aspects, a method implemented by a rule engine is provided. The method includes selecting one or more handlers for updating one or more non-updated code strings from a plurality of code strings associated with a file based on a set of one or more rules. The set of one or more rules associates each of the one or more handlers with updating at least one unique non-updated code string. The method also includes instructing at least one handler of the one or more handlers to: scan a plurality of code strings, identify at least one non-updated code string from the one or more non-updated code strings that is uniquely associated with the at least one handler based on the scanning of the plurality of code strings; and update the at least one non-updated code string identified by the at least one handler. The method further includes: receiving an indication from the at least one handler that the at least one non-updated code string that is uniquely associated with the at least one handler is an updated code string. In addition, the method includes at least generating an updated code string for display on a display screen.

[0010] In some aspects, a non-transitory processor-readable storage medium for a rules engine is provided. The non-transitory processor-readable storage medium has one or more computer-executable instructions stored thereon. When executed by a processing circuit, the one or more computer-executable instructions cause the processing circuit to select one or more processing programs for updating one or more unupdated code strings from a plurality of code strings associated with a file based on a set of one or more rules. The set of one or more rules associates each of the one or more processing programs with updating at least one unique unupdated code string. When executed by the processing circuit, the one or more computer-executable instructions further cause the processing circuit to instruct at least one of the one or more processing programs to: scan a plurality of code strings, identify, based on the scanning of the plurality of code strings, at least one unupdated code string from the one or more unupdated code strings that is uniquely associated with the at least one processing program; and update the at least one unupdated code string identified by the at least one processing program. When executed by the processing circuit, the one or more computer-executable instructions further cause the processing circuit to receive an indication from the at least one processing program that the at least one unupdated code string uniquely associated with the at least one processing program is an updated code string. Additionally, when executed by the processing circuit, the one or more computer-executable instructions further cause the processing circuit to at least generate the updated code string for display on a display screen.

[0011] In some aspects, a rule engine is provided. The rule engine includes a component for selecting one or more handlers for updating one or more non-updated code strings from a plurality of code strings associated with a file based on a set of one or more rules. The set of one or more rules associates each of the one or more handlers with updating at least one unique non-updated code string. The rule engine also includes a component for instructing at least one of the one or more handlers to: scan a plurality of code strings, identify at least one non-updated code string from the one or more non-updated code strings that is uniquely associated with at least one handler based on the scanning of the plurality of code strings; and update at least one non-updated code string identified by the at least one handler. The rule engine further includes a component for receiving an indication from the at least one handler that the at least one non-updated code string that is uniquely associated with the at least one handler is an updated code string. In addition, the rule engine includes a component for at least generating an updated code string for display on a display screen.

[0012] In some aspects, a processing program is provided. The rule engine includes a memory. The rule engine also includes one or more processors in electronic communication with the memory. The one or more processors are configured to receive access to multiple code strings associated with a file from the rule engine. The multiple code strings include one or more unupdated code strings. The one or more processors are also configured to scan the multiple code strings. The one or more processors are further configured to identify at least one unupdated code string uniquely associated with the processing program among the one or more unupdated code strings based on scanning the multiple code strings. In addition, the one or more processors are configured to update at least one unupdated code string identified by the processing program for display on a display screen. The one or more processors are also configured to transmit to the rule engine a first indication that at least one unupdated code string uniquely associated with the processing program among the one or more unupdated code strings is an updated code string for display on a display screen.

[0013] In some aspects, the one or more processors are further configured to receive a second indication from a rule engine that the handler belongs to a set of at least one handler, the set of at least one handler being selected for updating at least one of the one or more unupdated code strings based on a set of one or more rules, the set of one or more rules associating each of the set of at least one handler with updating at least one unique unupdated code string. In some aspects, in response to receiving the second indication, the one or more processors are further configured to scan a plurality of code strings, identify at least one unupdated code string uniquely associated with the handler from the one or more unupdated code strings based on the scanning of the plurality of code strings, and update the at least one unupdated code string identified by the handler for display on a display screen. In some aspects, updating the at least one unupdated code string includes updating at least one of the following: syntax of the at least one unupdated code string, variables of the at least one unupdated code string, or objects of the at least one unupdated code string. In some aspects, updating the at least one unupdated code string includes updating the at least one unupdated code string from an initial version of the code to an updated version of the code. In some aspects, the updated version includes the version of the code immediately preceding the initial version of the code. In some aspects, the updated version includes the latest version of the code.

[0014] In some aspects, a method implemented by a processing program is provided. The method includes: receiving access to multiple code strings associated with a file from a rule engine, wherein the multiple code strings include one or more non-updated code strings. The method also includes scanning the multiple code strings. The method further includes identifying at least one non-updated code string uniquely associated with the processing program from the one or more non-updated code strings based on scanning the multiple code strings. In addition, the method includes updating the at least one non-updated code string identified by the processing program for display on a display screen. The method also includes transmitting a first indication to the rule engine for display on a display screen that at least one non-updated code string uniquely associated with the processing program from the one or more non-updated code strings is an updated code string.

[0015] In some aspects, a non-transitory processor-readable storage medium for a processing program is provided. The non-transitory processor-readable storage medium has one or more computer-executable instructions stored thereon. When executed by a processing circuit, the one or more computer-executable instructions cause the processing circuit to receive, from a rules engine, access to multiple code strings associated with a file. The multiple code strings include one or more unupdated code strings. When executed by the processing circuit, the one or more computer-executable instructions further cause the processing circuit to scan the multiple code strings. When executed by the processing circuit, the one or more computer-executable instructions further cause the processing circuit to identify, based on the scanning of the multiple code strings, at least one unupdated code string uniquely associated with the processing program from among the one or more unupdated code strings. Additionally, when executed by the processing circuit, the one or more computer-executable instructions further cause the processing circuit to update the at least one unupdated code string identified by the processing program for display on a display screen. The one or more computer-executable instructions further cause the processing circuit to transmit, to the rules engine, a first indication that the at least one unupdated code string uniquely associated with the processing program from among the one or more unupdated code strings is an updated code string, for display on the display screen.

[0016] In some aspects, a processing program is provided. The processing program includes a component for receiving access to multiple code strings associated with a file from a rule engine. The multiple code strings include one or more unupdated code strings. The processing program also includes a component for scanning the multiple code strings. The processing program further includes a component for identifying at least one unupdated code string uniquely associated with the processing program from the one or more unupdated code strings based on scanning the multiple code strings. In addition, the processing program includes a component for updating at least one unupdated code string identified by the processing program for display on a display screen. The processing program also includes a component for transmitting to the rule engine a first indication that at least one unupdated code string uniquely associated with the processing program from the one or more unupdated code strings is an updated code string for display on a display screen.

[0017] These and other aspects will become more fully understood upon reviewing the detailed description below. Other aspects, features, and examples will become apparent to those of ordinary skill in the art upon reviewing the description of the following specific illustrative examples in conjunction with the accompanying drawings. Although features may be discussed with respect to certain examples and drawings below, all examples may include one or more of the advantageous features discussed herein. In other words, although one or more examples may be discussed as having certain advantageous features, one or more of such features may also be used according to the various examples discussed herein. In a similar manner, although illustrative examples may be discussed below as device, system, or method examples, such illustrative examples may be implemented in various devices, systems, and methods. BRIEF DESCRIPTION OF THE DRAWINGS

[0018] Figure 1 is a conceptual diagram illustrating an example system for updating and modifying software in accordance with some aspects.

[0019] Figure 2 is a conceptual diagram illustrating an example system for updating and modifying software in accordance with some aspects.

[0020] Figure 3A Illustrate a conceptual example of message output for updating code in accordance with some aspects.

[0021] Figure 3B Illustrate a conceptual example of message output for updating code in accordance with some aspects.

[0022] Figure 3C Illustrate a conceptual example of message output for updating code in accordance with some aspects.

[0023] Figure 4A Illustrate a conceptual example of static analysis scanner wrapper data message input in accordance with some aspects.

[0024] Figure 4B Illustrate a conceptual example of static analysis scanner wrapper data message input in accordance with some aspects.

[0025] Figure 5 An example updater system is illustrated in accordance with some aspects.

[0026] Figure 6 Illustrate a conceptual example of a scanner wrapper message included in a project file in accordance with some aspects.

[0027] Figure 7 Illustrated is a conceptual example of rules used with a primary handler in accordance with some aspects.

[0028] Figure 8 Illustrate a conceptual example of an updated project file according to some aspects.

[0029] Figure 9A Illustrated is a conceptual example of a simple updater handler in accordance with some aspects.

[0030] Figure 9B Illustrated is a conceptual example of input code to be updated by the simple updater handler 900 in accordance with some aspects.

[0031] Figure 9C Illustrated is a conceptual example of output code previously updated by the simple updater handler 900 in accordance with some aspects.

[0032] Figure 10A Illustrated is a conceptual example of a secondary API updater handler in accordance with some aspects.

[0033] Figure 10B Illustrate a conceptual example of input code to be updated by a simple API updater handler in accordance with some aspects.

[0034] Figure 10C Illustrate a conceptual example of output code previously updated by a simple API updater handler in accordance with some aspects.

[0035] Figure 11A Illustrated is a conceptual example of input code for updating using a three-level processing procedure in accordance with some aspects.

[0036] Figure 11B Illustrate a conceptual example of output code after updating input code using a three-level processing program in accordance with some aspects.

[0037] Figure 12A Illustrated is a conceptual example of input code for updating using a three-level processing procedure in accordance with some aspects.

[0038] Figure 12BIllustrate a conceptual example of output code after updating input code using a three-level processing program in accordance with some aspects.

[0039] Figure 13A Illustrated is a conceptual example of input code for updating using a three-level processing procedure in accordance with some aspects.

[0040] Figure 13B Illustrate a conceptual example of output code after updating input code using a three-level processing program in accordance with some aspects.

[0041] Figure 14A Illustrated is a conceptual example of input code for updating using a four-level processing procedure in accordance with some aspects.

[0042] Figure 14B Illustrate a conceptual example of output code after updating input code using a fourth-level processing procedure in accordance with some aspects.

[0043] Figure 15A Illustrated is a conceptual example of input code for updating using a five-stage process in accordance with some aspects.

[0044] Figure 15B Illustrate a conceptual example of output code after updating input code using a fourth-level processing procedure in accordance with some aspects.

[0045] Figure 16 is a block diagram illustrating an example of a hardware implementation for employing a rules engine of a processing system in accordance with some aspects.

[0046] Figure 17 is a flow diagram of a method implemented by a rules engine for updating one or more code strings according to some aspects.

[0047] Figure 18 is a flow diagram of a method implemented by a rules engine for updating one or more code strings according to some aspects.

[0048] Figure 19 is a block diagram illustrating an example of a hardware implementation for a processing program employing a processing system according to some aspects.

[0049] Figure 20 is a flow chart of a method implemented by a processing program for updating one or more code strings according to some aspects.

[0050] Figure 21 is a flow chart of a method implemented by a processing program for updating one or more code strings according to some aspects. DETAILED DESCRIPTION

[0051] The detailed description set forth below in conjunction with the accompanying drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some cases, well-known structures and components are shown in block diagram form to avoid obscuring such concepts.

[0052] Software developers continually implement new long-term support (LTS) releases for software. LTS may include a product lifecycle management strategy in which stable releases of computer software are maintained for a longer period of time than a standard version. LTS may typically be reserved for open source software, where the LTS describes a version of the software that is supported for months or years longer than a standard version of the software. Each new LTS may include one or more new application programming interfaces (APIs). An API may be an interface that defines interactions between multiple software applications or hybrid hardware-software intermediaries. An API may define the types of calls or requests that can be made, how these are made, the data formats that should be used, and the conventions to be followed. An API may also provide an extension mechanism so that users can extend existing functionality in various ways and to varying degrees.

[0053] In some aspects, a new LTS may not include one or more APIs included in a previous LTS. In other words, when a new LTS is created, one or more APIs from a previous LTS may be deleted. Therefore, when code that utilizes the deleted API is executed, the code may fail. In addition, typically, software support for non-LTS versions of the software may be abandoned once the next version is released. Although software support for an LTS may be longer, LTS support may be limited to the latest LTS, while the previous LTS is not supported. In some aspects, software developers may occasionally make coding errors, resulting in performance, stability and / or security failures. Additionally or alternatively, some third-party libraries may release new versions regularly. These new versions may contain new APIs, deleted old APIs, performance fixes, and security fixes.

[0054] In some aspects, software developers can determine which APIs have changed and identify replacement APIs. Software developers can locate code for updates, determine how to update the code, and implement the updates. In some aspects, the software development operations team and / or the software security operations team can scan the source code with static analysis tools, open tickets for the identified issues, and triage the identified issues with the software development team. The software development team can identify faults, determine how to fix them, and implement appropriate solutions. After implementing the appropriate solutions, the software developers can perform full regression testing.

[0055] Figure 1 is a conceptual diagram illustrating an example system 100 for updating and modifying software according to some aspects. Figure 1 As shown, the system 100 may include a front-end portal server 102 communicatively coupled to one or more user devices 104 via one or more electronic communication channels 106. The one or more communication channels 106 may be communication channels used by the Internet. For example, a first user device 104a may electronically communicate with the front-end portal server 102 via a first electronic communication channel 106a, and a second user device 104b may electronically communicate with the front-end portal server 102 via a second electronic communication channel 106b. The one or more user devices 104 may include at least one of a server, a computer, a handheld device, a combination thereof, or the like. In some aspects, the front-end portal server 102 may include a control robot, such as JENKINS. TM Control robot or similar control robot. The front-end portal server 102 can provide a user interface for the system 100. For example, the front-end portal server 102 can include an HTTP interface for one or more web browsers, provide the status of one or more jobs, and provide control over one or more jobs (e.g., a task to execute one or more code strings). The front-end portal server 102 can also provide triggers for stopping and / or starting one or more jobs. For example, the front-end portal server 102 can provide a timer trigger to stop and / or start a job when one or more predetermined durations expire, when a specific time occurs, and / or when the execution of the code is initiated. As another example, the front-end portal server 102 can provide an event trigger to stop and / or start one or more jobs after an event occurs. As yet another example, the front-end portal server 102 can provide controls for running code streams (e.g., updater code) into and out of the system 100. For example, one or more user devices 104 can transmit one or more code strings to the system 100 for updating and / or modification, as further described herein. The front-end portal server 102 can control the time and / or rate at which the system 100 receives one or more code strings.

[0056] In some aspects, the front-end portal server 102 may include one or more configured users and one or more configured administrators. Each of the users and each of the administrators may be associated with an individual and may be provided with a unique set of update permissions, project access permissions, and / or security permissions. For example, some administrators may have full access or limited access. Similarly, some users may have full access or limited access.

[0057] The system 100 may include one or more agents 108, such as at least a first agent 108a and a second agent 108b. Figure 1 As shown, each of the first agent 108a and the second agent 108b can be communicatively coupled to the front-end portal server 102 via an agent communication channel, such as the first agent communication channel 110a and the second agent communication channel 110b. In some aspects, the agent communication channel can include a Secure Shell (SSH) protocol communication channel. For example, the first agent 108a can be communicatively coupled to the front-end portal server 102 via the first agent communication channel 110a, and the second agent 108b can be communicatively coupled to the front-end portal server 102 via the second agent communication channel 110b. The agent can be a standalone computing system having one or more processors and memory, can reside in a secure area 112 (e.g., a demilitarized zone (DMZ), a perimeter network, a screened subset), and can include a software wrapper (e.g., a JAVA wrapper) for executing code received from the front-end portal server 102. For example, the agent can initiate (e.g., execute) commands associated with the received code and read and write data to the front-end portal server 102.

[0058] In some aspects, each individual agent can be stored in one or more repositories (e.g., GITHUB) via the Internet. TM GITLAB TM, repositories associated with the GIT) (such as the first repository 114a and the second repository 114b) for accessing code. For example, the first agent 108a can receive one or more code strings from the first repository 114a via the first repository communication channel 116a, and / or receive one or more code strings from the second repository 114b via the second repository communication channel 116b. As another example, the second agent 108b can receive one or more code strings from the first repository 114a and / or the second repository 114b. After receiving the one or more code strings, the first agent 108a can transmit the status of the one or more code strings to the front-end portal server 102. The first agent 108a can also receive job control guidance and / or one or more credentials from the front-end portal server 102. The first agent 108a can use the one or more credentials to push updates to the one or more code strings to the first repository 114a and / or the second repository 114b. Similarly, after receiving the one or more code strings, the second agent 108b can transmit the status of the one or more code strings to the front-end portal server 102. The second agent 108b may also receive a job control directive and / or one or more credentials from the front-end portal server 102. The second agent 108b may use the one or more credentials to push updates to the one or more code strings to the first repository 114a and / or the second repository 114b. In some aspects, at least one of the one or more agents 108 may be (e.g., include) an updater agent as further described herein.

[0059] The system 100 may also include an updater system 118. The updater system 118 may be electronically communicatively coupled to each of the one or more agents via one or more corresponding updater system communication channels. Figure 1 As shown, the updater system 118 can be electronically coupled to the first agent 108a via a first updater system communication channel 120a and electronically coupled to the second agent 108b via a second updater system communication channel 120b. A first firewall 122 can be positioned along each of the one or more updater system communication channels. The first firewall 122 can be configured to allow the corresponding updater system to receive data and / or credentials that originate only from the secure zone 112.

[0060] As further described herein, the updater system 118 may include updater code and may be configured to update one or more non-updated code strings from a plurality of code strings associated with a file (e.g., a project file) according to a set of one or more rules. The updater system 118 may also scan the plurality of code strings, identify at least one non-updated code string from the one or more non-updated code strings based on the scanning of the plurality of code strings, and update the at least one non-updated code string. The updater system 118 may further be configured to generate at least an updated code string for display on a display screen of the first user device 104a and / or the second user device 104b.

[0061] As described herein, a security zone 112 can be defined by a region including multiple proxies 108. In some aspects, the security zone 112 can be defined by one or more firewalls located on a communication channel that feeds into and / or out of the multiple proxies 108. For example, the security zone 112 can be defined by a first firewall 122, a second firewall 124, and a third firewall 126. In some aspects, the security zone 112 can be defined by one or more firewalls located on a communication channel that feeds into and / or out of a group that includes at least the front-end portal server 102 and the multiple proxies 108. For example, the security zone 112 can be defined by a first firewall 122, a third firewall 126, and a fourth firewall 128. Furthermore, the system 100 can include multiple security zones defined by at least one of the first firewall 122, the second firewall 124, the third firewall 126, or the fourth firewall 128. The updater system 118 can be within its own security zone defined by the first firewall 122.

[0062] Figure 2 is a conceptual diagram illustrating an example system 200 for updating and modifying software in accordance with some aspects. Figure 2 Can include Figure 1 One or more elements / features of the system include, for example, a front-end portal server 202 in electronic communication with a user device 204 via an electronic communication channel 206, one or more agents 208 residing in a secure area 212 and in electronic communication with the front-end portal server 202 via an agent communication channel 210, and an updater system 216 (e.g., an updater engine) in electronic communication with the one or more agents 208 via an updater system communication channel 218 and a first firewall 220. A repository 222 can also be in electronic communication with the one or more agents 208 via a repository communication channel 224.

[0063] like Figure 2As shown, the system 200 may also include a contact server 226 in electronic communication with one or more agents 208 via a contact communication channel 228. The contact server 226 also electronically communicates with an internal development server 230 via an internal development server communication channel 232, with a central repository 234 via a central repository communication channel 236, and with a public repository 238 via a public repository communication channel 240. In some aspects, the internal development server 230 may include files from internal developers to execute the updater system 216. The files from the internal developers may include scanners, wrapper binaries, and executables (e.g., external and / or third-party wrapper scanners, custom wrapper scanners). The scanner receives output from one or more deprecation scanners, wraps the output, and formats the output for transmission to and use by the updater system 216. The output may be used for communication between the updater agent 250 and the updater system 216.

[0064] In some cases, upon receiving a project file comprising one or more files (each having one or more code strings), one or more agents 208 may search servers and databases located throughout the internet to identify one or more auxiliary files for constructing the project file. However, rather than relying on servers and databases located throughout the internet to identify the one or more auxiliary files, one or more agents 208 may rely on a contact server 226. In some aspects, the contact server 226 may include binary files (e.g., computer-executable bits), code and indexes from public repositories, scanner binaries / executables, and the like. The one or more agents 208 may use binary files rather than source code to scan the one or more code strings in the project file. In some aspects, one or more user devices 204 may have access (e.g., limited access) to the contact server 226. However, unlike the one or more agents 208, one or more user devices 204 may not have access (e.g., limited access) to the scanner binary files contained in the contact server 226.

[0065] In some aspects, the contact server 226 may transmit a query to one or more agents 208 to receive information related to obtaining one or more auxiliary files for building a project file. Additionally or alternatively, the one or more agents 208 may transmit information related to obtaining one or more auxiliary files for building a project file to the contact server 226. The contact server 226 may receive an indication of one or more build files for obtaining the one or more auxiliary files for building the project file. In some aspects, the contact server 222 may be configured to determine the one or more auxiliary files associated with the one or more build files identified in the indication. For example, the one or more agents 208 may generate a workspace for using (e.g., executing) compiled code and source code. Typically, the workspace may include one or more of the project file's source files, build files (e.g., build scripts), third-party libraries (e.g., libraries for a logging subsystem), and generators for building project artifacts. The one or more agents 208 may receive a project file (e.g., an open source project with files containing open source code, one or more private or corporate projects, etc.) from the repository 222 via the repository communication channel 224. The project file has one or more files, each file having one or more code strings. One or more agents 208 may insert a project file having one or more files (each file having one or more code strings) into the workspace.

[0066] It should be understood that in some aspects, each of the one or more user devices 204 can be associated with an individual user front-end portal server 252. Figure 2 As shown, one or more user devices 204 are in electronic communication with a corresponding user front-end portal server 252 via a front-end portal server communication channel 254. The user front-end portal server 252 can be in electronic communication with the repository 222 via a repository bridge communication channel 256 and a repository communication channel 224. Each of the user front-end servers 252 can have a front-end portal server 202 and / or Figure 1 One or more features of the front-end portal server 102 are illustrated. For example, a user device 204 using the user front-end portal server 252 may be able to access binaries from the contact server 226 and / or data from the repository 222. As another example, when the updater agent 250 pushes updated code to the repository 222, the user front-end portal server 252 may initiate its own build, scan, and quality control check.

[0067] One or more agents 208 may then execute a build on the project file. For example, one or more agents 208 may utilize one or more build files from the project file and execute the build files to build the project file. When building the project file, one or more agents 208 using at least one build file may instruct contact server 226 to obtain one or more auxiliary files that may be required to build the project file. Contact server 226 may determine which auxiliary files are required to build the project file and may obtain the auxiliary files from central repository 234 via central repository communication channel 236 and from public repository 238 via public repository communication channel 240. After receiving the one or more auxiliary files determined by contact server 226 to be used to build the project file, contact server 226 may store the one or more auxiliary files for subsequent access and / or use.

[0068] While one or more agents 208 are building project files, one or more agents 208 may also scan each of one or more code strings within each file of the project files. For example, while building a project file, one or more agents 208 may request that contact server 226 provide one or more scanners generated by an internal development server 230 executing one or more internal development processes to one or more agents 208. Contact server 226 may receive multiple scanners from internal development server 230 via internal development server communication channel 232 and store the multiple scanners in a repository of the contact server. Contact server 226 may identify one or more scanners from the multiple scanners that are appropriate for the project files and provide the one or more scanners to one or more agents 208 for scanning. Simultaneously, front-end portal server 202 may monitor the building and scanning of the project files and report the build status and / or scan status of the project files for display on a display screen of user device 204. The build status may include identifying one or more stages for updating code and / or one or more remaining times for completing one or more tasks or projects.

[0069] After the one or more agents 208 scan each of the one or more code strings in each file of the project file, the one or more agents 208 can transmit the project file to the updater system 216 to update the one or more non-updated code strings within the project file, as described herein. After the updater system 216 performs the update of the one or more non-updated code strings, the one or more agents 208 can receive the project file with the updated code strings and write the updated project file to the workspace for execution and / or display on the display screen of the user device 204. In some aspects, the one or more agents 208 can push the update to the repository 222 via the repository communication channel. In some aspects, before the one or more agents 208 push the project file with the update to the repository 222, the one or more agents 208 can re-execute a build of the project file and execute one or more tests for the project file.

[0070] When one or more agents 208 scan a project file before sending it to the updater system 216, the processing time and power utilized by the updater system 216 to update one or more non-updated code strings in the project file with one or more updated code strings in the project file is significantly reduced because the updater system 216 and other devices operating in conjunction with the updater system 216 as described herein can reduce the number of scans required to perform the update. It should be understood that while the description includes examples of one or more agents 208 performing builds and scans on a single project file, those skilled in the art will appreciate that one or more agents 208 can perform builds and scans on multiple project files. For example, one or more agents 208 can include one or more processors that can be throttled to account for building and scanning a single project file or multiple project files and to increase or decrease the throughput of one or more agents 208.

[0071] As described herein, a security zone 212 can be defined by a zone that includes one or more proxies 208. In some aspects, the security zone 212 can be defined by one or more firewalls located on a communication channel that feeds into and / or out of the one or more proxies 208. For example, the security zone 212 can be defined by a first firewall 220, a second firewall 242, and a third firewall 244. In some aspects, the security zone 212 can be defined by one or more firewalls located on a communication channel that feeds into and / or out of a group that includes at least one of the front-end portal server 202, the one or more proxies 208, the contact server 226, and the internal development server 230. For example, the security zone 212 can be defined by a first firewall 220, a fourth firewall 246, and a fifth firewall 248. Furthermore, the system 100 can include multiple security zones defined by at least one of the first firewall 220, the second firewall 242, the third firewall 244, the fourth firewall 246, or the fifth firewall 248. The updater system 216 can be within its own security zone defined by the first firewall 220.

[0072] In some aspects, one or more agents 208 may include an updater agent 250. The updater agent 250 may be a client of the updater system 216. The updater agent 250 may be configured to determine which scanners to invoke, invoke one or more appropriate mapping wrappers for invoking the appropriate scanners, collate the results of the updater system 216's scanners, connect to the updater system 216 and upload the results produced by the scanners to the updater system 216, receive updated files (including but not limited to code, if any) from the updater system 216 and write / save the updates to the appropriate source files, and invoke a reporter to write out a report of the activity, including billing costs for processing (if any). The updater agent 250 may be controlled by configuration files and command line options. Use of wrappers allows the updater agent 250 to be plugged into various build systems, such as MAVEN. TM (Implemented) and GRADLE TM (Design enhancement).

[0073] Updater agent 250 may also use one or more scanners to scan each of one or more code strings within each file of the project file. For example, when building a project file, updater agent 250 may request contact server 226 to provide updater agent 250 with one or more scanners generated by internal development server 230, which is executing one or more internal development processes. Contact server 226 may receive multiple scanners from internal development server 230 via internal development server communication channel 232 and store the multiple scanners in a repository on the contact server. Contact server 226 may identify one or more scanners from the multiple scanners that are suitable for the project file and provide the one or more scanners to updater agent 250 for scanning. Contact server 230 may have or retrieve multiple scanners, each associated with a different task or focus. Each of the scanners may include a mapping wrapper that converts the output of the corresponding scanner into a format suitable for parsing and actioning by updater system 216. Scanner wrappers may be managed by updater agent 250, which organizes the output from the scanner wrappers and any additional data, such as source code and build files.

[0074] Typically, scanners are supplied by third parties such as OPENJDK TM SONAR SOURCE TM In some aspects, such as for GRADLE TM Build files, MAVEN TM Build files and ANT TM The scanner for the build file can be written by an independent or separate software development team. In some aspects, the scanner can include a deprecation scanner (e.g., JAVA TM Deprecation scanners). Deprecation scanners may include development kit tools (e.g., JAVA TM A combination of a JDK (JDK) tool "jdeprscan") and an associated mapping wrapper. In some aspects, the mapping wrapper can be calibrated for the JDK tools.

[0075] The deprecation scanner can be configured to search compiled files (e.g., JAVA TM file) to find references to files that have been imported from a file source (for example, JAVA TM) in the updater system 216. The deprecation scanner can then report the problems it finds to the caller. The deprecation scanner mapping wrapper can call the deprecation scanner (e.g., "jdeprscan"), format the scanner's output into a format that can be parsed by the updater system 216 via a processor scan parser (e.g., jdepProcessorScanParser), and locate one or more source files identified by the scanner and attach them to a data packet for sending to the updater system 216.

[0076] Figure 3A 、 Figure 3B and Figure 3C Illustrated is a conceptual example of a message output 300 for updating code in accordance with some aspects. The message output 300 can be a message transmitted from the updater agent 250 to the updater system 216 (eg, a rules engine of the updater system 216). Figure 3A The portion of the message output 300 shown may include details associated with the code file to be updated and / or modified as well as a portion of the code file to be updated and / or modified. Figure 3B The portion of message output 300 shown may contain details associated with the code files to be updated and / or modified. Figure 3C The portion of the message output 300 shown may include a portion of the code file to be updated and / or modified, the file name and directory entry of the code file to be updated and / or modified, the name of the code file being updated and / or modified, a collected list of issues identified by the various scanners (e.g., "results"), and various operational information for the operation of the updater system 216 (e.g., the rule engine of the update system 216). In some aspects, the message output 300 may be from an open source project, such as the OpenSource JAXB-RI project. The open source project may include "class com / sun / xml / xsom / impl / parser / state / ersSet uses deprecated method java / lang / Integer:: <init>(I)V” and from Figure 2 The update agent 250 outputs to the updater system 216. In some aspects, the data and relationships stored in the memory can be converted into a format suitable for transmission from the update agent 250 via a network connection (e.g., Figure 2 The updater system communication channel 218) is transmitted in a json format for reception by the updater system 216.

[0077] In some aspects, the one or more scanners may include a static analysis scanner. The static analysis scanner may include an associated mapping wrapper. The static analysis scanner may be configured to cause the updater agent 250 to download rules and configurations from the static analysis server, scan the code for violations of the rules and initial processing, and send the results, including the project source code, to the static analysis engine for additional processing, storage, and eventual review by system users (software developers, managers, Q / A testers, automated systems such as Jenkins / Travis / Spinnaker, etc.). In some aspects, the static analysis scanner may be a SONARQUBE TM Scanner or alternatively a comparable scanner.In some aspects, deprecating scanner wrapper code 300 may include outputting deprecating scanner wrapper code.

[0078] Figure 4A and Figure 4B 1 illustrates a conceptual example of a static analysis scanner wrapper data message input 400 according to some aspects. In some examples, the static analysis scanner wrapper data message input 400 may be a SONARQUBE TM Scanner wrapper, JLINT TM Scanner wrapper and / or LINT TM In some aspects, the static analysis scanner wrapper data message input 400 can invoke the static analysis scanner and then query the static analysis scanner server for the "decorated" scan results. The "decorated" scan results can be obtained from Figure 2 The updater agent 250 sends the data to the updater system 216. In some aspects, the data and relationships stored in the memory can be converted into a format suitable for transmission over a network connection (e.g., Figure 2 The static analysis scanner wrapper data message input 400, after being received by the static analysis wrapper, may be parsed and mapped into the same or similar format, such as with respect to Figure 3A 、 Figure 3B and Figure 3C This is shown as the message output 300 illustrated in FIG.

[0079] In some aspects, the one or more scanners can include an update scanner. In some aspects, the update scanner can be a MAVEN TM Update scanner. The update scanner can be configured to update the third-party library dependencies of the project files to the current versions of the third-party libraries. For example, the update scanner can be configured to update (e.g., upgrade) the project files from spring v4 to spring v5, from struts v2 to struts v3, etc. Various projects (e.g., open source projects) may routinely release updates for various reasons (including security, performance, stability, etc.). In some aspects, the update scanner can be configured to cause the updater agent 250 to scan the build pom.xml file (e.g., MAVEN TM xml file is built) to determine the project's dependencies. The update scanner can also cause the updater agent 250 to send a list of dependencies to the updater system 216 for use in determining which dependencies are out of date. In some aspects, the update scanner can cause the updater agent 250 to receive a list of outdated dependencies from the updater system 216 and scan compiled class files for uses of the outdated dependencies. Additionally, in some aspects, the update scanner can be configured to cause the updater agent 250 to send source code with outdated references and references to outdated pom.xml(s) to the updater agent 250 to determine and apply appropriate updates.

[0080] In some aspects, the one or more scanners can include an upgrade scanner. In some aspects, the upgrade scanner can be a MAVEN TM Upgrade the scanner. In some ways, MAVEN TM The upgrade scanner can be used to transfer project files from MAVEN TM Build system converted to GRADLE TM Build system. In some ways, MAVEN TM The upgrade scanner can be an upgrade / improvement from the Make&Ant upgrade scanner. The upgrade scanner can be configured to enable agent 208 (e.g., an upgrader agent) to resolve dependency management issues with third-party libraries for certain build systems (e.g., the Make&Ant build system). In some aspects, the upgrade scanner can be associated with a standard project directory layout.

[0081] In some aspects, the update scanner can be configured to cause the agent 208 to update the project's third-party library dependencies to the current version of the third-party library. In some aspects, the update scanner can be a GRADLE TM Update scanner. The update scanner can be configured to cause the agent 208 to update the project from spring v4 to spring v5, from struts v2 to struts v3, etc. Various projects (e.g., open source projects) may routinely release updates for various reasons (including security, performance, stability, etc.). In some aspects, the update scanner can be configured to cause the agent 208 to scan build files (e.g., one or more GRADLE TM build.gradle file) to determine the dependencies of the project. The update scanner can also cause the agent 208 to send a list of dependencies to the updater system 216 for use in determining which dependencies are out of date. In some aspects, the update scanner can cause the agent 208 to receive a list of outdated dependencies from the updater system 216 and scan compiled class files for uses of outdated dependencies. Additionally, in some aspects, the update scanner can be configured to cause the agent 208 to send source code with outdated references and references to outdated build files to the updater system 216 to determine and apply appropriate updates.

[0082] In some respects, besides being deprecated and eventually removed from code (e.g., JAVA TM In addition to removing APIs from the Java language, new APIs can be routinely added. For example, a hashmap API can be added as a faster version of the hashtable API, for-each can be added as a more efficient for loop, lambda can be added for faster code execution, etc. Upgrading scanners (e.g., JAVA TM Upgrade scanner) can be configured to enable agent 208 to identify areas where new language syntax can be used to update code that was originally created using the old style. In some aspects, due to the expertise of the main coder and ORACLE TM It was decided to release JAVA approximately every six (6) months TM A new version of JAVA TM The previous version is not fully backward compatible, so choose JAVA TM and related technologies. However, various scanners are already available for other languages, both for API deprecation and for security and stability concerns. TM Multiple languages may be supported that can be easily handled by the agent 208 and updater system 216 .

[0083] Figure 5 1 illustrates an example updater system 500 according to some aspects. The updater system 500 may include Figure 1 The illustrated updater system 118 and / or Figure 2 The updater system 216 may have one or more features that are the same or similar to those shown. Figure 5 As shown, the updater system 500 may include at least one rule engine 502 and a handler repository 504 in electronic communication with the rule engine 502 via a handler repository communication channel 506. The handler repository 504 may include a plurality of handlers 504. For example, the plurality of handlers may include a first handler 508a, a second handler 508b, a third handler 508c, and a fourth handler 508d. In some aspects, the updater system 500 may also include an updater agent 510 in electronic communication with the rule engine 502 via an updater system communication channel 512 and a firewall 514. The updater agent 510 may communicate with the rule engine 502. Figure 2 Agent 208, Figure 2 Updater Agent 250, Figure 1 The first agent 108a and / or Figure 1 The updater system communication channel 512 can be the same as or at least similar to the second agent 108b. Figure 2 Updater system communication channel 218 and / or Figure 1 The firewall 514 can be the same as or at least similar to the updater system communication channel 120b. Figure 2 The illustrated first firewall 220 and / or Figure 1 The first firewall 122 is the same or at least similar.

[0084] In some aspects, the rule engine 502 can be a multi-core processor and include 16 gigabytes (GB) or more of base system random access memory (RAM). The updater agent 510 can include a hierarchical system with a multi-core threaded system and one (1) GB or more of RAM. In some aspects, the rule engine 502 can be deployed in a cloud network. The rule engine 502 can be configured to select one or more handlers 508 for updating one or more unupdated code strings in a plurality of code strings associated with a file (e.g., a project file) based on a set of one or more rules. For example, the rule engine 502 can receive a merged project file (e.g., a merged output) from the updater agent 510. The project file can be packaged and organized from one or more scanners, as described herein. Additional information about the customer who owns the project can be loaded from an enterprise resource planning (ERP) system.

[0085] The rule engine 502 can be configured to receive one or more code strings from a project file. The one or more code strings can include one or more unupdated code strings. Upon receiving the one or more code strings, the rule engine 502 can select one or more handlers for updating the one or more unupdated code strings. The rule engine 502 can use one or more scanner wrapper messages with one or more rules included in the project file to select one or more handlers 508 for updating the one or more unupdated code strings. For example, before selecting the one or more handlers 508, the rule engine 502 can receive a plurality of code strings associated with the project file from a scanner. Each of the plurality of code strings can include a scanned code string, each scanned code string having one or more scanner wrapper messages containing one or more rules associating each of the one or more handlers 508 with updating at least one unique unupdated code string. The scanned code strings can enable the rule engine 502 to identify one or more unupdated code strings from the plurality of code strings for updating. In some aspects, the rules engine 502 may receive a plurality of code strings associated with a project file from a scanner, which may include the rules engine 502 receiving an indication of one or more non-updated code strings in the plurality of code strings from the scanner and identifying the one or more non-updated code strings in the plurality of code strings based on the indication.

[0086] Figure 6 1 illustrates a conceptual example of a scanner wrapper message 600 included in a project file according to some aspects. Figure 6 As shown, the scanner wrapper message 600 includes multiple field names 602. A first field 604 named "classDef" can identify the contents of a source file or project file. A second field 606 named "results" can provide a collated list of parsed output from one or more of the various scanners and can include additional details for processing. A third field 608 named "resultsentry" can indicate that the second field 606 (named "results") can have one or more result entries. Each entry can have additional data included in a fourth field 610 associated with the entry. The values of the result entries can be matched by the rules engine 502 to determine which handler of the multiple handlers 508 to call. The scanner wrapper message 600 can also include additional fields. These additional fields can be used by the communication layer to reassemble internal data objects for processing (third party libraries, primary conversion libraries (e.g., by DROOLS TM The main JSON conversion library used) is used by the updater agent 510 to determine which source files to write the updated output back to for DROOLS TM For use by DROOLS TM , reporting system, billing system, etc. TM system, but it should be understood that DROOLS TM The system is merely an example system implemented by or included within the rules engine 502, and other similar or similar systems may additionally or alternatively be implemented or used.

[0087] After receiving the project file from the updater agent 510, the rule engine 502 can use the configured rules to determine which one or more handlers 508 should be called on which source files of the project file, when each of the one or more handlers 508 can be called, and the order in which each of the one or more handlers 508 is called. In some aspects, the rule engine 502 can select each handler 508 on a per-rule / handler basis. In some aspects, a rule can trigger multiple handlers. In some aspects, the selected (e.g., called) handler can call additional handlers. In some aspects, a rule can also set conditions for other rules to be called when the processing of a given rule is completed. The rule engine 502 can provide information for each handler during selection, including the result that caused the handler to be called, the name of the rule being called, the source file to be modified, etc. In some aspects, the rules engine 502 may also provide information to the billing system during the selection of each handler, including the rule or rules that were called, the handler or handlers that were selected, the number of instances updated by the handlers, the name of the project file being processed by the updater system 500, the source file name, the effort level of each selected handler, and the like.

[0088] Figure 7 1 illustrates a conceptual example of a rule 700 for use with a primary handler according to some aspects. The rule 700 can be used to select one or more handlers from the plurality of handlers 508 for updating one or more code strings of a project file. In some aspects, the rule 700 can be used with a primary handler. Figure 7 As shown, rule 700 may include rule name 702 (e.g., "java / lang / Integer:: <init>(I)V”), a search string 704 (e.g., “news\\s+(?:java\\.lang\\.)?Integer\\(”), such as a stylized search string based on a regular expression (regular expression), and a replacement string 706 (e.g., “Integer.valueOf”), such as a stylized replacement string.

[0089] The rule engine 502 may also be configured to instruct at least one handler 508 among the one or more handlers to scan multiple code strings, identify at least one non-updated code string uniquely associated with the at least one handler from the one or more non-updated code strings based on the scanned code strings, and update the at least one non-updated code string identified by the at least one handler. For example, the multiple handlers 508 may include a variety of different handlers. In some aspects, one or more handlers may include a core / basic handler API, such as a rule action handler ("core handler"). The core handler may handle updates to the source code of a project file. The core handler may update one or more code strings of a project file based on one or more rules determined by the rule engine 502. The core handler is typically invoked by the rule engine 502 via the action section of a triggered rule, although the core handler may also or alternatively be invoked by other handlers. In some aspects, one or more handlers may include an update interface handler. The update interface handler provides a consistent API for accessing a set of different classes that can be used to provide solutions to a specific set of problems. The update interface handler may define one or more methods that all core handlers invoked by the rule engine 502 must implement. In some aspects, the rule engine 502 instructing at least one handler 508 of the one or more handlers to update at least one unupdated code string may include instructing at least one handler 508 to update at least one of the following items: the syntax of the unupdated code string, the variables of the unupdated code string, or the objects of the unupdated code string.

[0090] In some aspects, upon receiving an instruction from the rule engine 502, one or more of the handlers 508 may receive access to multiple code strings associated with a file from the rule engine, wherein the multiple code strings may include one or more non-updated code strings. The one or more handlers 508 may also scan the multiple code strings, identify at least one non-updated code string uniquely associated with the handler based on the scan of the multiple code strings, and update the at least one non-updated code string identified by the handler for display on a display screen. For example, when a core handler receives a call from the rule engine 502 to update one or more code strings of a project file (e.g., the source code of the project file), the core handler may receive one or more target parameters and one or more scan result parameters. The one or more target parameters may include one or more objects representing the source code file being processed and may include the content of the source code file. The one or more scan result parameters may include parsed and modified output messages from the scanner. The one or more scan result parameters may be used as "lookup keys" to determine which rule is being processed and any associated information from the scanner and the source file. In some aspects, the core handler may return nothing because the update target includes the applicable updates applied.

[0091] In some aspects, the rule engine 502 instructing at least one of the one or more handlers to update at least one non-updated code string may include the rule engine 502 instructing at least one of the one or more handlers to update at least one non-updated code string from an initial version of the code to an updated version of the code. For example, the initial version of the code may be a previous version of the code (e.g., a version of the code that is not the latest version of the code) and the updated version of the code may be the latest version of the code. In some aspects, the updated version of the code may be a version of the code that is a next version of the code that is immediately adjacent to the initial version of the code.

[0092] In some aspects, update handlers may share certain base functionality with each other. An abstract updater (e.g., an abstract updater class) may use a shared "base" class (e.g., a standard OOP body) defined with shared / common functionality. In some aspects, an abstract updater constructor may be used by and only accessed by subclasses / implementation classes, and therefore have a protected scope. To update code, the abstract updater constructor may use a rule parameter (e.g., a string) and a difficulty parameter (e.g., indicated by an integer), a search string parameter, and a replacement string parameter. The rule parameter may be used for logging purposes and may include the name of the rule being processed. The difficulty parameter may include the difficulty of the rule being processed and may be defined by the rules engine 502 or at a specific handler level. The search string parameter may include a string that may be converted to a JAVA TM A stylized regular expression for searching the target source file for source code that needs to be modified. The stylization may include the locations of variables that must be used in the replacement code. The replacement string parameter may include the stylized code string used to replace the selected source code. The stylization may include the locations where variables read from the selected code are to be inserted.

[0093] Abstract updater builds search string handler that can convert styled search string into regular expression (e.g., JAVA TM A regular expression string that selects any defined variable or method call from the selected text / code in the search source file. To update code, the AbstractUpdater builds a search string handler that can use a search string (string) parameter and a code type (only JAVA TM ) (Boolean) parameter. The search string parameter may include a pattern object (e.g., a regular expression pattern object, a JAVA TM The code type only (Boolean) parameter can include whether to allow only code types (e.g., JAVA TM When searching for identifiers (such as variable names or class names), you can use the code-only type parameter. The abstract updater build search string handler can return a regular expression (for example, JAVA TM Regular expressions), which can be used to build pattern objects for scanning and selecting source code from source files.

[0094] Abstract updater builds search pattern handlers that can convert stylized search strings into regular expressions (e.g., JAVA TM Regular expression) pattern object that can select any defined variable or method call from the selected text / code in the search source file. To update code, the AbstractUpdater builds the search pattern handler which can use the search string parameter and the code type (JAVA only) TM ) (Boolean) parameter. The search string parameter may include a pattern object (e.g., a regular expression pattern object, a JAVA TM The code type only (Boolean) parameter can include whether to allow only code types (e.g., JAVA TM An indication of the characters that are valid in identifiers. When searching for identifiers (such as variable names or class names), the code-only type parameter can be used. The abstract updater build search pattern handler can return a code-only type pattern object (e.g., JAVA TM pattern object) for scanning and selecting source code from source files.

[0095] The AbstractUpdaterGetCustomerInfo handler can load billing and other details for the project being processed. To update code, the AbstractUpdaterGetCustomerInfo handler can include no parameters. Relevant information (such as the customer's lookup code) can be loaded from the handler state. The AbstractUpdaterHandleRuleHandler can be an implementation of the update handler's handle rules and can be defined in the UpdaterHandler interface. The AbstractUpdaterHandleRuleHandler can set the handler's state to the appropriate pre-handle and post-handle. Furthermore, the AbstractUpdaterHandleRuleHandler can store the updated source code text in the target, as appropriate. The AbstractUpdaterDoHandleRuleHandler can be an implementation of the API to be implemented by a subclass / child. The child implementation can handle the actual updates to the source code. The AbstractUpdaterDoHandleRuleHandler can include a scan result parameter, which can be a parsed and modified output message from the scanner. This message can serve as the "lookup key" for the rule being processed, along with any associated information from the scanner, and in some cases, as the source file. The AbstractUpdaterDoHandleRuleHandler can be used to update the state of the handler and target (using source code). The AbstractUpdaterCompleteDispositionRuleHandler may return nothing, as the update handler and target may have already applied applicable updates. The AbstractUpdaterCompleteDispositionHandler may be set by the handler implementation when update processing is complete. By default, the AbstractUpdaterCompleteDispositionHandler may return "true", but this may be overridden by the implementation handler when special circumstances require. The AbstractUpdaterCompleteDispositionHandler may return a Boolean value, for example, whether the handler has completed processing the rule or whether additional processing (or disposal by another handler) is required. The AbstractUpdaterSkippedHandler may be set by the handler implementation if the AbstractUpdaterSkippedHandler must skip any code that the handler is defined as callable. This may be possible when a variable needs to be updated but cannot be located in the supplied source file. The AbstractUpdaterSkippedHandler may return a Boolean value if the handler must skip handling a triggered rule in a given source file.

[0096] The search string parameter may include a stylized search string to construct a pattern object (e.g., a regular expression pattern object, a Java TM Regular expression pattern object). The code type only (boolean) parameter can include whether to allow only code types (e.g., JAVA TM When searching for identifiers (such as variable names or class names), the code-only type parameter can be used. The abstract updater build search pattern can return code-only type pattern objects (e.g., JAVA TM pattern object) for scanning and selecting source code from source files.

[0097] The update handler can be an implementation of the update handler interface and can extend from the abstract updater handler and share functionality with the abstract updater handler. The update handler can be called by the rule engine 502 to handle the action of the rule. For example, the update handler can receive billing information, customer details and / or operating mode (e.g., scope / quote vs. update) from an external database (e.g., a repository). As another example, the update handler can receive information about the rule being called, the customer being processed and / or the object containing the source code to be updated from the rule engine 502. As yet another example, the update handler can send the updated code, a count of the number of updates applied, a rate for each update, and / or a sample of calls to the rule engine 502.

[0098] In some aspects, handlers can be grouped into levels. For example, a level one handler (such as a simple updater handler) can be an updater handler that performs a simple search and replace that preserves the contents of one or more variables. A simple updater handler can be used when simple search and replace code is sufficient. Figure 9A 1 illustrates a conceptual example of a simple updater handler 900 according to some aspects. The simple updater handler 900 may include a rule name 902 (e.g., "java / lang / Integer:: <init>(I)V”), a search expression 904 (e.g., “news\\s+(?:java\\.lang\\.)?Integer\\(%VAR%\\)”, such as a stylized search expression, and a replacement expression 906 (e.g., “Integer.valueOf\\(%VAR%\\)”), such as a stylized replacement string. Figure 9B 1 illustrates a conceptual example of an input code 930 to be updated by the simple updater handler 900 according to some aspects. Figure 9B As shown, the input code 930 includes a first instance 932 of the searched code string, a second instance 934 of the searched code string, a third instance 936 of the searched code string, and a fourth instance 938 of the searched code string. Figure 9C 1 illustrates a conceptual example of output code 950 previously updated by the simple updater handler 900 according to some aspects. Figure 9C As shown, output code 950 includes a first instance of the replacement expression 952, a second instance of the replacement expression 954, a third instance of the replacement expression 956, and a fourth instance of the replacement expression 958. Simple update handler 900 can receive input 930 and update input code 930 to produce output code 950. For example, simple update handler 900 can update first instance 932 of the search expression to first instance 952 of the replacement expression, update second instance 934 of the search expression to second instance 954 of the replacement expression, update third instance 936 of the search expression to third instance 956 of the replacement expression, and update fourth instance 938 of the search expression to fourth instance 958 of the replacement expression.

[0099] In some aspects, the simple updater handler 900 can perform an intelligent search for string patterns that match a defined search expression 904 in a source code file. The search expression 904 can be defined in a called rule and can be passed to one or more handlers 508. When a code segment that matches the search expression has been found, one or more variables (e.g., if any variables are defined in the search expression 904) can be identified and selected. The matching source code (e.g., a code string) is then selected for replacement. A code string is then constructed to replace the matching code string (e.g., a code segment), wherein any identified variables are inserted into the replacement code segment as needed. The original code segment is then replaced by the generated code segment 906. In some aspects, when the original code segment is replaced by the generated code segment 906, the replacement count can be incremented.

[0100] In some aspects, for example, the aforementioned process can be repeated until no more matches are found. Once the replacement is complete, the updated code can be stored in the previously passed object holding the source code. The object can also be updated with the count and any other information for later processing and display.

[0101] As another example, a secondary handler (such as a simple API updater handler), similar to the simple updater handler, can perform a search and replace, but can also perform a basic check on the object type of the target object in the selected source code. In some aspects, the simple API updater handler can search for uses of the target API, but can also check that the call is attached to an object of the appropriate type before modifying the source code. Figure 10A A conceptual example of a level 2 API updater handler 1000 is illustrated in accordance with some aspects. In some aspects, the simple API updater handler 1000 can be a level 2 handler. The simple API updater handler 1000 can include a rule name 1002 (e.g., "java / io / File::toURL()Ljava / net / URL"), a search expression 1004 (e.g., "%VAR%\\.toURL\\(\\)"), such as a stylized search expression, a replacement expression 1006 (e.g., "%VAR%.toURI().toURL()")"), such as a stylized replacement string, and an object type 1008 (e.g., "File"). Figure 10B 10 illustrates a conceptual example of an input code 1030 to be updated by the Simple API Updater handler 1000 according to some aspects. Figure 10B As shown, the input code 1030 includes a first instance 1032 of a search expression, a second instance 1034 of a search expression, and an object type 1036 . Figure 10C Illustrated is a conceptual example of output code 1050 previously updated by the Simple API Updater Processor 1000 according to some aspects. Figure 10C As shown, output code 1050 includes an instance of a search expression 1052, an object type 1054, and an instance of a replacement expression 1056. The simple API update handler 1000 may receive input 1030 and update the input code 1030 to generate output code 1050. For example, the simple API update handler 1000 may update the instance of the search expression 1032 to an instance of the replacement expression 1055.

[0102] In some aspects, the simple updater handler 1000 can perform an intelligent search for the use of the API via a defined search expression 1004. When a code segment that matches the search expression 1004 has been found, one or more variables can be identified and selected (if any variables are defined in the search expression 1004). One or more variables that are calling the API can be identified, and an intelligent search can be performed to determine the object type 1008. The search can include checking the definition in the source code of the file. If the object type 1008 cannot be determined, or it cannot be determined that the object type 1008 is a matching type, the update can be skipped and the next use can be searched. If the object type 1008 that calls the API matches the expected object type 1008, the code with the API call can be selected for replacement. A code string can then be constructed to replace the matching code segment, wherein any identified one or more variables are inserted into the replacement code segment as needed. The generated code segment can then be used to replace the original code segment, and the replacement count can be incremented.

[0103] In some aspects, for example, the aforementioned process can be repeated until no more matches are found. Once the replacement is complete, the updated code can be stored in the previously passed object holding the source code. The object can also be updated with the count and any other information for later processing and display.

[0104] As another example, for a tertiary handler, such as a big decimal handler (e.g., java.math.BigDecimalHandler), several APIs may have been deprecated but may not have been marked for removal. New APIs may utilize objects that were recently defined in the language java.math.RoundingMode (e.g., JAVA TM Therefore, the target source file may need updated imports and may require more significant modifications than a simple search and replace.

[0105] For a third-level handler, the replaced API may have one or more parameters, one or more of which may be replaced with a different value or object, such as the original parameter value calculated using a lookup or other means. The handler may determine which parameter to replace and then calculate the new parameter. Figure 11A 1 illustrates a conceptual example of input code 1100 for updating using a three-level processing procedure according to some aspects. Figure 11A As shown, input code 1100 may include an object type 1102 (eg, "BigDecimal") and a search expression 1104 (eg, "bd.setScale(5, BigDecimal.ROUND_HALF_UP)"), such as a stylized search expression. Figure 11B 1 illustrates a conceptual example of output code 1150 after updating input code 1100 using a three-stage processing program in accordance with some aspects. Figure 11B As shown, the output code 1150 may include an object type 1152 (eg, "BigDecimal") and a replacement expression 1154 (eg, "RoundingMode.HALF_UP"), such as a stylized replacement expression. Figure 12A 1 illustrates a conceptual example of input code 1200 for updating using a three-level processing procedure according to some aspects. Figure 12A As shown, input code 1200 may include an object type 1202 (eg, "BigDecimal") and a search expression 1204 (eg, "bd.setScale(5,3);"), such as a stylized search expression. Figure 12B 12 illustrates a conceptual example of output code 1250 after updating input code 1200 using a three-stage processing program in accordance with some aspects. Figure 12B As shown, the output code 1250 may include an object type 1252 (eg, "BigDecimal") and a replacement expression 1254 (eg, "RoundingMode.valueOf(3))"), such as a stylized replacement expression. Figure 13A 13 illustrates a conceptual example of input code 1300 for updating using a three-level processing program according to some aspects. Figure 13A As shown, input code 1300 may include an object type 1302 (eg, "BigDecimal") and a search expression 1304 (eg, "bd.setScale(5, getRoundingMode())"), such as a stylized search expression. Figure 13B 13 illustrates a conceptual example of output code 1350 after updating input code 1300 using a three-stage processing program in accordance with some aspects. Figure 13B As shown, the output code 1350 may include an object type 1352 (eg, "BigDecimal") and a replacement expression 1354 (eg, "RoundingMode.valueOf(getRoundingMode())"), such as a stylized replacement expression.

[0106] In some aspects, the three-level processing program can perform an intelligent search for the use of the API via a generated search expression. When a code segment that matches the search expression is found, one or more variables (if any) can be identified and selected. The variable that is calling the API can be identified, and an intelligent search can be performed to determine whether the type is, for example, "BigDecimal". The search can include checking the definition in the source code of the file. If the object type cannot be determined, or it cannot be determined that the object type is a matching type, the update is skipped and the next use is searched. If the object type that calls the API matches (in this case, "BigDecimal"), the code with the API call can be selected for replacement. A string for replacing the matching code segment can then be constructed, wherein any identified variables are inserted into the replacement code segment as needed. As part of the replacement, the call of the required "RoundingMode" can be determined. In some aspects, the original code segment can then be replaced with the generated code segment, and the replacement count can be incremented.

[0107] In some aspects, for example, the aforementioned process can be repeated until no more matches are found. Once the replacement is complete, the updated code can be stored in the previously passed object holding the source code. The object can also be updated with the count and any other information for later processing and display.

[0108] For the fourth level handler (e.g., AccessibleObjectIsAccessibleHandler), for example, in JAVA TM In version 9, the API "java / lang / reflect / AccessibleObject::isAccessible()Z" may have been deprecated and replaced with "java / lang / reflect / AccessibleObject::canAccess(object)Z." The old API may not take parameters and may not be called on objects that can be passed to the API. The level 4 handler may need to determine what object in the source code should be passed to the new API, and if so, generate new code using the determined source object. Figure 14A 14 illustrates a conceptual example of input code 1400 for updating using a four-level processing procedure according to some aspects. Figure 14A As shown, the input code 1400 may include a search expression 1402 (eg, "field.isAccessible()"), such as a stylized search expression. Figure 14B 14 illustrates a conceptual example of output code 1450 after updating input code 1400 using a four-stage processing program in accordance with some aspects. Figure 14B As shown, the output code 1450 can include a search expression 1452 (e.g., "source"), such as a stylized search expression, and a replacement expression 1454 (e.g., "canAccess(source))"), such as a stylized replacement expression. In some aspects, calls to deprecated APIs can be identified. The name of a variable used to call an object can be identified, and then the declaration of the variable can be identified. From the variable declaration, a reference to the source object used for the call can be determined. The reference can then be passed as a parameter to the new API in the replacement code. It should be noted that in some cases, the source object cannot (e.g., should not) be passed. The fourth level handler can recognize these conditions and pass a "null" value instead.

[0109] For a level five handler (e.g., SQLSlammerHandler), for example in JAVA TM In the , SQL statements may be used inappropriately. SQL "PreparedStatements" can be used in at least some situations where coders use SQL statements. It should be noted that such issues may not be deprecation issues, but rather may be issues that can be detected by static code analyzers (including SONARQUBE) TM ) detects security, performance, and "code smell" issues. Scanners (such as SONARQUBE TM Scanner) can include one or more line numbers and one or more character offsets in results and reports. Figure 15A 1 illustrates a conceptual example of input code 1500 for updating using a five-stage process according to some aspects. Figure 15A As shown, input code 1500 may include a search expression 1502 (e.g., "Statement s=connection.createStatement()"), such as a stylized search expression, a first object type 1504 (e.g., "newUserName"), and a second object type 1506 (e.g., "+userId"). In some aspects, first object type 1504 may be a first variable name and second object type may be a second variable name. Figure 15B Illustrated is a conceptual example of output code 1550 after updating input code 1500 using a four-stage processing program in accordance with some aspects. Figure 15B As shown, the output code 1550 may include different SQL objects java.sql.PreparedStatement, a new SQL command string, a first object type 1504 (e.g., "newUserName"), and a second object type 1506 (e.g., "userId"). In some aspects, the location where the statement is created can be identified. The SQL query can be identified using one or more variables identified and selected. The SQL query for the prepared statement can then be generated using "?" inserted in the appropriate locations of the one or more variables. Code that calls the appropriate setup calls can then be generated. Once the replacement code is generated, the replacement code can be inserted into the location of the problematic code in the source code file. In some aspects, the output code 1550 may include a change to the statement type, as shown in the first updated code string 1552 (e.g., "ps=connection.prepareStatement("Update name=? where id=?")). For example, Figure 15A The input code 1500 includes the statement type "statement s". After updating the input code 1500 to generate the output code 1550, as shown Figure 15B As shown in FIG1 , the statement type is changed to "finalPreparedStatement ps". In some aspects, the first updated code string 1552 may include an input string (e.g., "("Update name=? whereid=?")"). Additionally or alternatively, the output code 1550 may include a change in the input string from multiple string fragments to a single string, as shown in the second updated code string 1554. In some aspects, one or more variable names may be changed from the input code 1500 to the output code 1550. For example, Figure 15A As shown, the first object type 1504 may include a first variable name (e.g., "newUserName") and the second object type 1506 may include a second variable name (e.g., "userId"). After updating one or more code strings, the first variable name and / or the second variable name of the updated code 1550 may have been updated to "?" Figure 15B shown.

[0110] In some aspects, a report can be provided. A reporter can collect data sent by the rule engine 502 to the updater agent 510, and can format the sent data (e.g., in PDF form) for general viewing on a computer screen or via a printout. By default, the sent data can be saved to a local hard disk for display and retrieval. Typically, the input to the reporter can be the output of the rule engine 502 from the updater agent 510, and the output can be one or more of an UpdateReport, a ScopeReviewReport, an OpenSourceReport, or an ExecutionReport. In some aspects, one or more of "UpdateReport", ScopeReviewReport, OpenSourceReport, and / or ExecutionReport can illustrate one or more changes, modifications, and / or updates to one or more code strings of a project file from an initial version of the code to a final or updated version of the code.

[0111] In some aspects, after the one or more handlers 508 update at least one non-updated code string identified by at least one of the one or more handlers, the rules engine 502 may receive an indication from the one or more handlers 508 that the at least one non-updated code string uniquely associated with the at least one handler is an updated code string. In some aspects, the one or more handlers 508 may use the indication to provide the updated code string to the rules engine 502. For example, once each selected handler completes processing, the rules engine 502 may receive an updated source file from the one or more handlers and send the updated source file back to the updater agent 510 for the updater agent 510 to write the project file back to the project source (e.g., Figure 2 Repository 222, Figure 1 The first repository 114a, Figure 1 The second repository 114b of the rule engine 502 can then be reviewed and / or recompiled to produce updated versions of the project files. In some aspects, the rule engine 502 can generate updated versions of the project files for display on a display screen. Subsequently, the updated versions of the project files can be displayed on the display screen for viewing. For example, the rule engine 502 can send processing and accounting data including project files with updated source code to the updater agent 510 for reporting purposes. Additionally or alternatively, the rule engine 502 can send billing and processing data to an ERP system for tracking and recording purposes. Depending on the configuration, the rule engine 502 can access the ERP system to determine whether the update should actually be applied or whether an approximate effort level should be estimated for an approximate quote.

[0112] Figure 8 800 according to some aspects. The updated project file can be sent from the rule engine 502 to the updater agent 510 via the updater system communication channel 512 and the firewall 514. Figure 8 As shown, updated project file 800 includes one or more updates 802, including a first update 804, a second update 806, and a third update 808. In some aspects, each of the one or more updates 802 can be the same update, such as "Integer, valueOf." Alternatively, at least one of the one or more updates 802 can be a unique update or an update that is different from the remaining one or more updates.

[0113] In some aspects, one or more rules can be associated with updating at least one unique non-updated code string in one or more processing programs. For example, each of a plurality of processing programs 508 can be created based on each rule. A rule can be triggered by the content of a result, wherein each result triggers zero or more rules. In some aspects, not all results can have rules and / or processing programs configured for them. A result without a rule or processing program can be referred to as a "skip" result. When processing program 508 is available, the associated result entry in question can be put into an "in progress" list until the process is complete.

[0114] Figure 16 is a block diagram illustrating an example of a hardware implementation for a rules engine 1600 employing a processing system 1614 according to some aspects. For example, the rules engine 1600 may correspond to the Figure 1 、 Figure 2 and Figure 5 Any entity shown and described in any one or more of .

[0115] The rules engine 1600 can be implemented using a processing system 1614 including one or more processors 1604. Examples of processors 1604 include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functions described throughout this disclosure. In various examples, the rules engine 1600 can be configured to perform any one or more of the functions described herein. That is, the processor 1604 as used in the rules engine 1600 can be used to implement any one or more of the processes described herein. In some cases, the processor 1604 can be implemented via a baseband or modem chip, and in other embodiments, the processor 1604 itself can include multiple devices distinct and separate from the baseband or modem chip (e.g., in such scenarios, it can work in conjunction to implement aspects discussed herein). As described above, various hardware arrangements and components other than the baseband modem processor can be used in embodiments, including RF chains, power amplifiers, modulators, buffers, interleavers, adders / summers, etc.

[0116] In this example, processing system 1614 can be implemented using a bus architecture, generally represented by bus 1602. Depending on the specific application and overall design constraints of processing system 1614, bus 1602 can include any number of interconnecting buses and bridges. Bus 1602 communicatively couples various circuits including one or more processors (generally represented by processor 1604) and computer-readable media (generally represented by computer-readable storage media 1606). Bus 1602 can also link various other circuits, such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art and therefore will not be described further. Bus interface 1608 provides an interface between bus 1602 and transceiver 1610. Network interface 1610 provides means for communicating with various other devices via a transmission medium (e.g., a data interface). In some aspects, network interface 1610 can be used to receive a data file containing one or more unupdated code strings. In some aspects, network interface 1610 can be used to transmit a data file containing one or more updated code strings. A user interface 1612 (e.g., a keyboard, display, speaker, microphone, joystick) may also be provided. In some aspects, the user interface 1612 may be used to display the code of a data file containing one or more unupdated code strings. In some aspects, the user interface 1612 may be used to display the code of a data file containing one or more updated code strings.

[0117] The processor 1604 is responsible for managing the bus 1602 and general processing, including executing software stored on the computer-readable storage medium 1606. The software, when executed by the processor 1604, causes the processing system 1614 to perform the various functions described herein for any particular device. The computer-readable storage medium 1606 may also be used to store data that is manipulated by the processor 1604 when executing the software.

[0118] One or more processors 1604 in the processing system can execute software. Software should be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subroutines, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. The software may reside on a computer-readable storage medium 1606.

[0119] Computer-readable storage medium 1606 can be a non-transitory computer-readable medium. By way of example, non-transitory computer-readable media include magnetic storage devices (e.g., hard disks, floppy disks, magnetic strips), optical disks (e.g., compact disks (CDs) or digital versatile disks (DVDs)), smart cards, flash memory devices (e.g., cards, sticks, or key drives), random access memories (RAMs), read-only memories (ROMs), programmable ROMs (PROMs), erasable PROMs (EPROMs), electrically erasable PROMs (EEPROMs), registers, removable disks, and any other suitable medium for storing software and / or instructions that can be accessed and read by a computer. Computer-readable storage medium 1606 can reside in processing system 1614, outside processing system 1614, or distributed across multiple entities including processing system 1614. Computer-readable storage medium 1606 can be embodied in a computer program product. By way of example, a computer program product can include a computer-readable medium in packaging materials. Those skilled in the art will recognize how to best implement the described functionality presented throughout this disclosure based on the specific application and the overall design constraints imposed on the entire system.

[0120] In some aspects of the present disclosure, processor 1604 may include a selection circuit system configured for various functions. For example, processor 1604 may include a selection circuit system 1640 that is configured to select one or more processing programs for updating one or more unupdated code strings in a plurality of code strings associated with a file according to a set of one or more rules. A set of one or more rules can associate each of the one or more processing programs with updating at least one unique unupdated code string. Selection circuit system 1640 can be configured to execute selection instructions 1650 stored in computer-readable storage medium 1606 to implement any one of one or more of the functions described herein.

[0121] The processor 1604 may further include an instruction circuit system 1642 configured to instruct at least one of the one or more processing programs to scan a plurality of code strings, identify at least one non-updated code string uniquely associated with the at least one processing program from among the one or more non-updated code strings based on the scanning of the plurality of code strings, and update the at least one non-updated code string identified by the at least one processing program. The instruction circuit system 1642 may be configured to execute instruction instructions 1652 stored in the computer-readable storage medium 1606 to implement any one or more of the functions described herein.

[0122] Processor 1604 may further include receiving circuitry 1644 configured to receive, from at least one processing program, an indication that at least one non-updated code string uniquely associated with the at least one processing program is an updated code string. Receiving circuitry 1644 may also be configured to receive, from a scanner, a plurality of code strings associated with a file. Each of the plurality of code strings may include a scanned code string. Receiving circuitry 1644 may be configured to execute receiving instructions 1654 stored in computer-readable storage medium 1606 to implement any one or more of the functions described herein.

[0123] Processor 1604 may further include a generating circuit system 1646 configured to generate at least an updated code string for display on a display screen. Generating circuit system 1646 may be configured to execute generating instructions 1656 stored in computer-readable storage medium 1606 to implement any one or more of the functions described herein.

[0124] Processor 1604 may include further identification circuitry 1648 configured to identify one or more non-updated code strings from the plurality of code strings. Identification circuitry 1648 may be configured to execute identification instructions 1658 stored in computer-readable storage medium 1606 to implement any one or more of the functions described herein.

[0125] Figure 17 1700 is a flow chart of a method implemented by a rule engine for updating one or more code strings according to some aspects. As described below, some or all of the illustrated features may be omitted in certain implementations within the scope of the present disclosure, and some of the illustrated features may not be required for implementation of all aspects. In some examples, the method may be implemented as described herein and in Figure 16 The rules engine 1600 illustrated in FIG. 1 is executed by a processor or processing system, or by any suitable means for performing the described functions.

[0126] At block 1702, the rules engine 1600 may select one or more handlers for updating one or more non-updated code strings from a plurality of code strings associated with a file based on a set of one or more rules. In some aspects, the set of one or more rules associates each of the one or more handlers with updating at least one unique non-updated code string. At block 1704, the rules engine 1600 may instruct at least one of the one or more handlers to scan the plurality of code strings, identify at least one non-updated code string from the one or more non-updated code strings that is uniquely associated with the at least one handler based on the scanning of the plurality of code strings, and update the at least one non-updated code string identified by the at least one handler.

[0127] In some aspects, instructing at least one of the one or more handlers to update at least one unupdated code string may include instructing the at least one handler to update at least one of the following: a syntax of the unupdated code string, a variable of the unupdated code string, or an object of the unupdated code string. In some aspects, the rule engine 1600 that instructs at least one of the one or more handlers to update at least one unupdated code string may instruct the at least one of the one or more handlers to update the at least one unupdated code string from an initial version of the code to an updated version of the code. For example,

[0128] At block 1706, the rules engine 1600 may receive an indication from the at least one processing program that at least one non-updated code string uniquely associated with the at least one processing program is an updated code string.

[0129] In some aspects, the rules engine 1600 receiving, from the scanner, a plurality of code strings associated with the file may include receiving, from the scanner, an indication of one or more code strings in the plurality of code strings that have not been updated. In some aspects, the updated version may include a version of the code that immediately preceded the initial version of the code. In some aspects, the updated version may include a latest version of the code.

[0130] At block 1708, the rules engine 1600 may generate at least an updated code string for display on a display screen. In some examples, prior to selecting one or more processing programs, the rules engine 1600 may receive a plurality of code strings associated with the file from a scanner, wherein each of the plurality of code strings comprises a scanned code string. In some aspects, the rules engine 1600 receiving the plurality of code strings associated with the file from the scanner may include receiving an indication from the scanner of one or more non-updated code strings in the plurality of code strings. In some aspects, prior to selecting one or more processing programs, the rules engine may further identify the one or more non-updated code strings in the plurality of code strings. In some aspects, the rules engine 1600 identifying the one or more non-updated code strings in the plurality of code strings may be based on the indication.

[0131] In one configuration, the first UE 1600 includes a Figure 17 In one aspect, the aforementioned components may be Figure 16 The processor 1604 is shown configured to perform the functions recited by the aforementioned means. In another aspect, the aforementioned means may be a circuit or any apparatus configured to perform the functions recited by the aforementioned means.

[0132] Of course, in the above examples, the circuit system included in the processor 1604 is provided only as an example, and other components for performing the described functions may be included in various aspects of the present disclosure, including but not limited to instructions stored in the computer-readable storage medium 1606, or in Figure 1 、 Figure 2 and Figure 5 Any of the descriptions and utilizing, for example, Figure 17 Any other suitable means or components of the described processes and / or algorithms.

[0133] Figure 18 1800 is a flow chart of a method for updating one or more code strings implemented by a rule engine according to some aspects. As described below, some or all of the illustrated features may be omitted in certain implementations within the scope of the present disclosure, and some of the illustrated features may not be required for implementation of all aspects. In some examples, the method may be implemented as described herein and in Figure 16 The rules engine 1600 illustrated in FIG. 1 is executed by a processor or processing system, or by any suitable means for performing the described functions.

[0134] At block 1802, the rules engine 1600 may receive a plurality of code strings associated with a file from a scanner. Each of the plurality of code strings may include a scanned code string. In some aspects, the rules engine 1600 may receive the plurality of code strings associated with the file from the scanner before the rules engine 1600 selects one or more handlers. In some aspects, the rules engine 1600 receiving the plurality of code strings associated with the file from the scanner may include receiving an indication from the scanner that one or more of the plurality of code strings are not updated.

[0135] At box 1804, the rule engine 1600 may identify one or more non-updated code strings in a plurality of code strings. In some aspects, the rule engine 1600 may identify one or more non-updated code strings in a plurality of code strings before selecting one or more processing programs. At box 1806, the rule engine 1600 may select one or more processing programs for updating one or more non-updated code strings in a plurality of code strings associated with a file based on a set of one or more rules. In some aspects, a set of one or more rules associates each of the one or more processing programs with updating at least one unique non-updated code string. At box 1808, the rule engine 1600 may instruct at least one processing program of the one or more processing programs to scan a plurality of code strings, identify at least one non-updated code string uniquely associated with the at least one processing program in the one or more non-updated code strings based on the scanning of the plurality of code strings, and update the at least one non-updated code string identified by the at least one processing program.

[0136] In some aspects, instructing at least one of the one or more handlers to update at least one unupdated code string may include instructing the at least one handler to update at least one of the following: a syntax of the unupdated code string, a variable of the unupdated code string, or an object of the unupdated code string. In some aspects, the rules engine 1600 that instructs at least one of the one or more handlers to update at least one unupdated code string may instruct the at least one of the one or more handlers to update the at least one unupdated code string from an initial version of the code to an updated version of the code.

[0137] At block 1810, the rules engine 1600 may receive an indication from the at least one handler that at least one non-updated code string uniquely associated with the at least one handler is an updated code string. In some aspects, the rules engine 1600 receiving a plurality of code strings associated with the file from the scanner may include receiving an indication from the scanner of one or more non-updated code strings in the plurality of code strings. In some aspects, the updated version may include a version of the code immediately preceding the initial version of the code. In some aspects, the updated version may include a latest version of the code. In some aspects, the rules engine 1600 identifying the one or more non-updated code strings in the plurality of code strings may be based on the indication. At block 1812, the rules engine 1600 may at least generate the updated code string for display on a display screen.

[0138] In one configuration, the first UE 1600 includes a Figure 17 In one aspect, the aforementioned components may be Figure 16 The processor 1604 is shown configured to perform the functions recited by the aforementioned means. In another aspect, the aforementioned means may be a circuit or any apparatus configured to perform the functions recited by the aforementioned means.

[0139] Of course, in the above examples, the circuit system included in the processor 1604 is provided only as an example, and other components for performing the described functions may be included in various aspects of the present disclosure, including but not limited to instructions stored in the computer-readable storage medium 1606, or in Figure 1 、 Figure 2 and Figure 5 Any of the descriptions and utilizing, for example, Figure 16 Any other suitable means or components of the described processes and / or algorithms.

[0140] Figure 19 is a block diagram illustrating an example of a hardware implementation for a processing program 1900 employing a processing system 1914 according to some aspects. For example, the processing program 1900 may be Figure 1 、 Figure 2 and Figure 5 In some examples, the processing program 1900 can be any one or more of the first processing program 508a, the second processing program 508b, the third processing program 508c, or the fourth processing program 508d.

[0141] According to various aspects of the present disclosure, an element, any portion of an element, or any combination of elements may be implemented using a processing system 1914 that includes one or more processors 1904. The processing system 1914 may be substantially similar to Figure 16 The processing system 1614 shown is the same as that shown in the figure, including a bus interface 1908, a bus 1902, a processor 1904 and a computer readable storage medium 1906. In addition, the processing program 1900 may include the same as described herein. Figure 16 19. That is, the processor 1904 used in the process 1900 may be used to implement any one or more of the processes described herein.

[0142] In some aspects of the present disclosure, the processor 1904 may include a circuit system configured for various functions. For example, the processor 1904 may include a receiving circuit system 1940, which is configured to receive access to multiple code strings associated with a file from a rule engine. Multiple code strings may include one or more unupdated code strings. The receiving circuit system 1940 may also be configured to receive an indication (e.g., a second indication) that a handler belongs to a group of at least one handler from a rule engine, and the group of at least one handler is selected based on a group of one or more rules for updating at least one unupdated code string in one or more unupdated code strings, and the group of one or more rules associates each of a group of at least one handler with updating at least one unique unupdated code string. The receiving circuit system 1940 may be configured to execute a receiving instruction 1950 stored in a computer-readable storage medium 1906 to implement any one of one or more of the functions described herein.

[0143] The processor 1904 may also include a scanning circuit system 1942 configured to scan a plurality of code strings. The scanning circuit system 1942 may be configured to execute scanning instructions 1952 stored in the computer-readable storage medium 1906 to implement any one or more of the functions described herein.

[0144] The processor 1904 may further include an identification circuit system 1944 configured to identify at least one non-updated code string uniquely associated with the processing program from among the one or more non-updated code strings, for example based on scanning a plurality of code strings. The identification circuit system 1944 may also be configured to execute identification instructions 1954 stored in the computer-readable storage medium 1906 to implement any one or more of the functions described herein.

[0145] In addition, the processor 1904 may include an update circuit system 1946 configured to update at least one non-updated code string identified by the processing program for display on the display screen. The update circuit system 1946 may be configured to execute update instructions 1956 stored in the computer-readable storage medium 1906 to implement any one or more of the functions described herein.

[0146] The processor 1904 may further include a transmission circuit system 1948 configured to transmit an indication (e.g., a first indication) that at least one of the one or more unupdated code strings uniquely associated with the processing program is an updated code string to the rule engine for display on a display screen. The transmission circuit system 1948 may be configured to execute transmission instructions 1958 stored in the computer-readable storage medium 1906 to implement any one or more of the functions described herein.

[0147] Figure 20 1200 is a flowchart of a method for updating one or more code strings implemented by a processing program 1900 according to some aspects. As described below, some or all of the illustrated features may be omitted in certain implementations within the scope of the present disclosure, and some illustrated features may not be required for implementation of all aspects. In some examples, the method may be implemented as described above and in Figure 19 The rules engine 1900 illustrated in FIG. 1 is executed by a processor or processing system, or by any suitable means for performing the described functions.

[0148] At block 2002, processing program 1900 may receive access to a plurality of code strings associated with a file from a rule engine. The plurality of code strings may include one or more unupdated code strings. At block 2004, processing program 1900 may scan the plurality of code strings. At block 2006, processing program 1900 may identify at least one unupdated code string uniquely associated with the processing program in the one or more unupdated code strings based on scanning the plurality of code strings. In some aspects, processing program 1900 may identify at least one unupdated code string uniquely associated with the processing program in the one or more unupdated code strings based on scanning the plurality of code strings. At block 2008, processing program 1900 may update at least one unupdated code string identified by processing program 1900 for display on a display screen. At block 2010, processing program 1900 may transmit to the rule engine a first indication that at least one unupdated code string uniquely associated with the processing program in the one or more unupdated code strings is an updated code string for display on a display screen.

[0149] In one configuration, the processing program 1900 includes instructions for executing Figure 20 In one aspect, the aforementioned components may be Figure 19 The processor 1904 is shown configured to perform the functions recited by the aforementioned means. In another aspect, the aforementioned means may be a circuit or any apparatus configured to perform the functions recited by the aforementioned means.

[0150] Of course, in the above examples, the circuit system included in the processor 1904 is provided only as an example, and other components for performing the described functions may be included in various aspects of the present disclosure, including but not limited to instructions stored in the computer-readable storage medium 1906, or in Figure 1 、 Figure 2 and Figure 5 Any of the descriptions and utilizing, for example, Figure 19 Any other suitable means or components of the described processes and / or algorithms.

[0151] Figure 21 2100 is a flow chart of a method for updating one or more code strings implemented by processing program 1900 according to some aspects. As described below, some or all of the illustrated features may be omitted in certain implementations within the scope of the present disclosure, and some illustrated features may not be required for implementation of all aspects. In some examples, the method may be implemented as described above and in Figure 19 The rules engine 1900 illustrated in FIG. 1 is executed by a processor or processing system, or by any suitable means for performing the described functions.

[0152] At block 2102, processing program 1900 may receive access to a plurality of code strings associated with a file from a rules engine. The plurality of code strings may include one or more non-updated code strings. At block 2104, processing program 1900 may receive a second indication from the rules engine that processing program 1900 belongs to a group of at least one processing programs selected for updating at least one non-updated code string of the one or more non-updated code strings based on a set of one or more rules, the set of one or more rules associating each of the group of at least one processing programs with updating at least one unique non-updated code string. At block 2106, processing program 1900 may scan the plurality of code strings. At block 2108, processing program 1900 may identify, based on scanning the plurality of code strings, at least one non-updated code string uniquely associated with the processing program in the one or more non-updated code strings. In some aspects, processing program 1900 may identify, based on scanning the plurality of code strings, at least one non-updated code string uniquely associated with the processing program in the one or more non-updated code strings.

[0153] At block 2110, processing program 1900 may update for display on a display screen at least one non-updated code string identified by processing program 1900. At block 2112, processing program 1900 may transmit to a rules engine for display on a display screen a first indication that at least one non-updated code string uniquely associated with the processing program among the one or more non-updated code strings is an updated code string.

[0154] In one configuration, the processing program 1900 includes instructions for executing Figure 21 In one aspect, the aforementioned components may be Figure 19 The processor 1904 is shown configured to perform the functions recited by the aforementioned means. In another aspect, the aforementioned means may be a circuit or any apparatus configured to perform the functions recited by the aforementioned means.

[0155] Of course, in the above examples, the circuit system included in the processor 1904 is provided only as an example, and other components for performing the described functions may be included in various aspects of the present disclosure, including but not limited to instructions stored in the computer-readable storage medium 1906, or in Figure 1 、 Figure 2 and Figure 5 Any of the descriptions and utilizing, for example, Figure 21 Any other suitable means or components of the described processes and / or algorithms.

[0156] In a first aspect, a rule engine is provided. The rule engine includes a memory and one or more processors in electronic communication with the memory. The one or more processors are configured to select one or more handlers for updating one or more non-updated code strings from a plurality of code strings associated with a file based on a set of one or more rules, wherein the set of one or more rules associates each of the one or more handlers with updating at least one unique non-updated code string. The one or more processors are further configured to instruct at least one handler of the one or more handlers to: scan a plurality of code strings; identify at least one non-updated code string from the one or more non-updated code strings that is uniquely associated with at least one handler based on scanning the plurality of code strings; and update at least one non-updated code string identified by the at least one handler. The one or more processors are further configured to receive an indication from the at least one handler that the at least one non-updated code string that is uniquely associated with the at least one handler is an updated code string. In addition, the one or more processors are configured to at least generate an updated code string for display on a display screen.

[0157] In a second aspect, alone or in combination with the first aspect, prior to selecting one or more processing programs, the one or more processors are further configured to: receive a plurality of code strings associated with the file from a scanner, wherein each of the plurality of code strings includes a scanned code string; and identify one or more non-updated code strings in the plurality of code strings.

[0158] In a third aspect, alone or in combination with one or more of the first and second aspects, receiving a plurality of code strings associated with a file from a scanner includes: receiving an indication of one or more of the plurality of code strings that have not been updated from the scanner, and identifying the one or more of the plurality of code strings that have not been updated based on the indication.

[0159] In a fourth aspect, alone or in combination with one or more of the first to third aspects, instructing at least one of the one or more handlers to update at least one unupdated code string includes instructing at least one handler to update at least one of the following items: the syntax of the unupdated code string, the variables of the unupdated code string, or the objects of the unupdated code string.

[0160] In a fifth aspect, alone or in combination with one or more of the first to fourth aspects, instructing at least one of the one or more handlers to update at least one non-updated code string includes instructing at least one of the one or more handlers to update at least one non-updated code string from an initial version of the code to an updated version of the code.

[0161] In a sixth aspect, alone or in combination with one or more of the first to fifth aspects, the updated version comprises a version of the code immediately preceding the initial version of the code.

[0162] In a seventh aspect, alone or in combination with one or more of the first to sixth aspects, the updated version comprises the latest version of the code.

[0163] In an eighth aspect, a processing program is provided. The processing program includes a memory and one or more processors in electronic communication with the memory. The one or more processors are configured to receive access to multiple code strings associated with a file from a rule engine, wherein the multiple code strings include one or more unupdated code strings. The one or more processors are also configured to scan the multiple code strings. The one or more processors are further configured to identify at least one unupdated code string uniquely associated with the processing program in the one or more unupdated code strings based on scanning the multiple code strings. In addition, the one or more processors are configured to update at least one unupdated code string identified by the processing program for display on a display screen. The one or more processors are also configured to transmit to the rule engine a first indication that at least one unupdated code string uniquely associated with the processing program in the one or more unupdated code strings is an updated code string for display on a display screen.

[0164] In the ninth aspect, alone or in combination with the eighth aspect, the one or more processors are further configured to receive a second indication from a rule engine that the handler belongs to a group of at least one handler, the group of at least one handler being selected for updating at least one of the one or more unupdated code strings based on a set of one or more rules, the set of one or more rules associating each of the group of at least one handler with updating at least one unique unupdated code string; and in response to receiving the second indication, scan a plurality of code strings, identify at least one unupdated code string in the one or more unupdated code strings that is uniquely associated with the handler based on scanning the plurality of code strings, and update the at least one unupdated code string identified by the handler for display on a display screen.

[0165] In a tenth aspect, alone or in combination with the eighth and ninth aspects, updating at least one unupdated code string comprises updating at least one of the following: a syntax of at least one unupdated code string, a variable of at least one unupdated code string, or an object of at least one unupdated code string.

[0166] In an eleventh aspect, alone or in combination with the eighth to tenth aspects, updating the at least one non-updated code string includes updating the at least one non-updated code string from an initial version of the code to an updated version of the code.

[0167] In a twelfth aspect, alone or in combination with the eighth to eleventh aspects, the updated version comprises a version of the code immediately preceding the initial version of the code.

[0168] In a thirteenth aspect, alone or in combination with the eighth to twelfth aspects, the updated version comprises a version of the code immediately preceding the initial version of the code.

[0169] In a thirty-third aspect, alone or in combination with aspects twenty-seventh to thirty-second, the updated version comprises the latest version of the code.

[0170] In one configuration, a rule engine includes: a component for selecting one or more handlers for updating one or more non-updated code strings from a plurality of code strings associated with a file based on a set of one or more rules (a set of one or more rules associates each of the one or more handlers with updating at least one unique non-updated code string); a component for instructing at least one of the one or more handlers to: scan a plurality of code strings, identify at least one non-updated code string from the one or more non-updated code strings that is uniquely associated with at least one handler based on scanning the plurality of code strings, and update the at least one non-updated code string identified by the at least one handler; a component for receiving an indication from the at least one handler that the at least one non-updated code string uniquely associated with the at least one handler is an updated code string; and a component for at least generating an updated code string for display on a display screen.

[0171] In one aspect, the aforementioned means for selecting one or more processing programs for updating one or more non-updated code strings from a plurality of code strings associated with a file based on a set of one or more rules (a set of one or more rules associates each of the one or more processing programs with updating at least one unique non-updated code string); means for instructing at least one of the one or more processing programs to: scan a plurality of code strings, identify at least one non-updated code string from the one or more non-updated code strings uniquely associated with at least one processing program based on the scanning of the plurality of code strings, and update the at least one non-updated code string identified by the at least one processing program; means for receiving an indication from the at least one processing program that the at least one non-updated code string uniquely associated with the at least one processing program is an updated code string; and means for generating at least an updated code string for display on a display screen may be Figure 16 The processor(s) 1604 is shown configured to perform the functions recited by the aforementioned components. For example, the aforementioned components for selecting one or more processing programs for updating one or more non-updated code strings of a plurality of code strings associated with a file based on a set of one or more rules (a set of one or more rules associating each of the one or more processing programs with updating at least one unique non-updated code string) may include Figure 16 As another example, the aforementioned means for instructing at least one of the one or more processing programs to scan a plurality of code strings, identifying at least one non-updated code string uniquely associated with the at least one processing program among the one or more non-updated code strings based on the scanning of the plurality of code strings, and updating the at least one non-updated code string identified by the at least one processing program may include Figure 16 As another example, the aforementioned means for receiving an indication from at least one processing program that at least one non-updated code string uniquely associated with at least one processing program is an updated code string may include: Figure 16 The receiving circuit system 1644 and the network interface 1610 are shown. As another example, the aforementioned means for at least generating an updated code string for display on a display screen may include Figure 16 The illustrated generating circuitry 1646. In another aspect, the aforementioned means may be a circuit or any device configured to perform the functions recited by the aforementioned means.

[0172] In one configuration, a handler includes a component for receiving access to a plurality of code strings associated with a file from a rule engine, wherein the plurality of code strings include one or more unupdated code strings; a component for scanning the plurality of code strings; a component for identifying at least one unupdated code string from the one or more unupdated code strings that is uniquely associated with the handler based on scanning the plurality of code strings; a component for updating at least one unupdated code string identified by the handler for display on a display screen; and a component for transmitting to the rule engine a first indication that at least one unupdated code string from the one or more unupdated code strings that is uniquely associated with the handler is an updated code string for display on a display screen.

[0173] In one aspect, the aforementioned means for receiving access to a plurality of code strings associated with a file from a rule engine (wherein the plurality of code strings include one or more non-updated code strings); means for scanning the plurality of code strings; means for identifying at least one non-updated code string uniquely associated with a processing program from the one or more non-updated code strings based on scanning the plurality of code strings; means for updating the at least one non-updated code string identified by the processing program for display on a display screen; and means for transmitting to the rule engine a first indication that the at least one non-updated code string uniquely associated with the processing program from the one or more non-updated code strings is an updated code string for display on a display screen may be. Figure 19 The processor(s) 1904 is shown configured to perform the functions recited by the aforementioned components. For example, the aforementioned components for receiving access to a plurality of code strings associated with a file (wherein the plurality of code strings include one or more non-updated code strings) from a rule engine may include: Figure 19 The receiving circuit system 1940 and the network interface 1910 are shown. As another example, the aforementioned component for scanning multiple code strings may include Figure 19 As another example, the scanning circuit system 1942 is shown. As another example, the aforementioned means for identifying at least one non-updated code string uniquely associated with the processing program among the one or more non-updated code strings based on scanning a plurality of code strings may include Figure 19 As another example, the aforementioned component for updating at least one unupdated code string identified by the processing program for display on the display screen may include Figure 19 As another example, the updating circuit system 1946 is shown. As another example, the aforementioned means for transmitting to the rule engine a first indication that at least one of the one or more unupdated code strings uniquely associated with the processing program is an updated code string for display on the display screen may include Figure 19 Shown are transmission circuitry 1948 and network interface 1910. In another aspect, the aforementioned means may be a circuit or any device configured to perform the functions recited by the aforementioned means.

[0174] Within this disclosure, the word "exemplary" is used to mean "serving as an example, instance, or illustration." Any implementation or aspect described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects of the disclosure. Likewise, the term "aspect" does not require that all aspects of the disclosure include the discussed feature, advantage, or mode of operation. The term "coupled" as used herein refers to a direct or indirect coupling between two objects. For example, if object A physically touches object B, and object B touches object C, objects A and C may still be considered to be coupled to each other - even if they are not directly physically touching each other. For example, a first object may be coupled to a second object even if the first object has never been in direct physical contact with the second object. The terms "circuit" and "circuitry" are used broadly and are intended to include: hardware implementations of electrical devices and conductors that, when connected and configured, are capable of performing the functions described in this disclosure, without limitation to types of electronic circuits; and software implementations of information and instructions that, when executed by a processor, are capable of performing the functions described in this disclosure.

[0175] Figures 1-21 One or more of the illustrated components, steps, features, and / or functions may be rearranged and / or combined into a single component, step, feature, or function, or embodied in several components, steps, or functions. Additional stages, components, steps, and / or functions may also be added without departing from the novel features disclosed herein. Figures 1-20 The apparatus, devices and / or components illustrated in the drawings may be configured to perform one or more of the methods, features or steps described herein. The novel algorithms described herein may also be effectively implemented in software and / or embedded in hardware.

[0176] It should be understood that the specific order or hierarchy of steps in the disclosed methods is an illustration of exemplary processes. Based on design preferences, it should be understood that the specific order or hierarchy of steps in the methods may be rearranged. The accompanying method claims present the stages of the various steps in a sample order and are not meant to be limited to the specific order or hierarchy presented unless specifically recited therein.

[0177] The preceding description is provided to enable anyone skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Accordingly, the claims are not intended to be limited to the aspects shown herein, but rather to be consistent with the full scope consistent with the language of the claims, wherein a reference to a stage in the singular is not intended to mean "one and only one" (unless specifically stated as such), but rather "one or more." Unless otherwise specifically stated, the term "some" refers to one or more. A phrase referring to "at least one" of a list of items refers to any combination of those items, including individual members. As an example, "at least one of a, b, or c" is intended to cover: a; b; c; a and b; a and c; b and c; and a, b, and c. All structural and functional equivalents to the stages throughout the various aspects described in this disclosure that are known or later become known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be covered by the claims. In addition, nothing disclosed herein is intended to be dedicated to the public, regardless of whether such disclosure is expressly recited in the claims.< / init> < / init> < / init>

Claims

1. A system comprising: a memory storing a plurality of files including a plurality of code strings; as well as one or more processors in communication with the memory, wherein the one or more processors are configured to: receiving a message indicating the identified problem and a file of the plurality of files including a non-updated code string, using the message to select a handler for updating the non-updated code string, scanning the plurality of code strings, While scanning the plurality of code strings, identifying the non-updated code string using a search string included in the processing program, and The non-updated code string identified by the processing program is updated by overwriting the non-updated code string with a replacement string included in the processing program.

2. The system according to claim 1, wherein: A second file in the plurality of files includes a second non-updated code string; a second message indicating the identified problem and the second file of the plurality of files including the second non-updated code string; The second message is used to select the processing program; The search string is used to identify the second non-updated code string in the second file among the plurality of files; and The second file of the plurality of files is updated by overwriting the second non-updated code string with the replacement string.

3. The system according to claim 1, wherein: The one of the plurality of files includes a second non-updated code string; a second message indicating a second identified problem and the one file of the plurality of files; The second message is used to select a second processing program including a second search string and a second replacement string; The second search string is used to identify the second non-updated code string; and The one of the plurality of files is updated by overwriting the second non-updated code string with the second replacement string.

4. The system according to claim 1, wherein: Updating the unupdated code string includes: rewriting the syntax of the non-updated code string; updating the variables of the unupdated code string; or Update the object of the unupdated code string.

5. The system according to claim 1, wherein Updating the unupdated code string includes: The non-updated code string is updated from an initial version of the code to an updated version of the code.

6. The system according to claim 5, wherein: The updated version of the code comprises a next version of the code immediately adjacent to the initial version of the code.

7. The system according to claim 5, wherein: The updated version of the code includes the latest version of the class.

8. A method comprising: storing a plurality of files including a plurality of code strings; storing a plurality of processing programs including a search string and a replacement string; receiving a message indicating the identified problem and a file of the plurality of files including the non-updated code string; using the message to select a handler from among the plurality of handlers for updating the non-updated code string; scanning the plurality of code strings; identifying the non-updated code string using the one of the plurality of processing procedures while scanning the plurality of code strings; as well as The non-updated code string identified by the one of the plurality of processing programs is updated using the one of the plurality of processing programs.

9. The method according to claim 8, wherein A second file in the plurality of files includes a second non-updated code string; a second message indicating the identified problem and the second file of the plurality of files including the second non-updated code string; The second message is used to select the one processing program among the plurality of processing programs; The search string is used to identify the second non-updated code string in the second file among the plurality of files; and The second file of the plurality of files is updated by overwriting the second non-updated code string with the replacement string.

10. The method according to claim 8, wherein The one of the plurality of files includes a second non-updated code string; a second message indicating a second identified problem and the one file of the plurality of files; The second message is used to select a second processing program including a second search string and a second replacement string; The second search string is used to identify the second non-updated code string; and The one of the plurality of files is updated by overwriting the second non-updated code string with the second replacement string.

11. The method according to claim 8, wherein Updating the unupdated code string includes: rewriting the syntax of the non-updated code string; updating the variables of the unupdated code string; or Update the object of the unupdated code string.

12. The method according to claim 8, wherein Updating the unupdated code string includes: The non-updated code string is updated from an initial version of the code to an updated version of the code.

13. The method according to claim 12, wherein: The updated version of the code comprises a next version of the code immediately adjacent to the initial version of the code.

14. The method according to claim 12, wherein: The updated version of the code includes the latest version of the class.

15. A method comprising: storing a code for accessing a file including a plurality of code strings, the plurality of code strings including a non-updated code string; storing a processing program including a search string and a replacement string; receiving a message indicating the identified problem and the file; scanning the plurality of code strings using the search string to identify the non-updated code string; updating the non-updated code string using the replacement string; as well as Transmitting the first indication that the non-updated code string is an updated code string.

16. The method according to claim 15, further comprising: receiving an indication that the processing program belongs to a group of at least two processing programs selected for updating the non-updated code string; as well as The non-updated code string identified using the search string is updated using the set of at least two processing procedures.

17. The method according to claim 15, wherein: Updating the unupdated code string includes: Rewrite the syntax of the non-updated code string, Update the variables of the unupdated code string, or Update the object of the unupdated code string.

18. The method according to claim 15, wherein Updating the unupdated code string includes: The non-updated code string is updated from an initial version of the code to an updated version of the code.

19. The method according to claim 18, wherein The updated version of the code comprises a next version of the code immediately adjacent to the initial version of the code.

20. The method according to claim 18, wherein The updated version of the code includes the latest version of the class.

Citation Information

Patent Citations

  • A client hot updating method and device

    CN109800005A