Как добавить пользовательский токен SuppressWarnings в Eclipse

Я пишу подключаемый модуль PMD для Eclipse, который позволяет пользователям подавлять предупреждения PMD, добавляя аннотации, такие как @SuppressWarnings("PMD.ReturnEmptyArrayRatherThanNull"). Поскольку Eclipse не знает, что PMD.ReturnEmptyArrayRatherThanNull является действительным токеном, он предупреждает, что токен не поддерживается, и предлагает быстрое исправление для его удаления.

Как он может сообщить Eclipse, что на самом деле это поддерживаемый токен SuppressWarnings и что он не должен помечать его предупреждением?

Я не ищу способ, которым пользователь может подавить предупреждение. Я знаю о настройке "Игнорировать необработанный токен в SuppressWarnings" в Eclipse. Это обходной путь, и его недостаток заключается в том, что Eclipse вообще не сообщает ни о каком неподдерживаемом токене, что довольно сложно, например. найти опечатку в токене SuppressWarnings.

Я ищу способ, которым я, как разработчик подключаемого модуля, могу расширить Eclipse, чтобы он распознавал токен PMD как поддерживаемый токен SuppressWarnings.

Пока я только обнаружил, что Eclipse поддерживает только токен жестко запрограммирован в компилятор Eclipse Java, но не нашел точку расширения или что-то еще, что позволяет я добавляю токен PMD в список поддерживаемых токенов SuppressWarnings.


person eclipse-pmd    schedule 06.01.2014    source источник
comment
Вы когда-нибудь решали эту проблему?   -  person matt freake    schedule 04.03.2015
comment
К сожалению нет. Я попробовал обходной путь, при котором предупреждения удаляются сразу после их создания, но мне так и не удалось заставить его работать правильно.   -  person eclipse-pmd    schedule 04.03.2015
comment
Как насчет запроса функции на eclipse.org, который позволяет расширить список с помощью плагина?   -  person kon    schedule 28.05.2015
comment
Я был бы признателен за такой запрос функции   -  person Danny Lo    schedule 03.06.2015
comment
Я просто хотел создать запрос функции на eclipse.org. Как оказалось, уже есть запрос функции почти 10-летней давности: точка расширения для дополнительных Токены SuppressWarnings. Я добавил свои требования и проголосовал за запрос. Я предлагаю вам сделать то же самое.   -  person eclipse-pmd    schedule 06.06.2015
comment
Я смотрю на org.jboss .tools.common.validation, и я ясно понимаю, что они позволяют использовать пользовательские SuppressWarnings через определение точки расширения org.jboss.tools.common.validation.warnings. Но я пока не понимаю, как это реализовано. Возможно, это было бы интересно и вам. Если вы что-нибудь узнаете, не могли бы вы сообщить мне?   -  person Danny Lo    schedule 10.06.2015
comment
Вот соответствующий запрос функции: issues.jboss.org/browse/JBIDE-10187 Судя по комментариям, они тоже в курсе проблемы. Они решили эту проблему, используя упомянутый токен «Игнорировать необработанный» в настройках «Подавить предупреждения». Пользователь решает, следует ли включить эту настройку для проекта или глобально. Увы, иначе нельзя.   -  person Danny Lo    schedule 15.06.2015
comment
Класс, отвечающий за описанное поведение: AddSuppressWarningsMarkerResolution   -  person Danny Lo    schedule 15.06.2015


Ответы (1)


Что вы можете сделать, так это написать небольшой плагин, который использует Equinox Weaving Service для перехвата вызовов этого метода и возврата из него пользовательских экземпляров IrritantSet. Для этого потребуется немного покопаться в коде компилятора, но это не должно быть слишком сложно.

Недостатком является то, что он может сломаться с обновлениями JDT и будет работать только в Eclipse, в котором установлен этот плагин.

См. это руководство, чтобы узнать, как написать плагин пользуется услугами ткачества.

person Michał Grzejszczak    schedule 21.05.2015