
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.1 KiB
Plaintext
58 lines
1.1 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Why use named groups only to never use any of them later on in the code?
|
|
|
|
This rule raises issues every time named groups are:
|
|
|
|
* referenced while not defined;
|
|
* defined but called elsewhere in the code by their number instead.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,python]
|
|
----
|
|
import re
|
|
|
|
def foo():
|
|
pattern = re.compile(r"(?P<a>.)")
|
|
matches = pattern.match("abc")
|
|
g1 = matches.group("b") # Noncompliant - group "b" is not defined
|
|
g2 = matches.group(1) # Noncompliant - Directly use 'a' instead of its group number.
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,python]
|
|
----
|
|
import re
|
|
|
|
def foo():
|
|
pattern = re.compile(r"(?P<a>.)")
|
|
matches = pattern.match("abc")
|
|
g = matches.group("a")
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
* In case there is no group with name:
|
|
** There is no group named 'S' in the regular expression.
|
|
* In case number access to named group
|
|
** Directly use 'S' instead of its group number.
|
|
|
|
|
|
=== Highlighting
|
|
|
|
* primary: the group number or group name
|
|
** secondary: named groups
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|