public MutationDocumentDetails(SyntaxNode orginal, SyntaxNode mutation, MutationLocationInfo location) { Orginal = orginal; Mutation = mutation; FullOrginal = GetRoot(orginal); FullMutation = FullOrginal.ReplaceNode(Orginal, Mutation); Location = location; }
protected bool IsExcludedFromCodeCoverage(MutationLocationInfo location, SyntaxNode syntaxNode) { var attributes = new List <string>(); var methodDeclaration = syntaxNode.FirstAncestorOrSelf <MethodDeclarationSyntax>(); var constructorDeclarationSyntax = syntaxNode.FirstAncestorOrSelf <ConstructorDeclarationSyntax>(); var propertyDeclaration = syntaxNode.FirstAncestorOrSelf <PropertyDeclarationSyntax>(); var classDeclaration = syntaxNode.FirstAncestorOrSelf <ClassDeclarationSyntax>(); attributes.AddRange(GetAttributeName(methodDeclaration?.AttributeLists)); attributes.AddRange(GetAttributeName(constructorDeclarationSyntax?.AttributeLists)); attributes.AddRange(GetAttributeName(propertyDeclaration?.AttributeLists)); attributes.AddRange(GetAttributeName(classDeclaration?.AttributeLists)); if (attributes.Any(a => a.Equals(ExcludeFromCoverageAttributeName, StringComparison.InvariantCultureIgnoreCase))) { Log.Info($"Ignoring mutation at {location} because of {ExcludeFromCoverageAttributeName} attribute"); return(true); } return(false); }