- versions used
- SonarQube 8.0.0 Community, sonar-maven-plugin 3.7.0-1746, SonarJava 5.14.0.18788
- SonarCloud, sonar-maven-plugin 3.7.0-1746
- minimal code sample to reproduce
package net.bis5.s1948;
import org.primefaces.model.*;
import java.io.*;
public class S1948App2 implements Serializable {
// False positive: Make "rootNode" transient or serializable.
private TreeNode rootNode = new DefaultTreeNode("root node", null);
// False positive: Make "finalRootNode" transient or serializable.
private final TreeNode finalRootNode = new DefaultTreeNode("root node", null);
// False positive: Make "modifiedRootNode" transient or serializable.
// (IMHO, I think that is not necessarily that means false positive because this field is modifiable through public setter.)
private TreeNode modifiableRootNode = new DefaultTreeNode("root node", null);
public TreeNode getRootNode() {
return rootNode;
}
public TreeNode getFinalRootNode() {
return finalRootNode;
}
public TreeNode getModifiableRootNode() {
return modifiableRootNode;
}
public void setModifiableRootNode(TreeNode node) {
this.modifiableRootNode = node;
}
}
-
org.primefaces.model.TreeNode
is interface and is not extends java.io.Serializable (https://www.primefaces.org/docs/api/7.0/org/primefaces/model/TreeNode.html) -
org.primefaces.model.DefaultTreeNode
is class implements TreeNode and Serializable (https://www.primefaces.org/docs/api/7.0/org/primefaces/model/DefaultTreeNode.html)
There is sample project:
- Source: https://github.com/maruTA-bis5/sandbox-java/tree/sonarqube-s1948-primefaces-treenode/sonarqube/sonarjava-fp-test
- Report: https://sonarcloud.io/project/issues?branch=sonarqube-s1948-primefaces-treenode&id=net.bis5%3Asonarjava-fp-test&open=AW5kX2ZkJDfQyOFoW0Ox&resolved=false&rules=squid%3AS1948&types=CODE_SMELL