Exemple #1
0
        protected override bool ShouldIgnoreAccessor(IMethodSymbol accessorMethod, Compilation compilation)
        {
            if (!(accessorMethod.GetFirstSyntaxRef() is AccessorDeclarationSyntax accessor) ||
                ((SyntaxNode)accessor.Body ?? accessor).ContainsGetOrSetOnDependencyProperty(compilation))
            {
                return(true);
            }

            // Special case: ignore the accessor if the only statement/expression is a throw.
            if (accessor.Body == null)
            {
                // Expression-bodied syntax
                return(accessor.DescendantNodes().FirstOrDefault() is ArrowExpressionClauseSyntax arrowClause &&
                       ThrowExpressionSyntaxWrapper.IsInstance(arrowClause.Expression));
            }

            // Statement-bodied syntax
            return(accessor.Body.DescendantNodes().Count(n => n is StatementSyntax) == 1 &&
                   accessor.Body.DescendantNodes().Count(n => n is ThrowStatementSyntax) == 1);
        }