public VisualCodeVisitor(string operatorId, IOperatorCodeVisitor visitor, IModule module) : base(visitor) { visitor.Parent = this; _processor = new AstProcessor(module); _operatorId = operatorId; _mutationTargets = new List <MutationTarget>(); _sharedTargets = new List <MutationTarget>(); _formatter = new AstFormatter(); }
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 HighestVisitor(IOperatorCodeVisitor visitor, IModule module, string id) : base(id, visitor, module) { }
public VisualCodeVisitorBase(IOperatorCodeVisitor visitor) { this.visitor = visitor; }