Я использую генератор парсера, который создает несколько уродливый код. В результате мой проект Eclipse имеет несколько десятков предупреждений, исходящих из сгенерированных исходных файлов. Я знаю, что могу использовать @SuppressWarning
аннотацию для подавления определенных предупреждений в определенных элементах, но любые аннотации, которые я добавляю вручную, будут потеряны при повторном запуске генератора парсера. Есть ли способ настроить Eclipse для подавления предупреждений для определенного файла или каталога?
java
eclipse
suppress-warnings
generated-code
Крис Конвей
источник
источник
Ответы:
Начиная с версии 3.8 M6, Eclipse (а точнее JDT) имеет для этого встроенные функции. Его можно настроить с помощью пути сборки проекта : Свойства проекта> Путь сборки Java> Компилятор> Источник
Здесь анонсированы: Eclipse 3.8 и 4.2 M6 - новые и заслуживающие внимания , называемые выборочно игнорировать ошибки / предупреждения из исходных папок . Отсюда и скриншот. Это новая функция, разработанная для ранее связанной ошибки 220928 .
источник
Для этого есть билет, ошибка 220928 , который с тех пор был завершен для Eclipse 3.8. Подробнее см. В этом ответе .
Если вы застряли на Eclipse 3.7 или ниже: пользователь «Marc», комментирующий этот тикет, создал (или, по крайней мере, ссылается на) плагин под названием «warningcleaner» в комментарии 35 . Я использую это с большим успехом, ожидая интеграции этой функции в Eclipse.
Это действительно очень просто:
источник
Я решил это с помощью плагина maven regexp replace - он не решает причину, но лечит боль:
Обратите внимание, что мне не удалось заставить работать ** нотацию, поэтому вам, возможно, придется указать путь точно.
См. Комментарий ниже, чтобы узнать, как не создавать дубликаты @SupressWarnings.
источник
^(@SuppressWarnings\(.*?\)\s+)?public class
. Включая аннотацию в шаблон, она не дублируется, если она уже есть.${basedir}/
раньшеtarget
в<include>
теге. Похоже на неприятности, но поскольку он работает только с сгенерированными файлами, я его возьму!Я думаю, что лучшее, что вы можете сделать, - это включить специальные настройки проекта для отображения предупреждений.
В верхней части формы находится ссылка для настройки параметров конкретного проекта.
источник
Пользователь @Jorn намекнул на код Ant для этого. Вот что у меня есть
Обратите внимание, что <replace> в Ant выполняет замену текста, а не регулярного выражения, поэтому он не может использовать метасимвол ^ в токене для соответствия началу строки, как это делает плагин замены maven regexp.
Я делаю это одновременно с запуском Antlr из maven-antrun-plugin в моем Maven pom, потому что плагин maven ANTLR не работал с плагином Maven Cobertura.
(Я понимаю, что это не ответ на исходный вопрос, но я не могу форматировать код Ant в комментарии / ответе на другой ответ, только в ответе)
источник
Я не думаю, что Eclipse по своей сути предоставляет способ сделать это на уровне каталогов (но я не уверен).
Вы можете поместить сгенерированные файлы в отдельный проект Java и управлять предупреждениями для этого конкретного проекта.
Я вообще предпочитаю помещать автоматически сгенерированный код в отдельный проект.
источник
Вы можете подавить предупреждения только на уровне проекта. Однако вы можете настроить вкладку проблем, чтобы подавить предупреждения от файлов или пакетов. Перейдите в меню «Настроить содержимое» и поработайте с областью «В рабочем наборе:».
источник
Этот небольшой скрипт python «исправляет»
.classpath
файлы, созданные M2E , и добавляет требуемый тег XML во все исходные папки, начиная сtarget/generated-sources
. Вы можете просто запустить его из корневой папки вашего проекта. Очевидно, вам нужно повторно запустить его, когда информация о проекте Eclipse будет повторно сгенерирована из M2E. И все, разумеется, на ваш страх и риск ;-)источник
Я делаю это с несколькими грамматиками ANTLR, которые генерируют синтаксический анализатор Java с использованием Ant. Сценарий сборки Ant добавляет в
@SuppressWarnings("all")
один файл Java и@Override
несколько методов в другой. Я могу посмотреть, как именно это делается, если вам интересно.источник
В случае ANTLR 2 можно подавить предупреждения в сгенерированном коде, добавив appenidng
@SuppressWarnings
перед объявлением класса в файле грамматики, напримеристочник
Это можно сделать, исключив определенные каталоги из пути сборки (следующий пример дается с использованием Eclipse 3.5)
[1] Откройте путь сборки Java
[2] Добавить каталоги для исключения
источник
Прошло некоторое время с тех пор, как я выпустил плагин для очистки предупреждений, и теперь, когда я использую Eclipse 3.8, он мне больше не нужен. Однако для тех, кому все еще нужен этот плагин, я выпустил его на github с сайтом обновлений на bintray. Если вы все еще используете Eclipse 3.7 или более раннюю версию, это может быть полезно. Посетите этот сайт для получения информации об установке.
источник
Если проект затмения генерируется из Gradle с помощью Eclipse Plugin в
eclipse
команде вSelectively ignore errors/warnings from source folders
опции может быть установлено путем добавления этого на верхнем уровне вамbuild.gradle
файл:Это предполагает, что сгенерированные источники находятся в
build/generated/parser
папке.источник