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


C# CompilationStartAnalysisContext.RegisterSyntaxTreeAction方法代码示例

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


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

示例1: Analyze

 void Analyze(CompilationStartAnalysisContext compilationContext)
 {
     var compilation = compilationContext.Compilation;
     compilationContext.RegisterSyntaxTreeAction(async delegate (SyntaxTreeAnalysisContext context)
     {
         try
         {
             if (!compilation.SyntaxTrees.Contains(context.Tree))
                 return;
             var semanticModel = compilation.GetSemanticModel(context.Tree);
             var root = await context.Tree.GetRootAsync(context.CancellationToken).ConfigureAwait(false);
             var model = compilationContext.Compilation.GetSemanticModel(context.Tree);
             if (model.IsFromGeneratedCode(compilationContext.CancellationToken))
                 return;
             new GatherVisitor(context, semanticModel).Visit(root);
         }
         catch (OperationCanceledException) {}
     });
 }
开发者ID:ChrisCross67,项目名称:RefactoringEssentials,代码行数:19,代码来源:XmlDocAnalyzer.cs

示例2: Analyze

        void Analyze(CompilationStartAnalysisContext compilationContext)
        {
            var compilation = compilationContext.Compilation;
            compilationContext.RegisterSyntaxTreeAction(delegate (SyntaxTreeAnalysisContext context)
            {
                try
                {
                    if (!compilation.SyntaxTrees.Contains(context.Tree))
                        return;
                    var semanticModel = compilation.GetSemanticModel(context.Tree);
                    var root = context.Tree.GetRoot(context.CancellationToken);
                    var model = compilationContext.Compilation.GetSemanticModel(context.Tree);
                    if (model.IsFromGeneratedCode(compilationContext.CancellationToken))
                        return;
                    var usageVisitor = new GetDelgateUsagesVisitor(semanticModel, context.CancellationToken);
                    usageVisitor.Visit(root);

                    var analyzer = new NodeAnalyzer(context, model, usageVisitor);
                    analyzer.Visit(root);
                }
                catch (OperationCanceledException) {}
            });
        }
开发者ID:ceddlyburge,项目名称:RefactoringEssentials,代码行数:23,代码来源:UnusedParameterAnalyzer.cs

示例3: AnalyzeCompilation

 private static void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartAnalysisContext)
 {
     var compilation = compilationStartAnalysisContext.Compilation;
     compilationStartAnalysisContext.RegisterSyntaxTreeAction(context => AnalyzeTree(context, compilation));
 }
开发者ID:Cadums01,项目名称:code-cracker,代码行数:5,代码来源:ReadonlyFieldAnalyzer.cs

示例4: Analyze

        void Analyze(CompilationStartAnalysisContext compilationContext)
        {
            var compilation = compilationContext.Compilation;
            compilationContext.RegisterSyntaxTreeAction(async delegate (SyntaxTreeAnalysisContext context)
            {
                try
                {
                    if (!compilation.SyntaxTrees.Contains(context.Tree))
                        return;
                    var semanticModel = compilation.GetSemanticModel(context.Tree);
                    var root = await context.Tree.GetRootAsync(context.CancellationToken).ConfigureAwait(false);
                    var model = compilationContext.Compilation.GetSemanticModel(context.Tree);
                    foreach (var type in root.DescendantNodesAndSelf(SkipMembers).OfType<ClassDeclarationSyntax>())
                    {
                        var allMembers = type.GetMembersFromAllParts(model);
                        if (allMembers == null)
                            continue;

                        var fieldDeclarations = type
                            .ChildNodes()
                            .OfType<FieldDeclarationSyntax>()
                            .Where(f => FieldFilter(model, f))
                            .SelectMany(fd => fd.Declaration.Variables.Select(v => new { Field = fd, Variable = v, Symbol = semanticModel.GetDeclaredSymbol(v, context.CancellationToken) }));
                        foreach (var candidateField in fieldDeclarations)
                        {
                            context.CancellationToken.ThrowIfCancellationRequested();
                            // handled by ConvertToConstantIssue
                            if (candidateField?.Variable?.Initializer != null && semanticModel.GetConstantValue(candidateField.Variable.Initializer.Value, context.CancellationToken).HasValue)
                                continue;

                            // user-defined value type -- might be mutable
                            var field = candidateField.Symbol;
                            if (field != null && !field.GetReturnType().IsReferenceType)
                            {
                                if (field.GetReturnType().IsDefinedInSource())
                                {
                                    continue;
                                }
                            }
                            if (field.GetAttributes().Any(ad => ad.AttributeClass.Name == "SerializableAttribute" && ad.AttributeClass.ContainingNamespace.GetFullName() == "System"))
                                continue;
                            bool wasAltered = false;
                            bool wasUsed = false;
                            foreach (var member in allMembers)
                            {
                                if (member == candidateField.Field)
                                    continue;
                                if (IsAltered(model, member, candidateField.Symbol, context.CancellationToken, out wasUsed))
                                {
                                    wasAltered = true;
                                    break;
                                }
                            }
                            if (!wasAltered && wasUsed)
                            {
                                context.CancellationToken.ThrowIfCancellationRequested();
                                context.ReportDiagnostic(Diagnostic.Create(descriptor, candidateField.Variable.Identifier.GetLocation()));
                            }
                        }
                    }
                }
                catch (Exception) { }
            });
        }
开发者ID:yeaicc,项目名称:RefactoringEssentials,代码行数:64,代码来源:FieldCanBeMadeReadOnlyAnalyzer.cs

示例5: HandleCompilationStart

        private static void HandleCompilationStart(CompilationStartAnalysisContext context)
        {
            var compilation = context.Compilation;

            // Disabling SA1633 will disable all other header related diagnostics.
            if (!compilation.IsAnalyzerSuppressed(SA1633Identifier))
            {
                context.RegisterSyntaxTreeAction((ctx, settings) => Analyzer.HandleSyntaxTree(ctx, settings, compilation));
            }
        }
开发者ID:Romanx,项目名称:StyleCopAnalyzers,代码行数:10,代码来源:FileHeaderAnalyzers.cs

示例6: HandleCompilationStart

 private static void HandleCompilationStart(CompilationStartAnalysisContext context)
 {
     Analyzer analyzer = new Analyzer();
     context.RegisterSyntaxTreeAction(analyzer.HandleSyntaxTree);
     context.RegisterCompilationEndAction(analyzer.HandleCompilation);
 }
开发者ID:EdwinEngelen,项目名称:StyleCopAnalyzers,代码行数:6,代码来源:SA0001XmlCommentAnalysisDisabled.cs


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