Почему я не могу отключить предупреждения на пакете? - PullRequest
17 голосов
/ 18 января 2012

Я вижу из javadoc, что аннотация @ SuppressWarnings применяется к

TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE

целям.Почему это также не относится к PACKAGE?

У меня есть некоторый сгенерированный код, который содержит некоторые необработанные предупреждения типов.Я хотел бы иметь возможность добавить файл package-info.java для сгенерированных классов (в отдельном физическом каталоге, но в том же java-пакете), который говорит eclipse игнорировать любые предупреждения необработанных типов, исходящие от сгенерированных классов в пакете.

Почему это не поддерживается?Есть ли альтернативный способ подавления предупреждения во всем пакете?

Ответы [ 2 ]

8 голосов
/ 18 января 2012

Причина, по которой подавление предупреждений на уровне пакета не разрешено, была объяснена в ответе на старый отчет об ошибке (Состояние - Закрыто, Не будет исправлено): Разрешить указание SuppressWarnings на уровне пакета .

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

В настоящее время SuppressWarnings имеет желаемое свойство влияет только на лексически вложенный код. Это означает, что вы можно сразу увидеть, если предупреждение может быть подавлено в код, который вы читаете.

Это предложение будет нарушать это свойство, чтобы решить необычные проблема, которую в большинстве случаев можно обойти.

В этом ответе также предлагается пара обходных путей.

  1. скомпилируйте сгенерированный код самостоятельно, используя -source 1.4 и -target 5.

  2. запросить обновленную версию javacc, в которой либо используются подавления предупреждений или не генерирует код, который вызывает предупреждения.

Я думаю, что первое предложение - поместить сгенерированный код в собственный проект - должно сработать для вас. Второе предложение выглядит более специфичным для проблемы в отчете об ошибке. Я не знаю, используете ли вы javacc или нет.

1 голос
/ 18 января 2012

Хороший вопрос. Возможно, это будет исправлено Oracle в будущем.

Но теперь я могу предложить вам следующее. Поместите весь сгенерированный код в отдельный проект. Кстати, это обычная практика. Затем настройте этот проект так, чтобы он терпеливо относился к предупреждениям. Например, в eclipse вы можете открыть свойства проекта / Java Compiler / Errors / Warings, выбрать «включить настройки проекта» и отключить все предупреждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...