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); } } } }