US11599354B2 - Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis - Google Patents
Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis Download PDFInfo
- Publication number
- US11599354B2 US11599354B2 US16/515,135 US201916515135A US11599354B2 US 11599354 B2 US11599354 B2 US 11599354B2 US 201916515135 A US201916515135 A US 201916515135A US 11599354 B2 US11599354 B2 US 11599354B2
- Authority
- US
- United States
- Prior art keywords
- change
- correlated
- files
- file
- trained
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Definitions
- a rule-learning engine system comprising: a computer comprising a processor and a memory having computer-executable instructions stored thereupon which, when executed by the processor, cause the computer to: for a plurality of code files and a plurality of configuration files, train a correlated change model to identify correlated changes across the code files and the configuration files using a machine learning algorithm that discovers change rules using a support parameter, and, a confidence parameter, and, a refinement algorithm that refines the discovered change rules; and, store the correlated change model comprising the change rules.
- Also described herein is a method of detecting correlated changes, comprising: receiving information regarding a particular file; using a trained correlated change model comprising a plurality of change rules is to identify a potential issue regarding the particular file; and, providing information regarding the identified potential issue to a user.
- FIG. 1 is a functional block diagram that illustrates a rule-learning engine system.
- FIG. 2 is a functional block diagram that illustrates a correlated change suggestion system.
- FIG. 3 is a flow chart that illustrates a method of change-rule discovery.
- FIG. 4 is a flow chart that illustrates a method of change-rule refinement.
- FIG. 5 is a flow chart that illustrates a method of training a correlated change analysis model.
- FIG. 6 is a flow chart that illustrates a method of detecting correlated changes.
- FIG. 7 is a functional block diagram that illustrates an exemplary computing system.
- the subject disclosure supports various products and processes that perform, or are configured to perform, various actions regarding detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis. What follows are one or more exemplary systems and methods.
- aspects of the subject disclosure pertain to the technical problem of detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis.
- the technical features associated with addressing this problem involve for a plurality of code files and a plurality of configuration files, a correlated change model is trained to identify correlated changes across the code files and the configuration files using a machine learning algorithm that discovers change rules using a support parameter, and, a confidence parameter, and, a refinement algorithm that refines the discovered change rules; storing the correlated change model.
- the correlated change model can be used to identify potential issue(s) regarding a particular file (e.g., changed code or configuration file(s)). Information regarding the identified potential issue(s) can be provided to a user. Accordingly, aspects of these technical features exhibit technical effects of more efficiently and effectively detecting misconfiguration and/or bug(s) in large service(s), for example, reducing computer resource consumption and/or increasing security of computer service(s).
- the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from the context, the phrase “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, the phrase “X employs A or B” is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B.
- the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from the context to be directed to a singular form.
- a component may be, but is not limited to being, a process running on a processor, a processor, an object, an instance, an executable, a thread of execution, a program, and/or a computer.
- an application running on a computer and the computer can be a component.
- One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
- the term “exemplary” is intended to mean serving as an illustration or example of something, and is not intended to indicate a preference.
- Described herein is a system and method of using a combination of machine-learning and program analysis to learn change-rules that capture correlations across code and configuration files.
- a user e.g., an engineer
- the system can suggest additional change(s) to the user based on the change-rule.
- the system can positively affect submitted code and configuration changes in order to prevent or reduce code-quality degradation and/or service disruption.
- the system and method are scalable providing a solution that scales to large repository(ies) and/or service(s).
- the system and method provide techniques that work well across file-types, service-types, and/or, programming languages.
- the system and method are effective in finding subtle misconfiguration(s) and/or bug(s) which existing tools cannot catch.
- system and method can have one or more of the following characteristics: no manual inputs, post-compilation/pre-deployment, and/or, determination of correlation not causation.
- the system and method can be used to assist user(s) to find misconfiguration(s) and/or bug(s) early, while minimally intruding upon on the user's already busy schedule.
- the system and method work with existing systems and logs, and do not require any additional logging or inputs from the user(s).
- the system and method can find correlations that existing tools such as compilers, IDEs, and/or, dependency-checkers cannot catch.
- Compilers or IDEs capture correlations between function interface definitions and implementations: if a developer makes a change to one, the compiler or IDE will flag the other.
- the system and method can capture more subtle and/or diverse types of correlations across files and file-types which existing tools do not capture.
- the system and method can flag correlations, and does not detect causality because the cause of a specific set of correlated changes may not be captured by any logs.
- “commit” refers to submission of update(s) and/or change(s) to file(s).
- “Commit-time” refers to a point in time where the updated and/or changed file(s) are submitted (e.g., committed and/or checked in) to a software version control system.
- the rule engine 100 includes a change-rule discovery component 110 , a change-rule refinement component 120 , and, a stored change-rules 130 .
- the rule-learning engine system 100 utilizes association rule mining to determine correlations in code and configuration in order to enable correlated change analysis scale well and generalize to multiple file-types, repositories, and services.
- the rule-learning engine system 100 utilizes code files and configuration files as data in order to learn correlated changes and, when user(s) (e.g., developer(s)) miss making such changes, the learned correlated changes can be utilized to alert user(s) (e.g., developer(s)) before deployment of potentially erroneous code and/or configuration.
- user(s) e.g., developer(s)
- the learned correlated changes can be utilized to alert user(s) (e.g., developer(s)) before deployment of potentially erroneous code and/or configuration.
- the rule-learning engine system 100 performs correlated component analysis over code files and configuration files.
- the rule-learning engine system 100 uses a combination of machine-learning and program analysis to do this.
- the change-rule discovery component 110 can utilize association rule mining on commit logs (e.g., month(s) or year(s)) to a particular software repository to determine change-rules that capture sets of files that often change together in the particular software repository.
- the change-rule refinement component 120 can then use differential syntax analysis to learn what types of changes are correlated, thereby making the change-rules more precise.
- These refined rules can be stored in a stored change-rules 130 which, when a user makes a commit, can be used to suggest additional change(s) that can prevent a bug and/or misconfiguration.
- the rule-learning engine system 100 can take advantage of three key observations with respect to services and repositories. First, correlations in code files and configuration files occur in a multitude of unpredictable ways. Consequently, the algorithm utilized by the rule-learning engine system 100 does not rely on any codification such as hard-coded domain-knowledge. Further, the algorithm does not depend on manual configuration and/or tuning.
- the rule-learning engine system 100 performs repository-specific learning, with no extrapolation from one to the other.
- even a single repository can change characteristics significantly over time.
- the stored change-rules 130 can be periodically retrained so that suggestion(s) based on the model (e.g., stored change-rules 130 ) can be accurate.
- rule-learning engine system 100 performs rule-mining only at the file-level.
- Association rule mining is fundamentally an exponential algorithm. Finding correlations between individual configuration parameters and code constructs such as variables and/or functions can be prohibitively expensive simply because of the sheer large numbers of such constructs.
- the rule-learning engine system 100 mines change-rules at the file-level which makes the solution tractable and therefore scalable.
- the rule-learning engine system 100 learns change-rules in two steps: change-rule discovery by the change-rule discovery component 110 , and change-rule refinement by the change-rule refinement component 120 .
- discovery step association rule mining is used to find sets of files that change together “frequently”.
- a set of parameters determine how frequently the files need to change for the change-rule discovery component 110 to learn the change-rule, as discussed below.
- the change-rule refinement component 120 performs change-rule refinement in order to make at least some of the change-rules, which are currently coarse-grained and at the file-level, more precise.
- the change-rule refinement component 120 can analyze the change in files of the change-rule to determine what types of changes are correlated, as discussed in greater detail below.
- the refined change-rules are stored in a stored change-rules 130 and used to make suggestion(s), for example, to developer(s) and/or engineer(s) based on the learnt rules (e.g., stored change-rules 130 ).
- the system 200 includes the change-rule discovery component 110 , the change-rule refinement component 120 , and, the stored change-rules 130 .
- the system 200 further includes stored change logs 210 that hold information regarding a plurality of commits, for example, which files changed, and how they changed.
- the rule-learning engine system 100 runs both the change-rule discovery component 110 and the change-rule refinement component 120 .
- the system 200 determines if change(s) to a correlated file may have been missed. If so, the system 200 suggests the additional file(s) to be changed to the developer.
- a user either acts on the suggestion by editing the suggested file or does not.
- a change-rule feedback component 220 uses this behavior as feedback to the training algorithm. Using this feedback, the system 200 can automatically tune parameter(s) used to learn the change-rules, as discussed below.
- FIGS. 3 - 6 illustrate exemplary methodologies relating to detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis. While the methodologies are shown and described as being a series of acts that are performed in a sequence, it is to be understood and appreciated that the methodologies are not limited by the order of the sequence. For example, some acts can occur in a different order than what is described herein. In addition, an act can occur concurrently with another act. Further, in some instances, not all acts may be required to implement a methodology described herein.
- the acts described herein may be computer-executable instructions that can be implemented by one or more processors and/or stored on a computer-readable medium or media.
- the computer-executable instructions can include a routine, a sub-routine, programs, a thread of execution, and/or the like.
- results of acts of the methodologies can be stored in a computer-readable medium, displayed on a display device, and/or the like.
- a method of change-rule discovery 300 is illustrated.
- the method 300 is used by the rule-learning engine system 100 , and, more specifically, by the change-rule discovery component 110 , for association rule mining to discover change-rules.
- data selection is performed.
- Commit data for a predetermined period of time e.g., six month
- the change logs 210 can be pruned to exclude commit(s) that are aggregates of smaller commits caused by merging branches, and/or, porting a set of commits across branches. Since these commits put together a set of smaller commits that may not have any relation with each other, they do not capture true correlations between files. Moreover, such large commits can make mining rules prohibitively expensive. Examples of rules learned during change-rule discovery include: requiring a version number increment in a suggested file, nearly identical configuration files, and/or, code and configuration used by the code were added, so specification of how to flight the code is needed.
- data partitioning is performed.
- the change logs 210 are partitioned based upon a file edit-frequency distribution with rules learned on a separate model per data-partition. In some embodiments, this can be in addition to one model that learns rules across all files.
- the edit-frequency of a file can be defined as the number of times that changes to the file are made in a contiguous period (e.g., six months).
- a domain-specific approach can be utilized with data partitioning for a particular repository being based on a particular file type.
- rule-mining is performed (e.g., for the particular data partition), for example, by the change-rule discovery component 110 .
- a rule mining algorithm of the change-rule discovery component 110 can consider each commit as a transaction.
- the algorithm can discover frequent change-sets, for example, using the FP-Growth algorithm.
- a frequent change-set is a set of files that change together very often.
- s min is the minimum support defined for the model.
- the support of the frequent change-set, s F can be defined as the number of times files f 1 through f n change together. Hence, s F ⁇ s min .
- the algorithm can generate change-rules from the frequent change-sets.
- the confidence of the rule is the number of times the files in F change together (support of file-set F) divided by the number of times all the files in X change together (support of file-set X).
- the rule's confidence is therefore s X ⁇ Y /s X .
- the change-rule discovery component 110 learns a rule only if it has confidence above a minimum confidence c min .
- parameter tuning is performed, for example, by the parameter tuning component 230 .
- the change-rule discovery component 110 can use two parameters: the minimum support s min and the minimum confidence c min .
- these parameters can be tuned to different values for each repository.
- parameter tuning can be especially important because of one or more of the following reasons: variability across repositories, variability within a repository, and/or complexity of rule-mining.
- Variability across repositories refers to repositories varying in size and frequency of commits. Given these varied characteristics across repositories, a rule-mining algorithm using one set of parameters may do well on one repository, but very badly on another.
- Variability within a repository refers to a repository's characteristics changing with time. For example, in the planning or testing phase of a product, the repository may see far fewer commits than in the development phase.
- the system 200 can tune multiple models and their value of s min for each repository.
- c min can be set to a constant (e.g., a relatively low value of 0.5 which is not altered). This is because while is desired to for change-rule discovery to learn a relatively large set of rules, perhaps some with low confidence, change-rule refinement is performed to make the rules more precise, as discussed below.
- An exemplary tuning algorithm can be described as follows. For a mean edit-frequency for a specific data partition of ⁇ , and a standard deviation of ⁇ , various models for a particular partition can be trained by setting s min in the range ⁇ .
- a predefined minimum threshold e.g., of 4
- a model can be built by setting s min to the predefined minimum threshold, which is the lower-bound on minimum support. This model can be referred to as the baseline model because this effectively learns the largest set of change-rules computationally allowed.
- Each model can be evaluated on data and the best one selected in the following way.
- the model can be applied after every commit in a pull-request. If the model makes a suggestion, and if the user had indeed changed the suggested files in a later commit to the same pull-request, the suggestion is a true-positive. Otherwise, the suggestion is a false-positive.
- false-negatives can be computed. This is the number of true-positives that the baseline model with s min set to 4 found, but the current model did not. In this manner, each model's false-negatives can be computed relative to the baseline model.
- a model is selected (e.g., as the correlated change model for the partition). For example, from these number, precision, recall and/or F1-score can be computed for each model. Finally, the model with the highest F1-score can be selected.
- the selected model can be deployed (e.g., 340 , 350 , 360 can be performed for each partition). In some embodiments, the method 300 can be performed periodically (e.g., every day) for a particular repository.
- the change-rule refinement component 120 can refine the change-rules, for example, to reduce false-positive(s). Given a change-rule X ⁇ Y, the change-rule refinement component 120 can determine what types of change(s) in X led to change(s) in Y.
- X comprises code files while Y comprises configuration files.
- X comprises configuration files while Y comprises code files.
- X comprises code files and configuration files while Y comprises other code files and other configuration files.
- the two examples are discussed.
- the developer may add code to test the new method in a different test file.
- the developer is only changing the body of an existing method, the method already has a corresponding test, and the developer does not need to change the test file.
- the change-rule refinement component 120 can learn these pattern(s) for code and/or configuration files to generate a feature-set that captures the type of changes.
- change-rule refinement 400 e.g., change-rule refinement algorithm
- the method 400 is used by the change-rule refinement component 120 .
- a set of commits that modify all files x in X is determined. That is, for each rule r:X ⁇ Y, a set of commits C that modify every file in X is created. The commits in this set C may or may not modify files in set Y.
- a parse tree for the file before the change is extracted, and, a parse tree for the file after the change is extracted.
- every file in X can be run through a parse tree extractor.
- the parse tree extractor creates two parse trees for the file: one before the change and the other after the change.
- changes are determined between the parse tree for the file before the change, and, the parse tree for the file after the change.
- a feature vector is generated based upon the determined changes between the two parse trees. The feature vector characterizes the nature of the change to the file.
- Table 1 lists an exemplary set of features used for code files:
- Table 1 Most features in Table 1 are categorical, such as whether a method is added, changed, or removed. In some embodiments, additional features can be numerical, such as lines of code added or removed.
- a combined feature vector is created from the feature vectors for all files x in X.
- a tuple containing this feature-vector and a label is created.
- the label is “changed” or “unchanged” depending on whether this commit changed file y.
- this process can be run for every commit at the end of which, a set of labelled data has been generated for each file y in rule r.
- a classifier d y e.g., decision-tree based classifier
- a change-rule r has an added component D r , where D r is a set of all classifiers for files y ⁇ Y.
- D r is a set of all classifiers for files y ⁇ Y.
- the change-rule r can be stored in the stored change-rules 130 .
- determining the correct features for files in X can be a significant factor. This set fundamentally differs depending on whether the file being processed is a code file, or a configuration file. While code files are characterized by features, for example, as described in Table 1, configuration files can pose a more significant challenge since they do not have the rigid structure that code files generally possess.
- a pre-defined feature-set such as for code files cannot be used for configuration files.
- the system 100 has to learn a separate feature-set that is specific to this file.
- a feature-learning approach is utilized for this purpose which uses the process of anti-unification.
- An anti-unification algorithm can learn a set of regular expressions across additions, modifications and deletions to file x which are common. Anti-unification tries to find the least general generalization that can describe/learn recurring edit patterns. The system 200 can then use these as features to learn the classifier.
- the system 200 further includes a suggestion component 240 .
- a suggestion component 240 For example, when a user (e.g., developer/engineer) submits (e.g., changes, updates, and/or commits) a code or configuration change to a repository, the suggestion component 240 can intercept the submission and determine a set of change-rules that match the submission (e.g., change, update, and/or commit).
- the system 200 determines if X is a subset of the files changed in the commit. The system 200 then passes the changes through the parse tree extractor and classifier to determine if the system should suggest changing file y or not. If the classifier predicts change in file y, the system 200 generates a suggestion. In some embodiments, the system 200 does not make recommendations for pull-request updates where there are merge commits so as to reduce noise.
- the suggestion component 240 can order them using a metric called lift, also called the “interestingness” measure that takes into account the prior probability of y. This metric can help to measure how likely the change in y is, when X is changed, while controlling for how frequently edited y is.
- lift also called the “interestingness” measure that takes into account the prior probability of y. This metric can help to measure how likely the change in y is, when X is changed, while controlling for how frequently edited y is.
- the change-rule feedback component 220 can monitor if the user acts on any of the suggestions, and stores information about true-positive and false-positive suggestion(s).
- the parameter tuning component 230 can use this feedback, as discussed above.
- the system 200 can detect change correlations. Correlations can occur due to various reasons. For purposes of explanation and not limitation, these correlations can occur because of versioning, fighting, testing, replicating code and configuration, complex configuration, scripting, and/or miscellaneous causes.
- versioning when a user (e.g., an engineer) updates and/or adds code to a library, the user also needs to increment the version number of the library. This creates correlations between code files and files that contain version information. Version numbers are stored in different types of files and in different formats (e.g., csproj files, xml files, and/or j son files), depending on the code-base. If a user misses incrementing a version number, the user could seriously disrupt the service. For example, a new library may not be backward-compatible with an older library. Hence, if it uses the same version number as the previous one, another component that depends on the older version could fail. In some embodiments, the system 200 can determine such correlations irrespective of the file-type and format.
- “Flighting” occurs when a user adds a new feature which is deployed in stages. For example, the user may first deploy the new feature to a small subset of machines to ensure that the feature works as planned and does not cause disruptions. Once this has been ensured, the user may deploy the feature more widely. Hence, when the user adds code to implement a new feature, the user also needs to add configuration to files that define the set of machines that will test this feature.
- Testing is a fairly common reason for file correlations. For example, when a user adds a new feature to code, the user may should consider adding a new test for that feature in a separate file that contains only tests. While this is fairly common across multiple code-bases and services, each code-base has its own organization structure for separating test code from the main production code. The system 200 can automatically detect such structures without having the structure specified manually.
- a configuration file can be replicated across different alerting frameworks. If a user changes one, without knowing that a replica existed within the other alerting framework, the system 200 can detect and provide suggestion(s) to correct the issue.
- Configuring services is a complex task and, as a result, in some embodiments, several correlations show up between configuration files.
- the system 200 can detect an instance where a user renamed a microservice but forgot to change the name of the service in the file that contained its firewall rules. This can cause a security issue.
- the system 200 can detect a missing a change can cause a service disruption.
- scripts can have complex inter-dependencies which, unlike compiled code, can go unchecked at submission-time (e.g., change-time, update-time, and/or commit-time).
- submission-time e.g., change-time, update-time, and/or commit-time.
- a user can change a function definition in one script and hence the user is required to change the way the function was called in another script.
- the system 200 can detect a failure to change the way the function was called, while existing IDEs and compilers generally do not.
- change-rules can contain more than two files.
- a method of training a correlated change analysis model 500 is illustrated.
- the method 500 is performed by the rule engine 100 .
- a correlated change model is trained to identify correlated changes between the code files and the configuration files using a machine learning algorithm that discovers change rules using a support parameter, and, a confidence parameter, and, a refinement algorithm that refines the discovered change rules.
- the correlated change model comprising the change rules is stored.
- FIG. 6 a method of detecting correlated changes 600 is illustrated.
- the method 600 is performed by the system 200 .
- information regarding a particular file is received.
- a trained correlated change model comprising a plurality of change rules is used to identify a potential issue regarding the particular file.
- information regarding the identified potential issues is provided to a user.
- a rule-learning engine system comprising: a computer comprising a processor and a memory having computer-executable instructions stored thereupon which, when executed by the processor, cause the computer to: for a plurality of code files and a plurality of configuration files, train a correlated change model to identify correlated changes across the code files and the configuration files using a machine learning algorithm that discovers change rules using a support parameter, and, a confidence parameter, and, a refinement algorithm that refines the discovered change rules; and store the correlated change model comprising the change rules.
- the system can further include wherein the refinement algorithm utilizes a differential syntax analysis utilizing a parse tree for a particular file before a change and a parse tree for the particular file after the change for each of a plurality of files.
- the system can include the memory having further computer-executable instructions stored thereupon which, when executed by the processor, cause the computer to: for each of the plurality of files: determine changes between the parse tree for the particular file before the change and the parse tree for the particular file after the change; and create a feature vector characterizing the determined changes.
- the system can include the memory having further computer-executable instructions stored thereupon which, when executed by the processor, cause the computer to: train classifiers in accordance with the created feature vectors for each of the plurality of files, wherein the correlated change model comprises the trained classifiers.
- the system can further include wherein training the correlated change model to identify correlated changes between the code files and the configuration files further comprises: partition data into a plurality of partitions based upon similar edit-frequency; for each particular partition of the plurality of partitions, train a plurality of models: perform rule-mining for the particular partition; perform parameter tuning of at least one of the support parameter or the confidence parameter, for the particular partition; and, select a model as the correlated change model for the particular partition, wherein the correlated change model comprises the correlated change models for the plurality of partitions.
- Described herein is a method of detecting correlated changes, comprising: receiving information regarding a particular file; using a trained correlated change model comprising a plurality of change rules to identify a potential issue regarding the particular file; and providing information regarding the identified potential issue to a user.
- the method can further include receiving information regarding a user action in response to the provided information; and updating the trained correlated change model in accordance with the receiving information regarding the user action, the particular file, and, the provided information regarding the identified potential issue.
- the method can further include: for a plurality of code files and a plurality of configuration files, training the correlated change model to identify correlated changes across the code files and the configuration files using a machine learning algorithm that discovers change rules using a support parameter, and, a confidence parameter, and, a refinement algorithm that refines the discovered change rules; and storing the correlated change model comprising the change rules.
- the method can further include wherein the refinement algorithm utilizes a differential syntax analysis.
- the method can further include wherein training the correlated change model to identify correlated changes between the code files and the configuration files further comprises: partition data into a plurality of partitions based upon similar edit-frequency; for each particular partition of the plurality of partitions, train a plurality of models: perform rule-mining for the particular partition; perform parameter tuning of at least one of the support parameter or the confidence parameter, for the particular partition; and, select a model as the correlated change model for the particular partition, wherein the correlated change model comprises the correlated change models for the plurality of partitions.
- the method can further include wherein the information regarding the particular file is received when the user commits at least one of a code file or a configuration file to a repository.
- the method can further include wherein using the trained correlated change model comprises: extracting a parse tree for the particular file and using a classifier to identify the potential issue regarding the particular file.
- Described herein is a computer storage media storing computer-readable instructions that when executed cause a computing device to: receive information regarding a particular file; use a trained correlated change model comprising a plurality of change rules is to identify a potential issue regarding the particular file; and provide information regarding the identified potential issue to a user.
- the computer storage media can store further computer-readable instructions that when executed cause a computing device to: receive information regarding a user action in response to the provided information; and update the trained correlated change model in accordance with the receiving information regarding the user action, the particular file, and, the provided information regarding the identified potential issue.
- the computer storage media can store further computer-readable instructions that when executed cause a computing device to: for a plurality of code files and a plurality of configuration files, train the correlated change model to identify correlated changes across the code files and the configuration files using a machine learning algorithm that discovers change rules using a support parameter, and, a confidence parameter, and, a refinement algorithm that refines the discovered change rules; and store the correlated change model comprising the change rules.
- the computer storage media can further include wherein the refinement algorithm utilizes a differential syntax analysis utilizing a parse tree for a particular file before a change and a parse tree for the particular file after the change for each of a plurality of files.
- the computer storage media can further include wherein training the correlated change model to identify correlated changes between the code files and the configuration files further comprises: partition data into a plurality of partitions based upon similar edit-frequency; for each particular partition of the plurality of partitions, train a plurality of models: perform rule-mining for the particular partition; perform parameter tuning of at least one of the support parameter or the confidence parameter, for the particular partition; and, select a model as the correlated change model for the particular partition, wherein the correlated change model comprises the correlated change models for the plurality of partitions.
- the computer storage media can further include wherein the information regarding the particular file is received when the user commits at least one of a code file or a configuration file to a repository.
- the computer storage media can further include wherein using the trained correlated change model comprises: extracting a parse tree for the particular file and using a classifier to identify the potential issue regarding the particular file.
- the computer storage media can further include wherein the information provided to the user regarding the identified potential issues related to a security issue associated with the particular file.
- an example general-purpose computer or computing device 702 e.g., mobile phone, desktop, laptop, tablet, watch, server, hand-held, programmable consumer or industrial electronics, set-top box, game system, compute node, etc.
- the computing device 702 may be used the rule-learning engine system and/or the correlated change suggestion system 200 .
- the computer 702 includes one or more processor(s) 720 , memory 730 , system bus 740 , mass storage device(s) 750 , and one or more interface components 770 .
- the system bus 740 communicatively couples at least the above system constituents.
- the computer 702 can include one or more processors 720 coupled to memory 730 that execute various computer executable actions, instructions, and or components stored in memory 730 .
- the instructions may be, for instance, instructions for implementing functionality described as being carried out by one or more components discussed above or instructions for implementing one or more of the methods described above.
- the processor(s) 720 can be implemented with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein.
- a general-purpose processor may be a microprocessor, but in the alternative, the processor may be any processor, controller, microcontroller, or state machine.
- the processor(s) 720 may also be implemented as a combination of computing devices, for example a combination of a DSP and a microprocessor, a plurality of microprocessors, multi-core processors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
- the processor(s) 720 can be a graphics processor.
- the computer 702 can include or otherwise interact with a variety of computer-readable media to facilitate control of the computer 702 to implement one or more aspects of the claimed subject matter.
- the computer-readable media can be any available media that can be accessed by the computer 702 and includes volatile and nonvolatile media, and removable and non-removable media.
- Computer-readable media can comprise two distinct and mutually exclusive types, namely computer storage media and communication media.
- Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data.
- Computer storage media includes storage devices such as memory devices (e.g., random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), etc.), magnetic storage devices (e.g., hard disk, floppy disk, cassettes, tape, etc.), optical disks (e.g., compact disk (CD), digital versatile disk (DVD), etc.), and solid state devices (e.g., solid state drive (SSD), flash memory drive (e.g., card, stick, key drive) etc.), or any other like mediums that store, as opposed to transmit or communicate, the desired information accessible by the computer 702 . Accordingly, computer storage media excludes modulated data signals as well as that described with respect to communication media.
- RAM random access memory
- ROM read-only memory
- EEPROM electrically
- Communication media embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
- Memory 730 and mass storage device(s) 750 are examples of computer-readable storage media.
- memory 730 may be volatile (e.g., RAM), non-volatile (e.g., ROM, flash memory, etc.) or some combination of the two.
- the basic input/output system (BIOS) including basic routines to transfer information between elements within the computer 702 , such as during start-up, can be stored in nonvolatile memory, while volatile memory can act as external cache memory to facilitate processing by the processor(s) 720 , among other things.
- BIOS basic input/output system
- Mass storage device(s) 750 includes removable/non-removable, volatile/non-volatile computer storage media for storage of large amounts of data relative to the memory 730 .
- mass storage device(s) 750 includes, but is not limited to, one or more devices such as a magnetic or optical disk drive, floppy disk drive, flash memory, solid-state drive, or memory stick.
- Memory 730 and mass storage device(s) 750 can include, or have stored therein, operating system 760 , one or more applications 762 , one or more program modules 764 , and data 766 .
- the operating system 760 acts to control and allocate resources of the computer 702 .
- Applications 762 include one or both of system and application software and can exploit management of resources by the operating system 760 through program modules 764 and data 766 stored in memory 730 and/or mass storage device (s) 750 to perform one or more actions. Accordingly, applications 762 can turn a general-purpose computer 702 into a specialized machine in accordance with the logic provided thereby.
- rule-learning engine system 100 or portions thereof can be, or form part, of an application 762 , and include one or more modules 764 and data 766 stored in memory and/or mass storage device(s) 750 whose functionality can be realized when executed by one or more processor(s) 720 .
- the processor(s) 720 can correspond to a system on a chip (SOC) or like architecture including, or in other words integrating, both hardware and software on a single integrated circuit substrate.
- the processor(s) 720 can include one or more processors as well as memory at least similar to processor(s) 720 and memory 730 , among other things.
- Conventional processors include a minimal amount of hardware and software and rely extensively on external hardware and software.
- an SOC implementation of processor is more powerful, as it embeds hardware and software therein that enable particular functionality with minimal or no reliance on external hardware and software.
- the rule-learning engine system 100 and/or associated functionality can be embedded within hardware in a SOC architecture.
- the computer 702 also includes one or more interface components 770 that are communicatively coupled to the system bus 740 and facilitate interaction with the computer 702 .
- the interface component 770 can be a port (e.g., serial, parallel, PCMCIA, USB, FireWire, etc.) or an interface card (e.g., sound, video, etc.) or the like.
- the interface component 770 can be embodied as a user input/output interface to enable a user to enter commands and information into the computer 702 , for instance by way of one or more gestures or voice input, through one or more input devices (e.g., pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, camera, other computer, etc.).
- the interface component 770 can be embodied as an output peripheral interface to supply output to displays (e.g., LCD, LED, plasma, etc.), speakers, printers, and/or other computers, among other things.
- the interface component 770 can be embodied as a network interface to enable communication with other computing devices (not shown), such as over a wired or wireless communications link.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
Description
TABLE 1 | ||
MethodsAdded, | IfConditionsAdded, | ClassesAdded, |
MethodsRemoved, | IfConditionsRemoved | ClassesRemoved, |
Methods Changed | ||
ForStatementsAdded, | UsingsAdded, | LinesOfCodeAdded, |
ForStatementsRemoved | UsingsRemoved | LinesOfCodeRemoved |
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/515,135 US11599354B2 (en) | 2019-07-18 | 2019-07-18 | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis |
PCT/US2020/036717 WO2021011117A1 (en) | 2019-07-18 | 2020-06-09 | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis |
EP20751330.0A EP3983884B1 (en) | 2019-07-18 | 2020-06-09 | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/515,135 US11599354B2 (en) | 2019-07-18 | 2019-07-18 | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
US20210019142A1 US20210019142A1 (en) | 2021-01-21 |
US11599354B2 true US11599354B2 (en) | 2023-03-07 |
Family
ID=71948666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/515,135 Active 2039-09-12 US11599354B2 (en) | 2019-07-18 | 2019-07-18 | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis |
Country Status (3)
Country | Link |
---|---|
US (1) | US11599354B2 (en) |
EP (1) | EP3983884B1 (en) |
WO (1) | WO2021011117A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663324B2 (en) | 2021-08-10 | 2023-05-30 | International Business Machines Corporation | Obtaining information for security configuration |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100005134A1 (en) * | 2008-07-02 | 2010-01-07 | Gfi Group Inc. | Systems and methods for recording changes to a data store and propagating changes to a client application |
US20110061040A1 (en) * | 2009-09-06 | 2011-03-10 | Muhammad Shaheen | Association rule mining to predict co-varying software metrics |
US20130080997A1 (en) * | 2011-09-23 | 2013-03-28 | The United States Of America, As Represented By The Secretary Of The Army | System and Method for Tracking and Notifying Related Software, Modules, and Configuration Files During Software Development and Maintenance |
US20140007068A1 (en) * | 2012-06-28 | 2014-01-02 | International Business Machines Corporation | Managing changes to one or more files via linked mapping records |
US20140053135A1 (en) | 2012-08-20 | 2014-02-20 | Microsoft Corporation | Predicting software build errors |
US20150293762A1 (en) * | 2014-04-10 | 2015-10-15 | International Business Machines Corporation | Smart Source Code Evaluation and Suggestion System |
US9323644B1 (en) * | 2015-09-30 | 2016-04-26 | Semmle Limited | Query-based software dependency analysis |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
US20190087179A1 (en) * | 2017-09-15 | 2019-03-21 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for predicting defects in a computer program |
US20190155722A1 (en) * | 2017-11-20 | 2019-05-23 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for predicting performance failures in a computer program |
US20200034135A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Analyzing software change impact based on machine learning |
-
2019
- 2019-07-18 US US16/515,135 patent/US11599354B2/en active Active
-
2020
- 2020-06-09 WO PCT/US2020/036717 patent/WO2021011117A1/en unknown
- 2020-06-09 EP EP20751330.0A patent/EP3983884B1/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100005134A1 (en) * | 2008-07-02 | 2010-01-07 | Gfi Group Inc. | Systems and methods for recording changes to a data store and propagating changes to a client application |
US20110061040A1 (en) * | 2009-09-06 | 2011-03-10 | Muhammad Shaheen | Association rule mining to predict co-varying software metrics |
US20130080997A1 (en) * | 2011-09-23 | 2013-03-28 | The United States Of America, As Represented By The Secretary Of The Army | System and Method for Tracking and Notifying Related Software, Modules, and Configuration Files During Software Development and Maintenance |
US20140007068A1 (en) * | 2012-06-28 | 2014-01-02 | International Business Machines Corporation | Managing changes to one or more files via linked mapping records |
US20140053135A1 (en) | 2012-08-20 | 2014-02-20 | Microsoft Corporation | Predicting software build errors |
US20150293762A1 (en) * | 2014-04-10 | 2015-10-15 | International Business Machines Corporation | Smart Source Code Evaluation and Suggestion System |
US9323644B1 (en) * | 2015-09-30 | 2016-04-26 | Semmle Limited | Query-based software dependency analysis |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
US20190087179A1 (en) * | 2017-09-15 | 2019-03-21 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for predicting defects in a computer program |
US20190155722A1 (en) * | 2017-11-20 | 2019-05-23 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for predicting performance failures in a computer program |
US20200034135A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Analyzing software change impact based on machine learning |
Non-Patent Citations (36)
Title |
---|
"Association Rules and the Apriori Algorithm: A Tutorial", Retrieved from https://www.kdnuggets.com/2016/04/association-rules-apriori-algorithm-tutorial.html, Retrieved on: Apr. 24, 2019, 5 Pages. |
"Generating Diffgrams of Xmlfiles", Retrieved from https://www.nuget.org/packages/XMLDiffPatch/, Retrieved on: Jun. 17, 2019, 3 Pages. |
"GIT", Retrieved from https://git-scm.com/, Retrieved on: Jun. 17, 2019, 2 Pages. |
"GitHub Inc.—Build for developers", Retrieved from https://github.com/, Retrieved on: Jun. 17, 2019, 7 Pages. |
"International Search Report and Written Opinion Issued in PCT Application No. PCT/US20/036717", dated Oct. 23, 2020, 14 Pages. |
"Microsoft Azure Cloud Services", Retrieved from https://docs.microsoft.com/en-US/azure/cloud-services/cloud-services-choose-me, Apr. 19, 2017, 4 Pages. |
"Microsoft Azure DevOps", Retrieved from https://azure.microsoft.com/en-in/services/devops/, Retrieved on: Jun. 17, 2019, 15 Pages. |
"Microsoft Azure Documentation", Retrieved from https://docs.microsoft.com/en-in/azure/, Retrieved on: Jun. 17, 2019, 2 Pages. |
"Roslyn: Code Syntax Analyzer", Retrieved from https://github.com/dotnet/roslyn, Retrieved on: Jun. 17, 2019, 3 Pages. |
Agrawal, et al., "Fast Algorithms for Mining Association Rules", In Proceedings of the 20th International Conference of VLDB , vol. 1215, Sep. 12, 1994, pp. 487-499. |
Barnett, et al., "Helping Developers Help themselves: Automatic Decomposition of Code Review Changesets", In Proceedings of the 37th International Conference on Software Engineering, vol. 1, May 16, 2015, pp. 134-144. |
Bavota, et al., "An Empirical Study on the Developers' Perception of Software Coupling", In Proceedings of the 2013 International Conference on Software Engineering, May 18, 2013, pp. 692-701. |
Bayardo, Roberto J., Jr., "Efficiently Mining long Patterns from Databases", In Proceedings of the 1998 International Conference on Management of Data, vol. 27, Issue 2, Jun. 1, 1998, pp. 85-93. |
Bevan, Jennifer, and E. James Whitehead Jr. "Identification of Software Instabilities." WCRE. vol. 3. 2003. (Year: 2003). * |
Bhagwan, et al., "Differential Bug Localization in Large-Scale Services", In 13th USENIX Symposium on Operating Systems Design and Implementation, Oct. 8, 2018, pp. 493-509. |
Brin, et al., "Dynamic itemset Counting and Implication Rules for Market Basket Data", In Newsletter of ACM SIGMOD Record, vol. 26, Issue 2, Jun. 1997, pp. 255-264. |
Dagit, Jason, and Matthew Sottile. "Identifying change patterns in software history." arXiv preprint arXiv: 1307.1719 (2013). (Year: 2013). * |
Han, et al., "Mining Frequent Patterns without Candidate Generation", In Newsletter of ACM SIGMOD Record, , vol. 29, Issue 2, Jun. 2000, 12 Pages. |
Huang, et al., "Confvalley: A Systematic Configuration Validation Framework for Cloud Services", In Proceedings of the Tenth European Conference on Computer Systems, Article No. 19, Apr. 17, 2015, 16 Pages. |
Huang, et al., "Eady Detection of Configuration Errors to Reduce Failure Damage", In Proceedings of the 12th USENIX Conference on Operating Systems Design and Implementation, Nov. 2, 2016, pp. 619-634. |
Kutsia, et al., "Anti-Unification for Unranked Terms and Hedges", In Journal of Automated Reasoning, vol. 52, Issue 2, Apr. 13, 2013, pp. 155-190. |
Madeiral, Fernanda, et al. "Towards an automated approach for bug fix pattern detection." arXiv preprint arXiv:1807.11286 (2018). (Year: 2018). * |
Robillard, Martin P., "Automatic Generation of Suggestions for Program Investigation", In Proceedings of the 10th European Software Engineering Conference held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Sep. 5, 2005, pp. 11-20. |
Scott, et al., "Getafix: Learning to Fix Bugs Automatically", In Journal of The Computing Research Repository, Feb. 2019, 19 Pages. |
Sherman, Alex, "ACMS:The Akamai Configuration Management System", In Proceedings of the 2nd Conference an Symposium on Networked Systems Design & Implementation, vol. 2, May 2, 2005, pp. 245-258. |
Silverman, B.W., "Using kernel Density Estimates to Investigate Multimodality", In Journal of the Royal Statistical Society vol. 43, Issue 1, Sep. 1981, pp. 97-99. |
Tang, et al., "Holistic Configuration Management at Facebook", In Proceedings of the 25th Symposium on Operating Systems Principles, Oct. 4, 2015, pp. 328-343. |
Wang, et al., "Automatic Misconfiguration Troubleshooting with PeerPressure", In Proceedings of the 6th conference on Symposium on Operating Systems Design & Implementation, vol. 06, Dec. 6, 2004, pp. 245-257. |
Wang, et al., "Predicting Co-changed Software Entities in the Context of Software Evolution", In Proceedings of the International Conference on Information Engineering and Computer Science, Dec. 19, 2009, 5 Pages. |
Wang, et al., "Strider: A Black-box, State-based Approach to Change and Configuration Management and Support", In Journal of Science of Computer Programming, vol. 53, No. 2, Nov. 1, 2004, pp. 143-164. |
Wang, Ye, Na Meng, and Hao Zhong. "An empirical study of multi-entity changes in real bug fixes." 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 2018. (Year: 2018). * |
Weiss, et al., "Tortoise: Interactive System Configuration repair", In Proceedings of 32nd IEEE/ACM International Conference on Automated Software Engineering, Oct. 30, 2017, 12 Pages. |
Xu, et al., "Hey, you have given me too many knobs: Understanding and Dealing with Over-Designed Configuration in System Software", In Proceedings of the 10th Joint Meeting on foundations of Software Engineering, Aug. 30, 2015, pp. 307-319. |
Zhang, et al., "EnCore: Exploiting System Environment and Correlation Information for Misconfiguration Detection", In Proceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems, Mar. 1, 2014, pp. 687-700. |
Zimmerman, et al., "An Empirical Study on the Relation Between Dependency Neighborhoods and Failures", In Fourth IEEE International Conference on Software Testing, Verification and Validation, Mar. 21, 2011, 10 Pages. |
Zimmerman, et al., "Mining Version Histories to Guide Software Changes", In Journal of IEEE Transactions on Software Engineering, vol. 31, Issue 6, Jun. 2005, pp. 1-10. |
Also Published As
Publication number | Publication date |
---|---|
US20210019142A1 (en) | 2021-01-21 |
EP3983884A1 (en) | 2022-04-20 |
EP3983884B1 (en) | 2024-06-19 |
WO2021011117A1 (en) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10235141B2 (en) | Method and system for providing source code suggestion to a user in real-time | |
CN106796522B (en) | System and method for updating source code file | |
US8943493B2 (en) | Automation of application deployment | |
US10042740B2 (en) | Techniques to identify idiomatic code in a code base | |
US20150363196A1 (en) | Systems And Methods For Software Corpora | |
US11599539B2 (en) | Column lineage and metadata propagation | |
EP3453155B1 (en) | Providing automatic detection and optimization of user experience upgrades based on detected customization | |
US9652209B2 (en) | Static analysis and reconstruction of deep link handling in compiled applications | |
US9569183B2 (en) | Contract based builder | |
US11635949B2 (en) | Methods, systems, articles of manufacture and apparatus to identify code semantics | |
US9851944B2 (en) | Operation search method and operation search apparatus | |
US11693635B1 (en) | Automatic code reconfiguration based on function and subfunction analysis | |
US10169213B2 (en) | Processing of an application and a corresponding test file in a content repository | |
US11599354B2 (en) | Detecting misconfiguration and/or bug(s) in large service(s) using correlated change analysis | |
US20240231811A9 (en) | Shrinking delta files based on function analysis | |
US20240231810A9 (en) | Symbol-matching between software versions | |
US10635483B2 (en) | Automatic synopsis generation for command-line interfaces | |
US20240231781A9 (en) | Shrinking files based on function analysis | |
US11461414B2 (en) | Automatically building a searchable database of software features for software projects | |
Tinnes et al. | Learning domain-specific edit operations from model repositories with frequent subgraph mining | |
US12093686B2 (en) | Code maintenance system | |
CN115794858A (en) | Query statement processing method, device, equipment and storage medium | |
Lavoie et al. | A case study of TTCN-3 test scripts clone analysis in an industrial telecommunication setting | |
US20220019516A1 (en) | Determining a recommended software-stack for a target software item | |
US11941380B1 (en) | Automatic code reconfiguration based on function and subfunction analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BHAGWAN, RANJITA;MADDILA, CHANDRA SEKHAR;KUMAR, ADITYA;AND OTHERS;SIGNING DATES FROM 20190708 TO 20190710;REEL/FRAME:049907/0629 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: EX PARTE QUAYLE ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO EX PARTE QUAYLE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |