Вопрос по java, eclipse – Как подавить предупреждения Eclipse 3.5 о мертвом коде

15

Я используюкласс для определения адресов электронной почты который использует статические финальные логические значения для настройки поведения сопоставления. Поскольку я обновился до Eclipse 3.5, я получаю предупреждения о мертвом коде, так как Eclipse замечает, что одна ветка в этом не может быть достигнута:

private static final boolean ALLOW_DOMAIN_LITERALS = false;
private static final String domain = ALLOW_DOMAIN_LITERALS ? rfc2822Domain : rfc1035DomainName;

Как ни странно, он счастлив этим:

private static final String domain;
static {
    if(ALLOW_DOMAIN_LITERALS) {
        domain = rfc2822Domain;
    } else {
        domain= rfc1035DomainName;
    }
}

так как, кажется, признает общееif(DEBUG) шаблон, но троичный оператор, кажется, не считается.

Поскольку я не хотел бы слишком много разветвлять класс, чтобы сделать Eclipse счастливым, я бы предпочел поставить@SuppressWarnings вверху вместо изменения кода. К сожалению, я не могу найти подходящего, кроме грубой силы"all", Есть ли значение только для обнаружения мертвого кода?

Ваш Ответ

3   ответа
18

UPDATE: из комментария Адама:

В Eclipse 3.6 и более новых версиях Eclipse@SuppressWarnings("unused") теперь может использоваться для подавления «мертвого кода»; предупреждения. УвидетьОтвет Кристофера Стока.

Смотрите такжеEclipse 4.4 (Luna) помощь для @SuppressWarnings.

Original answer:

Все значения SuppressWarnings Eclipse 3.5 "знает" перечислены вэта страница, Кажется, что нет смысла подавлять только обнаружение нового мертвого кода. Но вы можете использовать@SuppressWarnings("all") как раз передdomain объявление, поэтому оно будет подавлять предупреждения только для этой строки, а не для всего класса:

private static final boolean ALLOW_DOMAIN_LITERALS = false;
@SuppressWarnings("all") 
private static final String domain = ALLOW_DOMAIN_LITERALS ? rfc2822Domain : rfc1035DomainName;

Поскольку проверка мертвого кода является новой, вы также можете предложить улучшение вБаза данных ошибок Eclipse для поддержки троичной операции, а также.

Я добавил еще один для отсутствующих @SuppressWarnings:bugs.eclipse.org/bugs/show_bug.cgi?id=282770 Peter Becker
Вот запись в bugzilla:bugs.eclipse.org/bugs/show_bug.cgi?id=282768  В Bugzilla определенно не хватает как поиска дубликатов, так и синтаксиса вики, который предлагает StackOverflow :-) Peter Becker
@SuppressWarnings("unused") Теперь можно использовать для подавления этого, см.Christopher Stock's answer
Статус обоих запросов теперь проверен как фиксированный
Похоже, что вы не можете сделать это для конкретной строки внутри метода. Это должно быть сделано для всего метода, в противном случае & quot; вставьте EnumBody & quot; ошибка отображается.
6

@SuppressWarnings( "unused" )

Смотрите документацию eclipse для получения дополнительной информации:

http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-suppress_warnings.htm

"unused" to suppress warnings relative to unused code and dead code

Привет

Кристофер

Проголосовал, так как это может быть полезно для кого-то, приезжающего сюда. Функция не существовала тогда, но она существует сейчас (см. Проблемы Bugzilla, связанные с моими комментариями к принятому ответу). Peter Becker
8

Ignore вWindows -> Preferences > Java > Compiler > Errors/Warnings подPotential programming problems раздел

Но мне, как правило, нравится эта функция, она просто не срабатывает. Если бы это был мой собственный код, я бы просто изменил его. Вы также можете отключить его на уровне проекта (т. Е. Включить специфичные для проекта настройки компилятора в свойствах проекта), но я даже не хочу этого делать. Peter Becker

Похожие вопросы