Eclipse помечает строки как мертвый код

#java #eclipse #dead-code

#java #eclipse #мертвый код

Вопрос:

У меня есть эта функция с некоторым мертвым кодом, отмеченным Eclipse.

У меня есть две строки, которые проверяют a amp; b. Строки, которые проверяют b, помечены как null.

     public int[] runThis(List<Integer> buildIds, List<Integer> scenarios, boolean oflag) {

    int rating[] = new int[scenarios.size()];

    if(buildIds == null) {
        System.out.println("ERROR - Building ID list is null!");
        return null;
    }

    if(scenarios == null) {
        System.out.println("ERROR - Scenario list is null!"); //dead
        return null; //dead
    }

    return rating;      

}
  

Почему Ellipse делает две строки мертвыми? Любая помощь? Большое спасибо за ваше время.

Комментарии:

1. Есть ли какой-либо другой код в этом методе? Возможно, вы разыменовывали b раньше, что говорит Eclipse, что на данный момент этого b не может быть null . В этом случае вы также должны получить предупреждение типа «ненужная нулевая проверка» в if (b == null) строке.

2. Я не очень разбираюсь в Eclipse , но IntelliJ IDEA может проанализировать ваш код в режиме реального времени и предупредить вас, что до некоторого кода невозможно добраться. В вашем случае, если IntelliJ обнаружит, что b никогда не было null , то это предупредит вас, что эти две строки никогда не могут быть достигнуты, потому что условие b == null * всегда равно false.

3. @Joachim: это конкретное предупреждение настраивается в настройках Eclipse. Я считаю, что по умолчанию он отключен.

4. можете ли вы вставить весь метод целиком?

5. @BalusC: О, я этого не помнил. Я, вероятно, включил его, как только услышал об этом;-) довольно полезные эти.

Ответ №1:

Потому что вы уже вызвали scenarios.size() в своем конструкторе массива. Это гарантирует, что scenarios значение не равно null, иначе к этому моменту возникнет исключение.

Комментарии:

1. Большое вам спасибо за это объяснение. Я не понимал, что, оценивая что-то ранее, это гарантированно НЕ попадет туда из-за предшествующего NPE, поэтому отсюда: предупреждение «Мертвый код».