public static CodeChangeType ClassifyCodeChangeType(string current, string old) { IDiffer differ = new Differ(); SideBySideDiffBuilder builder = new SideBySideDiffBuilder(differ); var diffModel = builder.BuildDiffModel(old, current); CodeChangeType t = CodeChangeType.None; for (var i = 0; i < diffModel.NewText.Lines.Count; i++) { var newLine = diffModel.NewText.Lines[i]; var oldLine = diffModel.OldText.Lines[i]; if (newLine.Type == ChangeType.Inserted) { t |= ChangeHelper.InsertedLineType(newLine); } else if (newLine.Type == ChangeType.Modified) { t |= ChangeHelper.ModifiedLineType(oldLine, newLine); } else if (oldLine.Type == ChangeType.Deleted) { t |= ChangeHelper.RemovedLineType(oldLine); } } return(t); }
private static CodeChangeType classifyChangeType(TokenType tokens) { CodeChangeType t = CodeChangeType.None; if ((tokens & TokenType.Comment) != 0) { t |= CodeChangeType.Documentation; } if ((tokens & TokenType.ProcedureCall) != 0 || (tokens & TokenType.Operator) != 0 || (tokens & TokenType.Assignment) != 0) { t |= CodeChangeType.Assignment; } if ((tokens & TokenType.ClassDefinition) != 0 || (tokens & TokenType.MethodDefinition) != 0 || (tokens & TokenType.DataTypeDefinition) != 0) { t |= CodeChangeType.Interface; } if ((tokens & TokenType.DataTypeDefinition) != 0) { t |= CodeChangeType.Data; } if ((tokens & TokenType.IfStatement) != 0 || (tokens & TokenType.TryStatement) != 0 || (tokens & TokenType.CatchStatement) != 0) { t |= CodeChangeType.Checking; } if ((tokens & TokenType.Assignment) != 0) { t |= CodeChangeType.Function; } if ((tokens & TokenType.ForStatement) != 0 || (tokens & TokenType.IfStatement) != 0 || (tokens & TokenType.WhileStatement) != 0 || (tokens & TokenType.SwitchStatement) != 0) { t |= CodeChangeType.Function; } return(t); }
public void ResetType() { Type = _clone.Type; }