
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
58 lines
1.3 KiB
Plaintext
58 lines
1.3 KiB
Plaintext
== Why is this an issue?
|
|
|
|
A loop with at most one iteration is equivalent to the use of an ``++if++`` statement to conditionally execute one piece of code. If the initial intention of the author was really to conditionally execute one piece of code, an ``++if++`` statement should be used instead. If that was not the initial intention of the author, the body of the loop should be fixed to use the nested ``++return++``, ``++break++`` or ``++throw++`` statements in a more appropriate way.
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,csharp]
|
|
----
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
Console.WriteLine(i);
|
|
break; // Noncompliant, loop only executes once
|
|
}
|
|
...
|
|
foreach (var item in items)
|
|
{
|
|
return item; // Noncompliant, loop only executes once
|
|
}
|
|
...
|
|
----
|
|
|
|
=== Compliant solution
|
|
|
|
[source,csharp]
|
|
----
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
Console.WriteLine(i);
|
|
}
|
|
...
|
|
var item = items.FirstOrDefault();
|
|
if (item != null)
|
|
{
|
|
return item;
|
|
}
|
|
...
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Refactor the containing loop to do more than one iteration.
|
|
|
|
|
|
include::../highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|