== Why is this an issue?

Shared coding conventions allow teams to collaborate efficiently. This rule checks that all even handler names match a provided regular expression.


The default configuration is:

* Either in Pascal case, i.e. starting with an upper case letter, e.g. OnMyButtonClicked
* Or, a subject, in Pascal or camel case, followed by an underscore followed by an event name, in Pascal case, e.g. btn1_Clicked

Event handlers with a ``++handles++`` clause and two-parameter methods with ``++EventArgs++`` second parameter are covered by this rule.


=== Noncompliant code example

With the default regular expression ``++^(([a-z][a-z0-9]*)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?_)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$++``:

[source,vbnet]
----
Module Module1
    Sub subject__SomeEvent() Handles X.SomeEvent   ' Noncompliant - two underscores
    End Sub
End Module
----


=== Compliant solution

[source,vbnet]
----
Module Module1
    Sub subject_SomeEvent() Handles X.SomeEvent    ' Compliant
    End Sub
End Module
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Rename event handler "xxx" to match the regular expression: "yyy".


=== Parameters

.format
****

----
^(([a-z][a-z0-9]*)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?_)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$
----

Regular expression used to check the even handler names against.
****


endif::env-github,rspecator-view[]
