private static void AnalyzeEventAssignmentMethod([NotNull] IMethodReferenceOperation binding, [NotNull] PortableEventAssignmentOperation assignment, OperationAnalysisContext context) { if (assignment.EventReference != null) { string eventTargetName = GetEventTargetName(assignment.EventReference, binding.Method); string handlerNameExpected = string.Concat(eventTargetName, "On", assignment.EventReference.Event.Name); string handlerNameActual = binding.Method.Name; if (handlerNameActual != handlerNameExpected) { context.ReportDiagnostic(Diagnostic.Create(Rule, binding.Syntax.GetLocation(), binding.Method.GetKind(), handlerNameActual, assignment.EventReference.Event.Name, handlerNameExpected)); } } }
private static void AnalyzeEventAssignment(OperationAnalysisContext context) { var assignment = new PortableEventAssignmentOperation((IEventAssignmentOperation)context.Operation); if (!assignment.Adds) { return; } var delegateCreation = assignment.HandlerValue as IDelegateCreationOperation; var reference = delegateCreation?.Target as IMethodReferenceOperation; if (reference?.Method != null) { AnalyzeEventAssignmentMethod(reference, assignment, context); } }