rspec/rules/S3389/rpg/rule.adoc
Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
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.
2023-05-25 14:18:12 +02:00

84 lines
1.9 KiB
Plaintext

== Why is this an issue?
The use of ``++options( *nopass )++`` on a parameter makes it optional, so it should always be checked before use.
=== Noncompliant code example
[source,rpg]
----
DCL-PR VIOLATION1 EXTPGM;
LASTNAME Char(10);
FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT);
END-PR;
DCL-PI VIOLATION1;
LASTNAME Char(10);
FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT);
END-PI;
dsply FIRSTNAME;
dsply LASTNAME; // Noncompliant; LASTNAME is optional
*inlr = *on;
----
=== Compliant solution
[source,rpg]
----
DCL-PR VIOLATION1 EXTPGM;
LASTNAME Char(10);
FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT);
END-PR;
DCL-PI VIOLATION1;
LASTNAME Char(10);
FIRSTNAME Char(10) OPTIONS(*NOPASS:*OMIT);
END-PI;
dsply FIRSTNAME;
IF %PARMS > 1;
dsply LASTNAME;
EndIf;
*inlr = *on;
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Make sure this optional parameter was actually passed before you use it.
=== Highlighting
Parameter name
'''
== Comments And Links
(visible only on this page)
=== on 28 Oct 2015, 20:10:15 Ann Campbell wrote:
Source: user suggestion with background from \http://www.itjungle.com/fhg/fhg010505-story02.html
=== on 29 Oct 2015, 13:47:46 Pierre-Yves Nicolas wrote:
\[~ann.campbell.2] This rule looks more like a bug detection rule than something about api-design or readability.
=== on 29 Oct 2015, 14:02:11 Ann Campbell wrote:
You're right [~pierre-yves.nicolas]. Adjusted.
=== on 29 Oct 2015, 14:07:55 Pierre-Yves Nicolas wrote:
\[~ann.campbell.2] Should we also update the SQALE characteristic?
=== on 29 Oct 2015, 14:20:29 Ann Campbell wrote:
Thanks [~pierre-yves.nicolas]. That's done too now.
endif::env-github,rspecator-view[]