public IList <AssemblyNode> InitMutantsForOperators(ProgressCounter percentCompleted) { var root = new MutationRootNode(); int[] id = { 1 }; Func <int> genId = () => id[0]++; //var originalModules = _choices.WhiteSource;//_whiteCache.GetWhiteModules(); percentCompleted.Initialize(_originalCodebase.ModulesToMutate.Count); var subProgress = percentCompleted.CreateSubprogress(); var sw = new Stopwatch(); var assNodes = new List <AssemblyNode>(); foreach (var module in _originalCodebase.ModulesToMutate) { sw.Restart(); var mergedTargets = _mutationExecutor.FindTargets(module, subProgress); var assemblyNode = BuildMutantsTree(module.Module.Name, mergedTargets); _log.Info("Found total of: " + mergedTargets.Values.Count() + " mutation targets in " + assemblyNode.Name); assNodes.Add(assemblyNode); percentCompleted.Progress(); } assNodes = modifyAssNodes(assNodes); root.State = MutantResultState.Untested; return(assNodes); }
public MultiDictionary<IMutationOperator, MutationTarget> FindTargets(CciModuleSource module, ProgressCounter subProgress) { _log.Info("Finding targets for module: " + module.Module.Name); _log.Info("Using mutation operators: " + _mutOperators.Select(_ => _.Info.Id) .MayAggregate((a, b) => a + "," + b).Else("None")); var mergedTargets = new MultiDictionary<IMutationOperator, MutationTarget>(); _sharedTargets = new MultiDictionary<IMutationOperator, MutationTarget>(); subProgress.Initialize(_mutOperators.Count); foreach (var mutationOperator in _mutOperators) { try { subProgress.Progress(); var ded = mutationOperator.CreateVisitor(); IOperatorCodeVisitor operatorVisitor = ded; operatorVisitor.Host = module.Host; operatorVisitor.OperatorUtils = _operatorUtils; operatorVisitor.Initialize(); var visitor = new VisualCodeVisitor(mutationOperator.Info.Id, operatorVisitor, module.Module.Module); var traverser = new VisualCodeTraverser(_filter, visitor, module); traverser.Traverse(module.Module.Module); visitor.PostProcess(); IEnumerable<MutationTarget> mutations = LimitMutationTargets(visitor.MutationTargets); mergedTargets.Add(mutationOperator, new HashSet<MutationTarget>(mutations)); _sharedTargets.Add(mutationOperator, new HashSet<MutationTarget>(visitor.SharedTargets)); } catch (Exception e) { _svc.Logging.ShowError("Finding targets operation failed in operator: {0}. Exception: {1}".Formatted(mutationOperator.Info.Name, e.ToString())); //throw new MutationException("Finding targets operation failed in operator: {0}.".Formatted(mutationOperator.Info.Name), e); } } return mergedTargets; }
public MultiDictionary <IMutationOperator, MutationTarget> FindTargets(CciModuleSource module, ProgressCounter subProgress) { _log.Info("Finding targets for module: " + module.Module.Name); _log.Info("Using mutation operators: " + _mutOperators.Select(_ => _.Info.Id) .MayAggregate((a, b) => a + "," + b).Else("None")); var mergedTargets = new MultiDictionary <IMutationOperator, MutationTarget>(); _sharedTargets = new MultiDictionary <IMutationOperator, MutationTarget>(); subProgress.Initialize(_mutOperators.Count); foreach (var mutationOperator in _mutOperators) { try { subProgress.Progress(); var ded = mutationOperator.CreateVisitor(); IOperatorCodeVisitor operatorVisitor = ded; operatorVisitor.Host = module.Host; operatorVisitor.OperatorUtils = _operatorUtils; operatorVisitor.Initialize(); var visitor = new VisualCodeVisitor(mutationOperator.Info.Id, operatorVisitor, module.Module.Module); var traverser = new VisualCodeTraverser(_filter, visitor, module); traverser.Traverse(module.Module.Module); visitor.PostProcess(); IEnumerable <MutationTarget> mutations = LimitMutationTargets(visitor.MutationTargets); mergedTargets.Add(mutationOperator, new HashSet <MutationTarget>(mutations)); _sharedTargets.Add(mutationOperator, new HashSet <MutationTarget>(visitor.SharedTargets)); } catch (Exception e) { _svc.Logging.ShowError("Finding targets operation failed in operator: {0}. Exception: {1}".Formatted(mutationOperator.Info.Name, e.ToString())); //throw new MutationException("Finding targets operation failed in operator: {0}.".Formatted(mutationOperator.Info.Name), e); } } return(mergedTargets); }
public IList<AssemblyNode> InitMutantsForOperators(ProgressCounter percentCompleted) { var root = new MutationRootNode(); int[] id = { 1 }; Func<int> genId = () => id[0]++; //var originalModules = _choices.WhiteSource;//_whiteCache.GetWhiteModules(); percentCompleted.Initialize(_originalCodebase.ModulesToMutate.Count); var subProgress = percentCompleted.CreateSubprogress(); var sw = new Stopwatch(); var assNodes = new List<AssemblyNode>(); foreach (var module in _originalCodebase.ModulesToMutate) { sw.Restart(); var mergedTargets = _mutationExecutor.FindTargets(module, subProgress); var assemblyNode = BuildMutantsTree(module.Module.Name, mergedTargets); _log.Info("Found total of: " + mergedTargets.Values.Count() + " mutation targets in " + assemblyNode.Name); assNodes.Add(assemblyNode); percentCompleted.Progress(); } root.State = MutantResultState.Untested; return assNodes; }