- 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.TreeNodeis interface and is not extends java.io.Serializable (https://www.primefaces.org/docs/api/7.0/org/primefaces/model/TreeNode.html) - 
org.primefaces.model.DefaultTreeNodeis 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