private void AnalyzeCondition(SyntaxNodeAnalysisContext context, ExpressionSyntax conditionNode)
        {
            if (Helper.IsGeneratedCode(context))
            {
                return;
            }

            var numOperators = conditionNode.DescendantTokens().Where(IsLogicalOperator).Count();

            if (numOperators >= _maxOperators)
            {
                var newLineLocation = conditionNode.GetLocation();
                context.ReportDiagnostic(Diagnostic.Create(Rule, newLineLocation, numOperators, _maxOperators));
            }
        }
            private ExpressionSyntax TryReplaceAngleBracesWithCurlyBraces(ExpressionSyntax expression, bool isInsideCref)
            {
                if (isInsideCref)
                {
                    var leftTokens = expression.DescendantTokens();
                    List <SyntaxToken> candidateTokens = new List <SyntaxToken>();

                    foreach (var candidateToken in leftTokens)
                    {
                        if (candidateToken.Kind() == SyntaxKind.LessThanToken || candidateToken.Kind() == SyntaxKind.GreaterThanToken)
                        {
                            candidateTokens.Add(candidateToken);
                            continue;
                        }
                    }

                    expression = expression.ReplaceTokens(candidateTokens, computeReplacementToken: ReplaceTokenForCref);
                }

                return(expression);
            }
        private List <ParameterSyntax> Parameters(ExpressionSyntax expression)
        {
            var parameters = new List <ParameterSyntax>();

            var identifiers = expression.DescendantTokens().Where(t => t.IsKind(SyntaxKind.IdentifierToken));

            foreach (var identifier in identifiers)
            {
                var containingClass = identifier.Parent.AncestorsAndSelf().OfType <ClassDeclarationSyntax>().Single();
                var isField         = containingClass
                                      .Members.OfType <FieldDeclarationSyntax>()
                                      .Any(field => field.Declaration.Variables.Any(variable => variable.Identifier.ValueText.Equals(identifier.ValueText)));
                if (isField)
                {
                    continue;
                }

                var isMethod = containingClass
                               .Members.OfType <MethodDeclarationSyntax>()
                               .Any(method => method.Identifier.ValueText == identifier.ValueText);
                if (isMethod)
                {
                    continue;
                }

                var typeSymbol = _semanticModel.GetTypeInfo(identifier.Parent).Type;
                if (typeSymbol is null)
                {
                    continue;
                }

                var typeSyntax = SyntaxFactory.ParseTypeName(typeSymbol.ToDisplayString());
                var parameter  = SyntaxFactory.Parameter(SyntaxFactory.Identifier(identifier.ValueText)).WithType(typeSyntax);
                parameters.Add(parameter);
            }

            return(parameters);
        }
            private ExpressionSyntax TryReplaceAngleBracesWithCurlyBraces(ExpressionSyntax expression, bool isInsideCref)
            {
                if (isInsideCref)
                {
                    var leftTokens = expression.DescendantTokens();
                    List<SyntaxToken> candidateTokens = new List<SyntaxToken>();

                    foreach (var candidateToken in leftTokens)
                    {
                        if (candidateToken.Kind() == SyntaxKind.LessThanToken || candidateToken.Kind() == SyntaxKind.GreaterThanToken)
                        {
                            candidateTokens.Add(candidateToken);
                            continue;
                        }
                    }

                    expression = expression.ReplaceTokens(candidateTokens, computeReplacementToken: ReplaceTokenForCref);
                }

                return expression;
            }