private bool CallsVirtualDispose(BaseMethodDeclarationSyntax methodDeclaration, string argumentValue) { return(SyntaxHelper.ContainsMethodInvocation(methodDeclaration, semanticModel, method => HasArgumentValues(method, argumentValue), IsVirtualDisposeBool)); }
private bool CallsSuppressFinalize(BaseMethodDeclarationSyntax methodDeclaration) { return(SyntaxHelper.ContainsMethodInvocation(methodDeclaration, semanticModel, method => HasArgumentValues(method, "this"), KnownMethods.IsGcSuppressFinalize)); }
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) && !SyntaxHelper.ContainsMethodInvocation(methodDeclaration, context.SemanticModel, mSyntax => true, mSymbol => methodOverloadSet.Contains(mSymbol))) { context.ReportDiagnosticWhenActive(Diagnostic.Create(rule_S3997, methodDeclaration.FindIdentifierLocation())); } } else { foreach (int paramIdx in stringUrlParams) { context.ReportDiagnosticWhenActive(Diagnostic.Create(rule_S3994, methodDeclaration.ParameterList.Parameters[paramIdx].Type.GetLocation())); } } }