Exemplo n.º 1
0
             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));
            }
Exemplo n.º 2
0
 private bool CallsVirtualDispose(BaseMethodDeclarationSyntax methodDeclaration, string argumentValue)
 {
     return(CSharpSyntaxHelper.ContainsMethodInvocation(methodDeclaration,
                                                        this.semanticModel,
                                                        method => HasArgumentValues(method, argumentValue),
                                                        IsDisposeBool));
 }
Exemplo n.º 3
0
 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)));
 }
Exemplo n.º 4
0
 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");
 };
Exemplo n.º 5
0
        private SyntaxNode GetNextUnparenthesizedParent(SyntaxNode node)
        {
            if (!(node is ExpressionSyntax expression))
            {
                return(node);
            }

            var topmostParent = CSharpSyntaxHelper.GetSelfOrTopParenthesizedExpression(expression);

            return(topmostParent.Parent);
        }
Exemplo n.º 6
0
        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()));
                }
            }
        }
Exemplo n.º 7
0
 public void IsNullLiteral_Null_CS() =>
 CSharpSyntaxHelper.IsNullLiteral(null).Should().BeFalse();