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 bool TryGetFunctionName(AttributeSyntax attributeExpression, out string functionName) { if (SyntaxNodeUtils.TryGetFunctionNameParameterNode(attributeExpression, out SyntaxNode attributeArgument)) { functionName = attributeArgument.ToString().Trim('"'); return(true); } functionName = null; return(false); }