public IEnumerable<CloneDesc> FindCandidatesViaRefactoringPermutations(TargetInfo left, CloneDesc refactoredPermy) { MethodDeclaration right = refactoredPermy.PermutatedMethod; var permutations = FindCandidatesViaRefactoringPermutations(left, right); return permutations.Select(x => new CloneDesc(x, refactoredPermy, new QuickFixInfo(refactoredPermy.ReplacementInvocationInfo, left.CloneContainer.Parameters.Select(x1 => x1.ParameterName as object).ToList())) { ReplacementInvocation = refactoredPermy.ReplacementInvocation }); }
public IEnumerable<CloneDesc> FindCandidatesViaRefactoringPermutations(TargetInfo left, CloneDesc refactoredPermy) { MethodDeclaration right = refactoredPermy.PermutatedMethod; // HEURISTIC: This refactoring will not change the node count, so don't bother if they don't already match. if(right.Body.CountNodes() != left.Target.Body.CountNodes()) // if(!right.MatchesIgnorePrimitives(left.Target)) yield break; // HEURISTIC: No point in adding any more parameters than the target method has. int parms_to_add = left.Target.Parameters.Count - right.Parameters.Count; if (parms_to_add > 0) { var md = FindCandidates(right, parms_to_add); foreach (var h in md) { yield return new CloneDesc(h.md, refactoredPermy, new QuickFixInfo(refactoredPermy.ReplacementInvocationInfo, refactoredPermy.ReplacementInvocationInfo.LiteralParams.Concat(h.parameters).ToList())) { ReplacementInvocation = AddParms(refactoredPermy.ReplacementInvocation, h.parameters) }; } } }
public CloneDesc(MethodDeclaration extractedMethod, CloneDesc pd, QuickFixInfo fixInfo) { PermutatedMethod = extractedMethod; Previous = pd; replacementInvocationInfo = fixInfo; }
public IEnumerable <CloneDesc> FindCandidatesViaRefactoringPermutations(TargetInfo left, CloneDesc refactoredPermy) { MethodDeclaration right = refactoredPermy.PermutatedMethod; // HEURISTIC: This refactoring will not change the node count, so don't bother if they don't already match. if (right.Body.CountNodes() != left.Target.Body.CountNodes()) { // if(!right.MatchesIgnorePrimitives(left.Target)) yield break; } // HEURISTIC: No point in adding any more parameters than the target method has. int parms_to_add = left.Target.Parameters.Count - right.Parameters.Count; if (parms_to_add > 0) { var md = FindCandidates(right, parms_to_add); foreach (var h in md) { yield return(new CloneDesc(h.md, refactoredPermy, new QuickFixInfo(refactoredPermy.ReplacementInvocationInfo, refactoredPermy.ReplacementInvocationInfo.LiteralParams.Concat(h.parameters).ToList())) { ReplacementInvocation = AddParms(refactoredPermy.ReplacementInvocation, h.parameters) }); } } }
private void DoExtractedCandidateEvent(CloneDesc candidate) { InvokeOnExtractedCandidate(new OnExtractedCandidateEventArgs { Candidate = candidate }); }
public IEnumerable <CloneDesc> FindCandidatesViaRefactoringPermutations(TargetInfo left, CloneDesc refactoredPermy) { MethodDeclaration right = refactoredPermy.PermutatedMethod; var permutations = FindCandidatesViaRefactoringPermutations(left, right); return(permutations.Select(x => new CloneDesc(x, refactoredPermy, new QuickFixInfo(refactoredPermy.ReplacementInvocationInfo, left.CloneContainer.Parameters.Select(x1 => x1.ParameterName as object).ToList())) { ReplacementInvocation = refactoredPermy.ReplacementInvocation })); }