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; }