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


C# CompilationStartAnalysisContext.RegisterSymbolAction方法代码示例

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


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

示例1: AnalyzeCompilationStart

        private void AnalyzeCompilationStart(CompilationStartAnalysisContext csContext)
        {
            // Get named type symbols for targetted exception types
            ImmutableHashSet<INamedTypeSymbol> exceptionTypes = s_exceptionTypeNames
                .Select(name => csContext.Compilation.GetTypeByMetadataName(name))
                .Where(t => t != null)
                .ToImmutableHashSet();

            if (!exceptionTypes.IsEmpty)
            {
                // register symbol action for named types
                csContext.RegisterSymbolAction(saContext =>
                {
                    var symbol = (INamedTypeSymbol)saContext.Symbol;

                    // skip public symbols
                    if (symbol.IsPublic()) return;

                    // only report if base type matches 
                    if (symbol.BaseType != null && exceptionTypes.Contains(symbol.BaseType))
                    {
                        saContext.ReportDiagnostic(symbol.CreateDiagnostic(Rule));
                    }
                },
                SymbolKind.NamedType);
            }
        }
开发者ID:Anniepoh,项目名称:roslyn-analyzers,代码行数:27,代码来源:ExceptionsShouldBePublic.cs

示例2: AnalyzeCompilationStart

        private static void AnalyzeCompilationStart(CompilationStartAnalysisContext context)
        {
            ImmutableHashSet<INamedTypeSymbol> badBaseTypes = s_badBaseTypesToMessage.Keys
                                .Select(bt => context.Compilation.GetTypeByMetadataName(bt))
                                .Where(bt => bt != null)
                                .ToImmutableHashSet();

            if (badBaseTypes.Count > 0)
            {
                context.RegisterSymbolAction((saContext) =>
                    {
                        var namedTypeSymbol = saContext.Symbol as INamedTypeSymbol;

                        if (namedTypeSymbol.BaseType != null && badBaseTypes.Contains(namedTypeSymbol.BaseType))
                        {
                            string baseTypeName = namedTypeSymbol.BaseType.ToDisplayString();
                            Debug.Assert(s_badBaseTypesToMessage.ContainsKey(baseTypeName));
                            string message = string.Format(s_badBaseTypesToMessage[baseTypeName], namedTypeSymbol.ToDisplayString(), baseTypeName);
                            Diagnostic diagnostic = Diagnostic.Create(Rule, namedTypeSymbol.Locations.First(), namedTypeSymbol.Locations.Skip(1), message);
                            saContext.ReportDiagnostic(diagnostic);
                        }
                    }
                    , SymbolKind.NamedType);
            }
        }
开发者ID:bkoelman,项目名称:roslyn-analyzers,代码行数:25,代码来源:TypesShouldNotExtendCertainBaseTypes.cs

示例3: InitializeCore

 private void InitializeCore(CompilationStartAnalysisContext context)
 {
     var objectType = context.Compilation.GetSpecialType(SpecialType.System_Object);
     var equatableType = context.Compilation.GetTypeByMetadataName(IEquatableMetadataName);
     if (objectType != null && equatableType != null)
     {
         context.RegisterSymbolAction(c => AnalyzeSymbol(c, objectType, equatableType), SymbolKind.NamedType);
     }
 }
开发者ID:nevinclement,项目名称:roslyn,代码行数:9,代码来源:EquatableAnalyzer.cs

示例4: OnCompilationStart

 private static void OnCompilationStart(CompilationStartAnalysisContext context)
 {
     INamedTypeSymbol objectType = context.Compilation.GetSpecialType(SpecialType.System_Object);
     INamedTypeSymbol equatableType = context.Compilation.GetTypeByMetadataName(IEquatableMetadataName);
     if (objectType != null && equatableType != null)
     {
         context.RegisterSymbolAction(c => AnalyzeSymbol(c, equatableType), SymbolKind.NamedType);
     }
 }
开发者ID:bkoelman,项目名称:roslyn-analyzers,代码行数:9,代码来源:EquatableAnalyzer.cs

示例5: AnalyzeCompilationSymbol

 private void AnalyzeCompilationSymbol(CompilationStartAnalysisContext context)
 {
     _exceptionType = context.Compilation.GetTypeByMetadataName("System.Exception");
     // Analyze named types 
     context.RegisterSymbolAction(symbolContext =>
     {
         AnalyzeSymbol(symbolContext);
     }, SymbolKind.NamedType);
 }
开发者ID:Anniepoh,项目名称:roslyn-analyzers,代码行数:9,代码来源:ImplementStandardExceptionConstructors.cs

示例6: OnCompilationStart

        public override void OnCompilationStart(CompilationStartAnalysisContext context)
        {
            // Read the file line-by-line to get the terms.
            var additionalAnalyzerFiles = context.Options.AdditionalFiles.Where(af => af.Path.IndexOf(s_analyzerName, 0, StringComparison.OrdinalIgnoreCase) >= 0);

            if (!additionalAnalyzerFiles.Any())
                return;

            lock (_apisToEnsureExist)
            {
                foreach (string api in ReadRequiredAPIsFromFiles(additionalAnalyzerFiles))
                {
                    _apisToEnsureExist.Add(api);
                }
            }

            context.RegisterCompilationEndAction(OnCompilationEnd);
            context.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.Method, SymbolKind.Event);
            context.RegisterSymbolAction(AnalyzeSymbol, SymbolKind.Field, SymbolKind.Event);
        }
开发者ID:dsgouda,项目名称:buildtools,代码行数:20,代码来源:MembersMustExistAnalyzer.cs

示例7: OnCompilationStart

        private void OnCompilationStart(CompilationStartAnalysisContext context)
        {
            _candidateReadonlyFields = new HashSet<IFieldSymbol>();
            _writtenFields = new HashSet<IFieldSymbol>();

            _internalsVisibleToAttribute = context.Compilation.GetTypeByMetadataName(
                                                "System.Runtime.CompilerServices.InternalsVisibleToAttribute");

            context.RegisterSymbolAction(LocateCandidateReadonlyFields, SymbolKind.Field);
            context.RegisterSyntaxNodeAction(CheckForAssignment, s_compoundAssignmentExpressionKinds);
            context.RegisterSyntaxNodeAction(CheckForRefOrOutParameter, SyntaxKind.Argument);
            context.RegisterSyntaxNodeAction(CheckForExternMethodWithRefParameters, SyntaxKind.MethodDeclaration);
            context.RegisterSyntaxNodeAction(CheckForExternIndexer, SyntaxKind.IndexerDeclaration);
            context.RegisterSyntaxNodeAction(CheckForInvocations, SyntaxKind.InvocationExpression);
            context.RegisterCompilationEndAction(ReportUnwrittenFields);
        }
开发者ID:michaelcfanning,项目名称:codeformatter,代码行数:16,代码来源:UnwrittenWritableFieldAnalyzer.cs

示例8: CompilationStartAction

        private void CompilationStartAction(CompilationStartAnalysisContext context)
        {
            var workspace = (context.Options as WorkspaceAnalyzerOptions)?.Workspace;
            var optionSet = (context.Options as WorkspaceAnalyzerOptions)?.Workspace.Options;
            var currentValue = optionSet.GetOption(SimplificationOptions.NamingPreferences, context.Compilation.Language);

            if (!string.IsNullOrEmpty(currentValue))
            {
                // Deserializing the naming preference info on every CompilationStart is expensive.
                // Instead, the diagnostic engine should listen for option changes and have the
                // ability to create the new SerializableNamingStylePreferencesInfo when it detects
                // any change. The overall system would then only deserialize & allocate when 
                // actually necessary.
                var viewModel = SerializableNamingStylePreferencesInfo.FromXElement(XElement.Parse(currentValue));
                var preferencesInfo = viewModel.GetPreferencesInfo();
                context.RegisterSymbolAction(
                    symbolContext => SymbolAction(symbolContext, preferencesInfo),
                    _symbolKinds);
            }
        }
开发者ID:TyOverby,项目名称:roslyn,代码行数:20,代码来源:NamingStyleDiagnosticAnalyzerBase.cs

示例9: SetupAnalysis

        //creates an instance of a class to perform the analysis statefully, and registers for various actions
        private void SetupAnalysis(CompilationStartAnalysisContext context)
        {
            //state collector
            CompilationAnalyzer compilationAnalyzer = new CompilationAnalyzer();

            //collects all class, method, field, and property symbols as state
            context.RegisterSymbolAction(compilationAnalyzer.AddClass, SymbolKind.NamedType);
            context.RegisterSymbolAction(compilationAnalyzer.AddMethod, SymbolKind.Method);
            context.RegisterSymbolAction(compilationAnalyzer.AddField, SymbolKind.Field);
            context.RegisterSymbolAction(compilationAnalyzer.AddProperty, SymbolKind.Property);

            //analyzes the state that has been collected
            context.RegisterCompilationEndAction(compilationAnalyzer.ReportCompilationEndDiagnostics);
        }
开发者ID:maggiemsft,项目名称:roslyn-analyzers,代码行数:15,代码来源:DiagnosticAnalyzer.cs

示例10: OnCompilationStart

        private void OnCompilationStart(CompilationStartAnalysisContext compilationContext)
        {
            var additionalFiles = compilationContext.Options.AdditionalFiles;
            if (!_extraAdditionalFiles.IsDefaultOrEmpty)
            {
                additionalFiles = additionalFiles.AddRange(_extraAdditionalFiles);
            }

            ApiData shippedData;
            ApiData unshippedData;
            if (!TryGetApiData(additionalFiles, compilationContext.CancellationToken, out shippedData, out unshippedData))
            {
                return;
            }

            List<Diagnostic> errors;
            if (!ValidateApiFiles(shippedData, unshippedData, out errors))
            {
                compilationContext.RegisterCompilationEndAction(context =>
                {
                    foreach (var cur in errors)
                    {
                        context.ReportDiagnostic(cur);
                    }
                });

                return;
            }

            var impl = new Impl(shippedData, unshippedData);
            compilationContext.RegisterSymbolAction(
                impl.OnSymbolAction,
                SymbolKind.NamedType,
                SymbolKind.Event,
                SymbolKind.Field,
                SymbolKind.Method);
            compilationContext.RegisterCompilationEndAction(impl.OnCompilationEnd);
        }
开发者ID:richardlford,项目名称:roslyn-analyzers,代码行数:38,代码来源:DeclarePublicAPIAnalyzer.cs

示例11: CreateAnalyzerWithinCompilation

 public override void CreateAnalyzerWithinCompilation(CompilationStartAnalysisContext context)
 {
     context.RegisterSymbolAction(
         (symbolContext) =>
         {
             symbolContext.ReportDiagnostic(Diagnostic.Create(Warning01, symbolContext.Symbol.Locations.First()));
         },
         SymbolKind.NamedType);
 }
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:9,代码来源:CommandLineTests.cs

示例12: OnCompilationStart

 public override void OnCompilationStart(CompilationStartAnalysisContext obj)
 {
     _allowedPinvokeFile = obj.Options.AdditionalFiles.FirstOrDefault(f => Path.GetFileName(f.Path).Contains("PinvokeAnalyzer_"));
     _exceptionFile = obj.Options.AdditionalFiles.FirstOrDefault(f => Path.GetFileName(f.Path).Contains("PinvokeAnalyzerExceptionList.analyzerdata"));
     obj.RegisterSymbolAction(AnalyzeMethod, SymbolKind.Method);
 }
开发者ID:dsgouda,项目名称:buildtools,代码行数:6,代码来源:PinvokeAnalyzer.cs

示例13: HandleCompilationStart

 private static void HandleCompilationStart(CompilationStartAnalysisContext context)
 {
     Analyzer analyzer = new Analyzer(context.Compilation.GetOrCreateGeneratedDocumentCache());
     context.RegisterSymbolAction(analyzer.AnalyzeField, SymbolKind.Field);
 }
开发者ID:neugenes,项目名称:StyleCopAnalyzers,代码行数:5,代码来源:SA1401FieldsMustBePrivate.cs

示例14: Initialize

 public void Initialize(CompilationStartAnalysisContext context)
 {
     context.RegisterSymbolAction(AnalyzeNamedTypeSymbol, SymbolKind.NamedType);
     context.RegisterOperationBlockAction(AnalyzeOperationBlock);
 }
开发者ID:bkoelman,项目名称:roslyn-analyzers,代码行数:5,代码来源:ImplementIDisposableCorrectly.cs

示例15: HandleCompilationStart

 private static void HandleCompilationStart(CompilationStartAnalysisContext context)
 {
     Analyzer analyzer = new Analyzer(context.Compilation.GetOrCreateGeneratedDocumentCache());
     context.RegisterSymbolAction(analyzer.HandleMethodDeclaration, SymbolKind.Method);
     context.RegisterSyntaxNodeActionHonorExclusions(AnonymousFunctionExpressionAction, AnonymousFunctionExpressionKinds);
 }
开发者ID:tmaczynski,项目名称:AsyncUsageAnalyzers,代码行数:6,代码来源:AvoidAsyncVoidAnalyzer.cs


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