== Why is this an issue?

There are several reasons for a method not to have a method body:


* It is an unintentional omission, and should be fixed.
* It is not yet, or never will be, supported. In this case a ``++NotSupportedException++`` should be thrown.
* The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override.

=== Noncompliant code example

[source,csharp]
----
public override void DoSomething() 
{
}

public override void DoSomethingElse() 
{
}
----

=== Compliant solution

[source,csharp]
----
public override void DoSomething() 
{
  // Do nothing because of X and Y.
}

public override void DoSomethingElse() 
{
  throw new NotSupportedException();
}
----

=== Exceptions

The following methods are ignored:

* empty ``++virtual++`` methods,
* empty methods that override an ``++abstract++`` method,
* empty overrides in test assemblies.

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

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

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

=== on 11 Nov 2020, 19:45:36 Andrei Epure wrote:
\[~nicolas.harraudeau] I believe this rule could also apply to local functions and to property setters, right?


 

----
public void Method()
{
  void EmptyLocalFunction {} // Noncompliant
}

public int Property
{
  set {} // Noncompliant
}
 {code}
----

=== on 16 Nov 2020, 14:19:07 Nicolas Harraudeau wrote:
\[~andrei.epure] Yes. We already do it for nested functions in python. I don't see any reason to not do the same for C#.

=== on 16 Nov 2020, 17:39:11 Andrei Epure wrote:
thanks. I opened \https://github.com/SonarSource/sonar-dotnet/issues/3753 for this.

include::../comments-and-links.adoc[]

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