예제 #1
0
        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;
            }));
        }
예제 #2
0
 public static string FullName(this ClassDeclarationSyntax cd)
 {
     return(cd == null
         ? null
         : $"{cd.NameSpace()}.{cd.ClassName()}");
 }