rspec/rules/S2639/java/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

45 lines
1.5 KiB
Plaintext

== Why is this an issue?
Regular expressions are powerful but tricky, and even those long used to using them can make mistakes.
The following should not be used as regular expressions:
* ``++.++`` - matches any single character. Used in ``++replaceAll++``, it matches _everything_
* ``++|++`` - normally used as an option delimiter. Used stand-alone, it matches the space between characters
* ``++File.separator++`` - matches the platform-specific file path delimiter. On Windows, this will be taken as an escape character
=== Noncompliant code example
[source,java]
----
String str = "/File|Name.txt";
String clean = str.replaceAll(".",""); // Noncompliant; probably meant to remove only dot chars, but returns an empty string
String clean2 = str.replaceAll("|","_"); // Noncompliant; yields _/_F_i_l_e_|_N_a_m_e_._t_x_t_
String clean3 = str.replaceAll(File.separator,""); // Noncompliant; exception on Windows
String clean4 = str.replaceFirst(".",""); // Noncompliant;
String clean5 = str.replaceFirst("|","_"); // Noncompliant;
String clean6 = str.replaceFirst(File.separator,""); // Noncompliant;
----
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
'''
== Comments And Links
(visible only on this page)
=== on 6 Sep 2016, 09:36:35 Nicolas Peru wrote:
The empty character class [] won't be a compilable regexp in java.
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]