rspec/rules/S1751/tsql/rule.adoc
Fred Tingaud 51369b610e
Make sure that includes are always surrounded by empty lines (#2270)
When an include is not surrounded by empty lines, its content is inlined
on the same line as the adjacent content. That can lead to broken tags
and other display issues.
This PR fixes all such includes and introduces a validation step that
forbids introducing the same problem again.
2023-06-22 10:38:01 +02:00

69 lines
1.4 KiB
Plaintext

== Why is this an issue?
A ``++WHILE++`` loop with at most one iteration is equivalent to the use of an ``++IF++`` statement to conditionally execute one piece of code. No developer expects to find such usage of a loop statement. If the initial intention of the author was really to conditionally execute one piece of code, an ``++IF++`` statement should be used in place.
At worst that was not the initial intention of the author and so 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,sql]
----
WHILE @cond -- noncompliant, loop only executes once
BEGIN
EXEC something;
BREAK;
END;
...
WHILE @cond1 -- noncompliant, loop only executes once
BEGIN
IF @cond2
BEGIN
EXEC something;
BREAK;
END ELSE
BEGIN
RETURN @value;
END;
END;
----
=== Compliant solution
[source,sql]
----
IF @cond
BEGIN
EXEC something;
BREAK;
END;
...
WHILE @cond
BEGIN
IF @cond2
BEGIN
EXEC something;
END ELSE
BEGIN
RETURN @value;
END;
END;
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
include::../highlighting.adoc[]
'''
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]