expectedStatementsCount == 1); // Expression body has only one statement private bool CallsSuppressFinalize(BaseMethodDeclarationSyntax methodDeclaration) { return(CSharpSyntaxHelper.ContainsMethodInvocation(methodDeclaration, this.semanticModel, method => HasArgumentValues(method, "this"), KnownMethods.IsGcSuppressFinalize)); }
private bool CallsVirtualDispose(BaseMethodDeclarationSyntax methodDeclaration, string argumentValue) { return(CSharpSyntaxHelper.ContainsMethodInvocation(methodDeclaration, this.semanticModel, method => HasArgumentValues(method, argumentValue), IsDisposeBool)); }
private static bool HasInstanceReferences(IEnumerable <SyntaxNode> nodes, SemanticModel semanticModel) { return(nodes.OfType <ExpressionSyntax>() .Where(IsLeftmostIdentifierName) .Where(n => !CSharpSyntaxHelper.IsInNameofCall(n, semanticModel)) .Any(n => IsInstanceMember(n, semanticModel))); }
protected override InvocationCondition HasPkcs1PaddingArgument() => (context) => { var argumentList = ((InvocationExpressionSyntax)context.Invocation).ArgumentList; var values = CSharpSyntaxHelper.ArgumentValuesForParameter(context.SemanticModel, argumentList, "padding"); return(values.Length == 1 && values[0] is ExpressionSyntax valueSyntax && context.SemanticModel.GetSymbolInfo(valueSyntax).Symbol is ISymbol symbol && symbol.Name == "Pkcs1"); };
private SyntaxNode GetNextUnparenthesizedParent(SyntaxNode node) { if (!(node is ExpressionSyntax expression)) { return(node); } var topmostParent = CSharpSyntaxHelper.GetSelfOrTopParenthesizedExpression(expression); return(topmostParent.Parent); }
private void VerifyMethodDeclaration(SyntaxNodeAnalysisContext context) { var methodDeclaration = (BaseMethodDeclarationSyntax)context.Node; var methodSymbol = context.SemanticModel.GetDeclaredSymbol(methodDeclaration); if (methodSymbol == null || methodSymbol.IsOverride) { return; } VerifyReturnType(context, methodDeclaration, methodSymbol); var stringUrlParams = GetStringUrlParamIndexes(methodSymbol); if (!stringUrlParams.Any()) { return; } var methodOverloads = FindOverloadsThatUseUriTypeInPlaceOfString(methodSymbol, stringUrlParams); if (methodOverloads.Any()) { var methodOverloadSet = new HashSet <IMethodSymbol>(methodOverloads); if (!methodDeclaration.IsKind(SyntaxKind.ConstructorDeclaration) && !CSharpSyntaxHelper.ContainsMethodInvocation(methodDeclaration, context.SemanticModel, mSyntax => true, mSymbol => methodOverloadSet.Contains(mSymbol))) { context.ReportDiagnosticWhenActive(Diagnostic.Create(rule_S3997, methodDeclaration.FindIdentifierLocation())); } } else { foreach (var paramIdx in stringUrlParams) { context.ReportDiagnosticWhenActive(Diagnostic.Create(rule_S3994, methodDeclaration.ParameterList.Parameters[paramIdx].Type.GetLocation())); } } }
public void IsNullLiteral_Null_CS() => CSharpSyntaxHelper.IsNullLiteral(null).Should().BeFalse();