private void AnalyzeForLoopSection(ForLoopSection section, [NotNull] IOperation operation, OperationAnalysisContext context) { var statementWalker = new StatementWalker(section); AnalyzeVisitOperation(operation, statementWalker, context); }
private void AnalyzeCodeBlock(OperationBlockAnalysisContext context) { var statementWalker = new StatementWalker(); statementWalker.VisitBlocks(context.OperationBlocks); context.CancellationToken.ThrowIfCancellationRequested(); if (statementWalker.StatementCount > 7) { ReportMember(context, statementWalker.StatementCount); } }
private void AnalyzeVisitOperation([NotNull] IOperation operation, [NotNull] StatementWalker statementWalker, OperationAnalysisContext context) { statementWalker.Visit(operation); context.CancellationToken.ThrowIfCancellationRequested(); if (statementWalker.IdentifiersAssigned.Count > 1) { string identifiers = FormatIdentifierList(statementWalker.IdentifiersAssigned.ToList()); Location location = GetLocation(operation); context.ReportDiagnostic(Diagnostic.Create(Rule, location, identifiers)); } }
private static void AnalyzeCodeBlock(CodeBlockAnalysisContext context, int maxStatementCount) { if (context.OwningSymbol is INamedTypeSymbol || context.OwningSymbol.IsSynthesized()) { return; } var statementWalker = new StatementWalker(context.CancellationToken); statementWalker.Visit(context.CodeBlock); if (statementWalker.StatementCount > maxStatementCount) { ReportAtContainingSymbol(statementWalker.StatementCount, maxStatementCount, context); } }
private void AnalyzeStatement(OperationAnalysisContext context) { if (!context.Operation.IsStatement()) { return; } if (context.Operation is IForLoopOperation forLoopOperation) { AnalyzeForLoop(forLoopOperation, context); } else { var statementWalker = new StatementWalker(ForLoopSection.None); AnalyzeVisitOperation(context.Operation, statementWalker, context); } }