public void FilterMutants() { foreach (var file in _projectInfo.GetAllFiles()) { // CompileError is a final status and can not be changed during filtering. var mutantsToFilter = file.Mutants.Where(x => x.ResultStatus != MutantStatus.CompileError); _mutantFilter.FilterMutants(mutantsToFilter, file, _options); } }
public void FilterMutants() { foreach (var file in _projectInfo.GetAllFiles()) { // CompileError is a final status and can not be changed during filtering. var mutantsToFilter = file.Mutants.Where(x => x.ResultStatus != MutantStatus.CompileError); _mutantFilter.FilterMutants(mutantsToFilter, ((FileLeaf)file).ToReadOnly(), _options); } var skippedMutants = _projectInfo.Mutants.Where(m => m.ResultStatus != MutantStatus.NotRun); var skippedMutantGroups = skippedMutants.GroupBy(x => new { x.ResultStatus, x.ResultStatusReason }).OrderBy(x => x.Key.ResultStatusReason); foreach (var skippedMutantGroup in skippedMutantGroups) { _logger.LogInformation( FormatStatusReasonLogString(skippedMutantGroup.Count(), skippedMutantGroup.Key.ResultStatus), skippedMutantGroup.Count(), skippedMutantGroup.Key.ResultStatus, skippedMutantGroup.Key.ResultStatusReason); } if (skippedMutants.Any()) { _logger.LogInformation( LeftPadAndFormatForMutantCount(skippedMutants.Count(), "total mutants are skipped for the above mentioned reasons"), skippedMutants.Count()); } var notRunMutantsWithResultStatusReason = _projectInfo.Mutants .Where(m => m.ResultStatus == MutantStatus.NotRun && !string.IsNullOrEmpty(m.ResultStatusReason)) .GroupBy(x => x.ResultStatusReason); foreach (var notRunMutantReason in notRunMutantsWithResultStatusReason) { _logger.LogInformation( LeftPadAndFormatForMutantCount(notRunMutantReason.Count(), "mutants will be tested because: {1}"), notRunMutantReason.Count(), notRunMutantReason.Key); } var notRunCount = _projectInfo.Mutants.Count(m => m.ResultStatus == MutantStatus.NotRun); _logger.LogInformation(LeftPadAndFormatForMutantCount(notRunCount, "total mutants will be tested"), notRunCount); _reporter.OnMutantsCreated(_projectInfo.ToReadOnlyInputComponent()); }
public void FilterMutants() { foreach (var file in _input.ProjectInfo.ProjectContents.GetAllFiles()) { _mutantFilter.FilterMutants(file.Mutants, file, _options); } var skippedMutants = _input.ProjectInfo.ProjectContents.ReadOnlyMutants.Where(m => m.ResultStatus != MutantStatus.NotRun); var skippedMutantGroups = skippedMutants.GroupBy(x => new { x.ResultStatus, x.ResultStatusReason }).OrderBy(x => x.Key.ResultStatusReason); foreach (var skippedMutantGroup in skippedMutantGroups) { _logger.LogInformation( FormatStatusReasonLogString(skippedMutantGroup.Count(), skippedMutantGroup.Key.ResultStatus), skippedMutantGroup.Count(), skippedMutantGroup.Key.ResultStatus, skippedMutantGroup.Key.ResultStatusReason); } if (skippedMutants.Any()) { _logger.LogInformation( LeftPadAndFormatForMutantCount(skippedMutants.Count(), "total mutants are skipped for the above mentioned reasons"), skippedMutants.Count()); } var notRunMutantsWithResultStatusReason = _input.ProjectInfo.ProjectContents.ReadOnlyMutants .Where(m => m.ResultStatus == MutantStatus.NotRun && !string.IsNullOrEmpty(m.ResultStatusReason)) .GroupBy(x => x.ResultStatusReason); foreach (var notRunMutantReason in notRunMutantsWithResultStatusReason) { _logger.LogInformation( LeftPadAndFormatForMutantCount(notRunMutantReason.Count(), "mutants will be tested because: {1}"), notRunMutantReason.Count(), notRunMutantReason.Key); } var notRunCount = _input.ProjectInfo.ProjectContents.ReadOnlyMutants.Count(m => m.ResultStatus == MutantStatus.NotRun); _logger.LogInformation(LeftPadAndFormatForMutantCount(notRunCount, "total mutants will be tested"), notRunCount); _reporter.OnMutantsCreated(_input.ProjectInfo.ProjectContents); }
public void Mutate() { // Mutate source files foreach (var file in _input.ProjectInfo.ProjectContents.GetAllFiles()) { _logger.LogDebug($"Mutating {file.Name}"); // Mutate the syntax tree var mutatedSyntaxTree = _orchestrator.Mutate(file.SyntaxTree.GetRoot()); // Add the mutated syntax tree for compilation file.MutatedSyntaxTree = mutatedSyntaxTree.SyntaxTree; if (_options.DevMode) { _logger.LogTrace($"Mutated {file.Name}:{Environment.NewLine}{mutatedSyntaxTree.ToFullString()}"); } // Filter the mutants var allMutants = _orchestrator.GetLatestMutantBatch(); _mutantFilter.FilterMutants(allMutants, file, _options); file.Mutants = allMutants; } _logger.LogDebug("{0} mutants created", _input.ProjectInfo.ProjectContents.Mutants.Count()); CompileMutations(); var skippedMutantGroups = _input.ProjectInfo.ProjectContents.GetAllFiles() .SelectMany(f => f.Mutants) .Where(x => x.ResultStatus != MutantStatus.NotRun).GroupBy(x => x.ResultStatusReason) .OrderBy(x => x.Key); foreach (var skippedMutantGroup in skippedMutantGroups) { _logger.LogInformation("{0} mutants got status {1}. Reason: {2}", skippedMutantGroup.Count(), skippedMutantGroup.First().ResultStatus, skippedMutantGroup.Key); } _logger.LogInformation("{0} mutants ready for test", _input.ProjectInfo.ProjectContents.TotalMutants.Count()); _reporter.OnMutantsCreated(_input.ProjectInfo.ProjectContents); }