2023-05-25 14:18:12 +02:00
|
|
|
== Why is this an issue?
|
|
|
|
|
|
|
|
include::../description.adoc[]
|
|
|
|
|
|
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
|
|
|
|
[source,java]
|
|
|
|
----
|
|
|
|
static final Pattern p = Pattern.compile("^$", Pattern.MULTILINE); // Noncompliant
|
|
|
|
|
|
|
|
// Alternatively
|
|
|
|
static final Pattern p = Pattern.compile("(?m)^$"); // Noncompliant
|
|
|
|
|
|
|
|
|
|
|
|
boolean containsEmptyLines(String str) {
|
|
|
|
return p.matcher(str).find();
|
|
|
|
}
|
|
|
|
|
|
|
|
// ...
|
|
|
|
System.out.println(containsEmptyLines("a\n\nb")); // correctly prints 'true'
|
|
|
|
System.out.println(containsEmptyLines("")); // incorrectly prints 'false'
|
|
|
|
----
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
|
|
|
|
[source,java]
|
|
|
|
----
|
|
|
|
static final Pattern p = Pattern.compile("^$", Pattern.MULTILINE);
|
|
|
|
|
|
|
|
boolean containsEmptyLines(String str) {
|
|
|
|
return p.matcher(str).find() || str.isEmpty();
|
|
|
|
}
|
|
|
|
|
|
|
|
// ...
|
|
|
|
System.out.println(containsEmptyLines("a\n\nb")); // correctly prints 'true'
|
|
|
|
System.out.println(containsEmptyLines("")); // also correctly prints 'true'
|
|
|
|
----
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include::../implementation.adoc[]
|
|
|
|
|