private void CreateAnalyzerWithinCodeBlock(CodeBlockStartAnalysisContext<SyntaxKind> context)
        {
            var methodDeclaration = context.OwningSymbol as IMethodSymbol;

            if (methodDeclaration != null)
            {
                ITypeSymbol cancellationTokenType = context.SemanticModel.Compilation.GetTypeByMetadataName("System.Threading.CancellationToken");

                var paramTypes = methodDeclaration.Parameters.Select(x => x.Type);

                if (paramTypes.Contains(cancellationTokenType))
                {
                    // Analyze the inside of the code block for invocationexpressions
                    context.RegisterSyntaxNodeAction(new CancellationAnalyzer_Inner().AnalyzeNode, SyntaxKind.InvocationExpression);
                }
            }
        }
 public static void OnCodeBlockStarted(CodeBlockStartAnalysisContext<SyntaxKind> context)
 {
     Action<Action<SyntaxNodeAnalysisContext>, ImmutableArray<SyntaxKind>> registerMethod =
         (action, Kinds) => context.RegisterSyntaxNodeAction(action, Kinds);
     var analyzer = new NodeAnalyzer();
     analyzer.Initialize(registerMethod);
 }
            protected override void GetSyntaxAnalyzer(CodeBlockStartAnalysisContext <SyntaxKind> context, ImmutableHashSet <ISymbol> symbols)
            {
                var analyzer = new SyntaxAnalyzer(symbols);

                context.RegisterSyntaxNodeAction(analyzer.AnalyzeNode, analyzer.SyntaxKindsOfInterest.ToArray());
            }
Beispiel #4
0
 public void Initialize(CodeBlockStartAnalysisContext <TLanguageKindEnum> context)
 {
     context.RegisterSyntaxNodeAction(new SyntaxNodeAnalyzer(analyzer, taskTypes).AnalyzeNode, analyzer.AwaitSyntaxKind);
 }
 public void Initialize(CodeBlockStartAnalysisContext <TLanguageKindEnum> context)
 {
     _container.OnAbstractMember("CodeBlockStart", context.CodeBlock, context.OwningSymbol);
     context.RegisterCodeBlockEndAction(_container.AnalyzeCodeBlock);
     context.RegisterSyntaxNodeAction(_container.AnalyzeNode, TestDiagnosticAnalyzer <TLanguageKindEnum> .AllSyntaxKinds.ToArray());
 }
 protected override void GetSyntaxAnalyzer(CodeBlockStartAnalysisContext <SyntaxKind> context, INamedTypeSymbol genericEnumerableSymbol, IMethodSymbol genericEmptyEnumerableSymbol)
 {
     context.RegisterSyntaxNodeAction(new SyntaxAnalyzer(genericEnumerableSymbol, genericEmptyEnumerableSymbol).AnalyzeNode, SyntaxKind.ReturnStatement);
 }
 protected override void GetCodeBlockEndedAnalyzer(CodeBlockStartAnalysisContext <SyntaxKind> context, IMethodSymbol constructorSymbol)
 {
     context.RegisterSyntaxNodeAction(new SyntaxNodeAnalyzer(constructorSymbol).AnalyzeNode, SyntaxKind.InvocationExpression);
 }
Beispiel #8
0
        private void CreateAnalyzerWithinCodeBlock(CodeBlockStartAnalysisContext <TLanguageKindEnum> context)
        {
            var analyzer = GetExecutableNodeAnalyzer();

            context.RegisterSyntaxNodeAction(analyzer.AnalyzeNode, analyzer.SyntaxKindsOfInterest.ToArray());
        }
 public void CreateAnalyzerWithinCodeBlock(CodeBlockStartAnalysisContext<SyntaxKind> context)
 {
     var blockAnalyzer = new CodeBlockAnalyzer();
     context.RegisterCodeBlockEndAction(blockAnalyzer.AnalyzeCodeBlock);
     context.RegisterSyntaxNodeAction(blockAnalyzer.AnalyzeNode, blockAnalyzer.SyntaxKindsOfInterest.ToArray());
 }
                public void Initialize(CodeBlockStartAnalysisContext<VisualBasic.SyntaxKind> analysisContext)
                {
                    analysisContext.RegisterCodeBlockEndAction(
                        (context) =>
                            {
                                context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(s_rule, context.OwningSymbol.Locations.First(), messageArgs: context.OwningSymbol.Name + ":end"));
                            });

                    analysisContext.RegisterSyntaxNodeAction(
                        (context) =>
                            {
                                context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(s_rule, context.Node.GetLocation(), messageArgs: context.Node.ToFullString()));
                            },
                        VisualBasic.SyntaxKind.InvocationExpression);
                }
                public void Initialize(CodeBlockStartAnalysisContext<CSharp.SyntaxKind> analysisContext)
                {
                    analysisContext.RegisterSyntaxNodeAction(
                        (context) =>
                        {
                            context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(Desciptor2, Location.None));
                        },
                        CSharp.SyntaxKind.EqualsValueClause);

                    analysisContext.RegisterSyntaxNodeAction(
                        (context) =>
                        {
                            context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(Desciptor3, Location.None));
                        },
                        CSharp.SyntaxKind.BaseConstructorInitializer);

                    analysisContext.RegisterSyntaxNodeAction(
                        (context) =>
                        {
                            DiagnosticDescriptor descriptor;
                            switch (context.Node.Parent.Kind())
                            {
                                case SyntaxKind.PropertyDeclaration:
                                    descriptor = Desciptor4;
                                    break;

                                case SyntaxKind.IndexerDeclaration:
                                    descriptor = Desciptor5;
                                    break;

                                default:
                                    descriptor = Desciptor6;
                                    break;
                            }

                            context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(descriptor, Location.None));
                        },
                        CSharp.SyntaxKind.ArrowExpressionClause);
                }