コード例 #1
0
        private static void AnalyzeAttributeClassName(SyntaxNodeAnalysisContext context)
        {
            var attribute = context.Node as AttributeSyntax;

            if (SyntaxNodeUtils.IsEntityTriggerAttribute(attribute))
            {
                if (SyntaxNodeUtils.TryGetFunctionNameParameterNode(attribute, out SyntaxNode attributeArgument))
                {
                    var functionName = attributeArgument.ToString().Trim('"');
                    if (SyntaxNodeUtils.TryGetClassSymbol(attribute, context.SemanticModel, out INamedTypeSymbol classSymbol))
                    {
                        var className = classSymbol.Name.ToString();

                        if (!ClassNameMatchesFunctionName(classSymbol, functionName))
                        {
                            var diagnosticClassName = Diagnostic.Create(Rule, classSymbol.Locations[0], className, functionName);
                            var diagnosticAttribute = Diagnostic.Create(Rule, attributeArgument.GetLocation(), className, functionName);

                            context.ReportDiagnostic(diagnosticClassName);
                            context.ReportDiagnostic(diagnosticAttribute);
                        }
                    }
                }
            }
        }
        private void FindEntityTrigger(SyntaxNodeAnalysisContext context)
        {
            var attribute = context.Node as AttributeSyntax;

            if (SyntaxNodeUtils.IsEntityTriggerAttribute(attribute))
            {
                entityTriggerAttributes.Add(attribute);
            }
        }
        public void FindEntityTriggers(SyntaxNodeAnalysisContext context)
        {
            var attribute = context.Node as AttributeSyntax;

            if (SyntaxNodeUtils.IsEntityTriggerAttribute(attribute))
            {
                if (SyntaxNodeUtils.TryGetParameterNodeNextToAttribute(attribute, out SyntaxNode parameterNode))
                {
                    var paramTypeName = parameterNode.ToString();
                    if (!string.Equals(paramTypeName, "IDurableEntityContext"))
                    {
                        var diagnostic = Diagnostic.Create(Rule, parameterNode.GetLocation(), paramTypeName);

                        context.ReportDiagnostic(diagnostic);
                    }
                }
            }
        }
        private static void AnalyzeAttributeClassName(SyntaxNodeAnalysisContext context)
        {
            var attribute = context.Node as AttributeSyntax;

            if (SyntaxNodeUtils.IsEntityTriggerAttribute(attribute))
            {
                if (SyntaxNodeUtils.TryGetMethodDeclaration(attribute, out SyntaxNode methodDeclaration))
                {
                    var staticKeyword = methodDeclaration.ChildTokens().Where(x => x.IsKind(SyntaxKind.StaticKeyword));
                    if (!staticKeyword.Any())
                    {
                        var methodName = methodDeclaration.ChildTokens().Where(x => x.IsKind(SyntaxKind.IdentifierToken)).First();
                        var diagnostic = Diagnostic.Create(Rule, methodName.GetLocation(), methodName);

                        context.ReportDiagnostic(diagnostic);
                    }
                }
            }
        }