rspec/rules/S134/cobol/rule.adoc

64 lines
1.3 KiB
Plaintext

== Why is this an issue?
Nested control flow statements ``++IF++``, ``++PERFORM++``, ``++EVALUATE++`` and others are often key ingredients in creating
what's known as "Spaghetti code". This code smell can make your program difficult to understand and maintain.
When numerous control structures are placed inside one another, the code becomes a tangled, complex web.
This significantly reduces the code's readability and maintainability, and it also complicates the testing process.
== How to fix it
=== Code examples
The following example demonstrates the behavior of the rule with the default threshold of 5 levels of nesting:
==== Noncompliant code example
[source,cobol]
----
IF A = 1
PERFORM
MOVE A TO B
PERFORM
IF B = 1 *> Noncompliant
MOVE "HI" TO S1
END-IF
END-PERFORM
END-PERFORM
END-IF.
----
include::../resources.adoc[]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
=== Parameters
.max
****
_Integer_
----
5
----
Maximum allowed control flow statement nesting depth.
****
include::../highlighting.adoc[]
'''
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]