rspec/rules/S2259/java/noncompliant-code.adoc

75 lines
1.9 KiB
Plaintext
Raw Normal View History

The variable `myObject` is equal to `null`, meaning it has no value:
[source,java,diff-id=1,diff-type=noncompliant]
----
public void method() {
Object myObject = null;
System.out.println(myObject.toString()); // Noncompliant: myObject is null
}
----
The parameter `input` might be `null` as suggested by the `if` condition:
[source,java,diff-id=2,diff-type=noncompliant]
----
public void method(Object input)
{
if (input == null)
{
// ...
}
System.out.println(input.toString()); // Noncompliant
}
----
The unboxing triggered in the return statement will throw a `NullPointerException`:
[source,java,diff-id=3,diff-type=noncompliant]
----
public boolean method() {
Boolean boxed = null;
return boxed; // Noncompliant
}
----
Both `conn` and `stmt` might be `null` in case an exception was thrown in the try{} block:
[source,java,diff-id=4,diff-type=noncompliant]
----
Connection conn = null;
Statement stmt = null;
try {
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
// ...
} catch(Exception e) {
e.printStackTrace();
} finally {
stmt.close(); // Noncompliant
conn.close(); // Noncompliant
}
----
As `getName()` is annotated with `@CheckForNull`, there is a risk of `NullPointerException` here:
[source,java,diff-id=5,diff-type=noncompliant]
----
@CheckForNull
String getName() {...}
public boolean isNameEmpty() {
return getName().length() == 0; // Noncompliant
}
----
As `merge(...)` parameter is annotated with `@Nonnull`, passing an identified potential null value (thanks to @CheckForNull) is not safe:
[source,java,diff-id=6,diff-type=noncompliant]
----
private void merge(@Nonnull Color firstColor, @Nonnull Color secondColor) {...}
public void append(@CheckForNull Color color) {
merge(currentColor, color); // Noncompliant: color should be null-checked because merge(...) doesn't accept nullable parameters
}
----