
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.
82 lines
1.6 KiB
Plaintext
82 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Using recursion with paragraphs is not a problem in itself but it potentially exposes the software to endless loop. This is the case when there is no condition to end the recursion or when this condition is always false.
|
|
|
|
|
|
This rule raises an issue when a paragraph contains a ``++PERFORM++`` to itself to warn the developer that there is a risk of endless loop. This rule can also be used to fully prevent recursion to be used.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,cobol]
|
|
----
|
|
PROCEDURE DIVISION.
|
|
...
|
|
PERFORM READ-RELATED-REC-PARA
|
|
...
|
|
READ-RELATED-REC-PARA.
|
|
...
|
|
CALL MY-MODULE
|
|
IF MORE-RECS
|
|
PERFORM READ-RELATED-REC-PARA
|
|
...
|
|
----
|
|
|
|
[source,cobol]
|
|
----
|
|
999-ERROR.
|
|
"Write to a log file"
|
|
If "write fails:
|
|
"Display an error message"
|
|
PERFORM 999-ERROR.
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,cobol]
|
|
----
|
|
PROCEDURE DIVISION.
|
|
...
|
|
PERFORM READ-RELATED-REC-PARA
|
|
UNTIL NO-MORE-RELATED-RECS
|
|
OR MAX-NO-OF-RELATED-RECS
|
|
...
|
|
READ-RELATED-REC-PARA.
|
|
...
|
|
CALL MY-MODULE
|
|
IF MORE-RECS
|
|
SET MORE-RELATED-RECS TO TRUE
|
|
ADD 1 TO NO-OF-RELATED-RECS
|
|
ELSE
|
|
SET NO-MORE-RELATED-RECS TO TRUE
|
|
END-IF
|
|
...
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Refactor this code to remove the "PERFORM XXX" to remove the risk of a potential infinite loop.
|
|
|
|
|
|
=== Highlighting
|
|
|
|
PERFORM XXX
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 14 Nov 2018, 18:26:58 Ann Campbell wrote:
|
|
\[~alexandre.gigleux] this seems to overlap RSPEC-925
|
|
|
|
endif::env-github,rspecator-view[]
|