public static bool ExcludeFromExternalCoverage(this ClassDeclarationSyntax claz) { if (claz == null) { return(true); } var namespaceNode = claz.Ancestors <NamespaceDeclarationSyntax>().LastOrDefault <SyntaxNode>(); if (namespaceNode != null && namespaceNode.GetLeadingTrivia().ToString().Contains("<auto-generated>")) { return(true); } var baseListSyntax = claz.BaseList; if (baseListSyntax != null && baseListSyntax.Types.Any()) { foreach (var type in baseListSyntax.Types) { var typeSyntax = type.Type; var baseClass = typeSyntax.ToString(); if (typeSyntax is GenericNameSyntax syntax) { baseClass = syntax.Identifier.ValueText; } if (baseClass.Equals("DbContext", StringComparison.InvariantCultureIgnoreCase) || baseClass.EndsWith("Exception", StringComparison.InvariantCultureIgnoreCase)) { return(true); } } } var className = claz.ClassName(); if (claz.NameSpace().StartsWith("System.Linq", StringComparison.InvariantCultureIgnoreCase) || className != null && (className.EndsWith("Collections", StringComparison.InvariantCultureIgnoreCase) || className.EndsWith("Collection", StringComparison.InvariantCultureIgnoreCase))) { return(true); } return(claz.DescendantNodes <MethodDeclarationSyntax>().All(x => { var valueText = x.Identifier.ValueText; return MethodsToExcludeFromExternalCoverage.Contains(valueText) || x.ReturnType.ToString() == className; })); }
public static string FullName(this ClassDeclarationSyntax cd) { return(cd == null ? null : $"{cd.NameSpace()}.{cd.ClassName()}"); }