当前位置: 首页>>代码示例>>C#>>正文


C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法代码示例

本文整理汇总了C#中AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法的典型用法代码示例。如果您正苦于以下问题:C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法的具体用法?C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated怎么用?C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AnalysisContext的用法示例。


在下文中一共展示了AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckEquals(c),
                SyntaxKind.EqualsExpression);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckLogicalAnd(c),
                SyntaxKind.LogicalAndExpression);

            context.RegisterSyntaxNodeAction(
                c => CheckNotEquals(c),
                SyntaxKind.NotEqualsExpression);

            context.RegisterSyntaxNodeAction(
                c => CheckLogicalOr(c),
                SyntaxKind.LogicalOrExpression);

            context.RegisterSyntaxNodeAction(
                c => CheckLogicalNot(c),
                SyntaxKind.LogicalNotExpression);

            context.RegisterSyntaxNodeAction(
                c => CheckConditional(c),
                SyntaxKind.ConditionalExpression);
        }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:26,代码来源:BooleanLiteralUnnecessary.cs

示例2: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var argumentList = (AttributeArgumentListSyntax)c.Node;
                    if (!argumentList.Arguments.Any())
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, argumentList.GetLocation()));
                    }
                },
                SyntaxKind.AttributeArgumentList);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var objectCreation = (ObjectCreationExpressionSyntax)c.Node;
                    var argumentList = objectCreation.ArgumentList;
                    if (argumentList != null &&
                        objectCreation.Initializer != null &&
                        !argumentList.Arguments.Any())
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, argumentList.GetLocation()));
                    }
                },
                SyntaxKind.ObjectCreationExpression);
        }
开发者ID:andwi,项目名称:sonarlint-vs,代码行数:27,代码来源:RedundantParentheses.cs

示例3: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckConditionalExpression(c),
                SyntaxKind.ConditionalExpression);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckIfStatement(c),
                SyntaxKind.IfStatement);
        }
开发者ID:ozgurkayaist,项目名称:sonarlint-vs,代码行数:10,代码来源:ConditionalSimplification.cs

示例4: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckObjectCreation(c),
                SyntaxKind.ObjectCreationExpression);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckInvocation(c),
                SyntaxKind.InvocationExpression);
        }
开发者ID:ozgurkayaist,项目名称:sonarlint-vs,代码行数:10,代码来源:InsecureHashAlgorithm.cs

示例5: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckMethodOrProperty(c),
                SyntaxKind.MethodDeclaration,
                SyntaxKind.PropertyDeclaration);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckTypeDeclaration(c),
                SyntaxKind.ClassDeclaration,
                SyntaxKind.InterfaceDeclaration,
                SyntaxKind.StructDeclaration);

            context.RegisterCompilationStartAction(
                analysisContext =>
                {
                    var classWithBaseType = ImmutableDictionary<INamedTypeSymbol, INamedTypeSymbol>.Empty;

                    analysisContext.RegisterSymbolAction(
                        c =>
                        {
                            var classSymbol = c.Symbol as INamedTypeSymbol;
                            if (classSymbol == null ||
                                classSymbol.TypeKind != TypeKind.Class)
                            {
                                return;
                            }

                            if (!classWithBaseType.ContainsKey(classSymbol))
                            {
                                classWithBaseType = classWithBaseType.Add(classSymbol, classSymbol.BaseType);
                            }
                        },
                        SymbolKind.NamedType);

                    analysisContext.RegisterCompilationEndAction(
                        c =>
                        {
                            foreach (var analyzedClass in classWithBaseType.Keys)
                            {
                                if (DeniedDeclaredAccessibility.Contains(analyzedClass.DeclaredAccessibility) ||
                                    analyzedClass.IsSealed ||
                                    HasDerivedClass(analyzedClass, classWithBaseType))
                                {
                                    continue;
                                }

                                CheckMembers(c, analyzedClass);
                            }
                        });
                });
        }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:52,代码来源:RedundantModifier.cs

示例6: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckEnum(c),
                SyntaxKind.EnumDeclaration);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckInterface(c),
                SyntaxKind.InterfaceDeclaration);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c => CheckClass(c),
                SyntaxKind.ClassDeclaration);
        }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:14,代码来源:RedundantInheritanceList.cs

示例7: Initialize

 public override void Initialize(AnalysisContext context)
 {
     context.RegisterSyntaxNodeActionInNonGenerated(
         c => CheckLoop(c, ((WhileStatementSyntax) c.Node).Statement),
         SyntaxKind.WhileStatement);
     context.RegisterSyntaxNodeActionInNonGenerated(
         c => CheckLoop(c, ((ForStatementSyntax) c.Node).Statement),
         SyntaxKind.ForStatement);
     context.RegisterSyntaxNodeActionInNonGenerated(
         c => CheckLoop(c, ((ForEachStatementSyntax) c.Node).Statement),
         SyntaxKind.ForEachStatement);
     context.RegisterSyntaxNodeActionInNonGenerated(
         c => CheckIf(c, (IfStatementSyntax) c.Node),
         SyntaxKind.IfStatement);
 }
开发者ID:ozgurkayaist,项目名称:sonarlint-vs,代码行数:15,代码来源:MultilineBlocksWithoutBrace.cs

示例8: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var invocation = (InvocationExpressionSyntax)c.Node;
                    var methodSymbol = c.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;

                    if (methodSymbol == null ||
                        methodSymbol.Name != "ToCharArray" ||
                        methodSymbol.ContainingType.SpecialType != SpecialType.System_String ||
                        methodSymbol.Parameters.Length != 0)
                    {
                        return;
                    }

                    if (invocation.Parent is ElementAccessExpressionSyntax ||
                        invocation.Parent is ForEachStatementSyntax)
                    {
                        var memberAccess = invocation.Expression as MemberAccessExpressionSyntax;
                        if (memberAccess == null)
                        {
                            return;
                        }

                        c.ReportDiagnostic(Diagnostic.Create(Rule, memberAccess.Name.GetLocation()));
                    }
                },
                SyntaxKind.InvocationExpression);
        }
开发者ID:jakobehn,项目名称:sonarlint-vs,代码行数:30,代码来源:RedundantToCharArrayCall.cs

示例9: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var typeSyntax = (TypeSyntax)c.Node;
                    if (typeSyntax.Parent is QualifiedNameSyntax)
                    {
                        return;
                    }

                    var typeSymbol = c.SemanticModel.GetTypeInfo(typeSyntax).Type;
                    if (typeSymbol == null)
                    {
                        return;
                    }

                    if (typeSymbol.SpecialType == SpecialType.System_UInt16 ||
                        typeSymbol.SpecialType == SpecialType.System_UInt32 ||
                        typeSymbol.SpecialType == SpecialType.System_UInt64)
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, typeSyntax.GetLocation(),
                            SignedPairs[typeSymbol.SpecialType]));
                    }
                },
                SyntaxKind.PredefinedType,
                SyntaxKind.IdentifierName,
                SyntaxKind.QualifiedName);
        }
开发者ID:Godin,项目名称:sonarlint-vs,代码行数:29,代码来源:UnsignedTypesUsage.cs

示例10: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var trivias = c.Node.DescendantTrivia(node =>
                      {
                          return !node.IsKind(SyntaxKind.Block);
                      });
                        foreach(var trivia in trivias)
                        {
                            if (trivia.IsKind((SyntaxKind.RegionDirectiveTrivia)))
                            {
                                var diagnostic = Diagnostic.Create(Rule, trivia.GetLocation());
                                c.ReportDiagnostic(diagnostic);
                            }
                        }
                }

               ,
                SyntaxKind.FieldDeclaration,
                SyntaxKind.PropertyDeclaration,
                SyntaxKind.MethodDeclaration

             );
        }
开发者ID:peterstevens130561,项目名称:sonarlint-vs,代码行数:26,代码来源:RegionInDeclaration.cs

示例11: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var lessThan = (BinaryExpressionSyntax) c.Node;
                    int constValue;
                    if (SillyBitwiseOperation.TryGetConstantIntValue(lessThan.Left, out constValue) &&
                        constValue == 0 &&
                        IsIndexOfCall(lessThan.Right, c.SemanticModel))
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, Location.Create(lessThan.SyntaxTree,
                            TextSpan.FromBounds(lessThan.Left.SpanStart, lessThan.OperatorToken.Span.End))));
                    }
                },
                SyntaxKind.LessThanExpression);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var greaterThan = (BinaryExpressionSyntax)c.Node;
                    int constValue;
                    if (SillyBitwiseOperation.TryGetConstantIntValue(greaterThan.Right, out constValue) &&
                        constValue == 0 &&
                        IsIndexOfCall(greaterThan.Left, c.SemanticModel))
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, Location.Create(greaterThan.SyntaxTree,
                            TextSpan.FromBounds(greaterThan.OperatorToken.SpanStart, greaterThan.Right.Span.End))));
                    }
                },
                SyntaxKind.GreaterThanExpression);
        }
开发者ID:roel4ez,项目名称:sonarlint-vs,代码行数:32,代码来源:IndexOfCheckAgainstZero.cs

示例12: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var expression = (BinaryExpressionSyntax) c.Node;

                    var parenthesizedParent = expression.Parent;

                    while (parenthesizedParent is ParenthesizedExpressionSyntax)
                    {
                        parenthesizedParent = parenthesizedParent.Parent;
                    }

                    var logicalNot = parenthesizedParent as PrefixUnaryExpressionSyntax;
                    if (logicalNot != null && logicalNot.OperatorToken.IsKind(SyntaxKind.ExclamationToken))
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, logicalNot.GetLocation(),
                            OppositeTokens[expression.OperatorToken.Kind()]));
                    }
                },
                SyntaxKind.GreaterThanExpression,
                SyntaxKind.GreaterThanOrEqualExpression,
                SyntaxKind.LessThanExpression,
                SyntaxKind.LessThanOrEqualExpression,
                SyntaxKind.EqualsExpression,
                SyntaxKind.NotEqualsExpression);
        }
开发者ID:andwi,项目名称:sonarlint-vs,代码行数:28,代码来源:BooleanCheckInverted.cs

示例13: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var assignment = (AssignmentExpressionSyntax)c.Node;
                    if (!IsDelegateSubtraction(assignment, c.SemanticModel) ||
                        ExpressionIsSimple(assignment.Right))
                    {
                        return;
                    }

                    c.ReportDiagnostic(Diagnostic.Create(Rule, assignment.GetLocation()));
                },
                SyntaxKind.SubtractAssignmentExpression);

            context.RegisterSyntaxNodeAction(
                c =>
                {
                    var binary = (BinaryExpressionSyntax)c.Node;
                    if (!IsDelegateSubtraction(binary, c.SemanticModel) ||
                        !IsTopLevelSubtraction(binary))
                    {
                        return;
                    }

                    if (!BinaryIsValidSubstraction(binary))
                    {
                        c.ReportDiagnostic(Diagnostic.Create(Rule, binary.GetLocation()));
                    }
                },
                SyntaxKind.SubtractExpression);
        }
开发者ID:ozgurkayaist,项目名称:sonarlint-vs,代码行数:33,代码来源:DelegateSubtraction.cs

示例14: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c => c.ReportDiagnostic(Diagnostic.Create(Rule, c.Node.GetLocation())),
                SyntaxKind.ExitForStatement,
                SyntaxKind.ExitFunctionStatement,
                SyntaxKind.ExitPropertyStatement,
                SyntaxKind.ExitSubStatement,
                SyntaxKind.ExitTryStatement,
                SyntaxKind.ExitWhileStatement);

            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var parent = c.Node.Parent;
                    while(parent != null &&
                        !(parent is DoLoopBlockSyntax))
                    {
                        parent = parent.Parent;
                    }

                    if (parent == null ||
                        parent.IsKind(SyntaxKind.SimpleDoLoopBlock))
                    {
                        return;
                    }

                    c.ReportDiagnostic(Diagnostic.Create(Rule, c.Node.GetLocation()));
                },
                SyntaxKind.ExitDoStatement);
        }
开发者ID:ozgurkayaist,项目名称:sonarlint-vs,代码行数:31,代码来源:ExitStatementUsage.cs

示例15: Initialize

        public override void Initialize(AnalysisContext context)
        {
            context.RegisterSyntaxNodeActionInNonGenerated(
                c =>
                {
                    var outerInvocation = (InvocationExpressionSyntax)c.Node;
                    if (!IsMethodOrderByExtension(outerInvocation, c.SemanticModel))
                    {
                        return;
                    }

                    var memberAccess = outerInvocation.Expression as MemberAccessExpressionSyntax;
                    if (memberAccess == null)
                    {
                        return;
                    }

                    var innerInvocation = memberAccess.Expression as InvocationExpressionSyntax;
                    if (!IsMethodOrderByExtension(innerInvocation, c.SemanticModel) &&
                        !IsMethodThenByExtension(innerInvocation, c.SemanticModel))
                    {
                        return;
                    }

                    c.ReportDiagnostic(Diagnostic.Create(Rule, memberAccess.Name.GetLocation()));
                },
                SyntaxKind.InvocationExpression);
        }
开发者ID:roel4ez,项目名称:sonarlint-vs,代码行数:28,代码来源:OrderByRepeated.cs


注:本文中的AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。