2023-05-03 11:06:20 +02:00
== Why is this an issue?
2023-06-12 12:30:49 +02:00
When the line immediately after conditional statements has neither curly braces nor indentation, the intent of the code is unclear and perhaps not executed as expected.
Additionally, such code is confusing to maintainers.
The rule will check the line indentation after the following conditional statements:
* https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/selection-statements#the-if-statement[if and if-else statements]
* https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements#the-for-statement[for statement]
* https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements#the-foreach-statement[foreach statement]
* https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements#the-do-statement[do statement]
* https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/iteration-statements#the-while-statement[while statement]
2020-06-30 12:48:39 +02:00
2022-02-04 17:28:24 +01:00
[source,csharp]
2020-06-30 12:48:39 +02:00
----
if (condition) // Noncompliant
DoTheThing();
2023-06-05 10:31:02 +02:00
DoTheOtherThing(); // Was the intent to call this function unconditionally?
----
2020-06-30 12:48:39 +02:00
2023-06-05 10:31:02 +02:00
It becomes even more confusing and bug-prone if lines get commented out.
2020-06-30 12:48:39 +02:00
2023-06-05 10:31:02 +02:00
[source,csharp]
----
if (condition) // Noncompliant
// DoTheThing();
DoTheOtherThing(); // Was the intent to call this function conditionally?
2020-06-30 12:48:39 +02:00
----
2023-06-05 10:31:02 +02:00
Indentation alone or together with curly braces makes the intent clear.
2020-06-30 12:48:39 +02:00
2022-02-04 17:28:24 +01:00
[source,csharp]
2020-06-30 12:48:39 +02:00
----
if (condition)
DoTheThing();
2023-06-05 10:31:02 +02:00
DoTheOtherThing(); // Clear intent to call this function unconditionally
2020-06-30 12:48:39 +02:00
2023-06-05 10:31:02 +02:00
// or
2020-06-30 12:48:39 +02:00
2023-06-05 10:31:02 +02:00
if (condition)
{
DoTheThing();
}
DoTheOtherThing(); // Clear intent to call this function unconditionally
2020-06-30 12:48:39 +02:00
----
2021-06-02 20:44:38 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-09-20 15:38:42 +02:00
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
2023-05-25 14:18:12 +02:00
=== Highlighting
2023-06-12 12:30:49 +02:00
* Primary: `if (condition)`
2023-05-25 14:18:12 +02:00
* Secondary: line of code following the condition
2021-09-20 15:38:42 +02:00
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
2023-06-22 10:38:01 +02:00
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]