Анализатор обнаружил, что в выражении 'return' возвращается локальная переменная, значением которой всегда будет 'null'. Подобное может происходить как из-за того, что переменной забыли присвоить нужное значение, так и из-за потенциальной логической ошибки.
Рассмотрим пример с логической ошибкой, вследствие которой метод 'GetRootNode' всегда возвращает 'null':
public Node GetRootNode(Node node) { Node parentNode = node.Parent == null ? node : node.Parent; while (parentNode != null) { parentNode = parentNode.Parent; } return parentNode; }
Условие в операторе 'while' будет выполняться до тех пор, пока переменная 'parentNode' не станет равной 'null'. Для того, чтобы исправить поведение метода, в условии оператора 'while' следует выполнять сравнение с 'null' не самой переменной 'parentNode', а её свойства 'Parent'. Исправленный вариант метода 'GetRootNode' будет выглядеть следующим образом:
public Node GetRootNode(Node node) { Node parentNode = node.Parent == null ? node : node.Parent; while (parentNode.Parent != null) { parentNode = parentNode.Parent; } return parentNode; }