Статьи

Создание пользовательской подсказки NetBeans 7.1

Я рассказал о некоторых моих любимых подсказках NetBeans в публикациях « Семь подсказок NetBeans для модернизации кода Java и семь незаменимых подсказок NetBeans Java» . Четырнадцать подсказок, охватываемых этими двумя сообщениями, составляют небольшую часть от общего числа советов, которые NetBeans поддерживает «из коробки». Однако пользователю NetBeans доступна еще большая гибкость, поскольку NetBeans 7.1 позволяет писать собственные подсказки . Я рассматриваю простой пример этого в этом посте.

Сообщение пользователя Geertjan Wielenga о пользовательских декларативных подсказках в среде IDE NetBeans 7.1 начинается с описания диалогового окна NetBeans «Проверка и преобразование» (AKA « Проверка и изменение »), которое доступно из меню «Refactor» (которое, в свою очередь, доступно через раскрывающийся список). Меню «Рефакторинг» вдоль строки меню или щелчком правой кнопкой мыши в редакторе NetBeans). На следующем снимке экрана показано, как это выглядит.

Поле «Проверка» диалогового окна «Проверка и преобразование» позволяет пользователю NetBeans настроить, какой проект или файл следует проверять. Часть «Использование» диалогового окна «Проверка и преобразование» позволяет пользователю NetBeans указывать, какие подсказки проверять. В этом случае я проверяю, используя пользовательские подсказки, и я могу увидеть это, нажав кнопку «Управление» и установив флажок «Пользовательский». Обратите внимание, что если «Custom» не является опцией, когда вы впервые упоминаете об этом, вам, вероятно, нужно нажать кнопку «New» в левом нижнем углу.

Когда я нажимаю «Управление» и устанавливаю флажок «Пользовательский», он расширяется, и я вижу только что созданную подсказку «Проверка». Если я нажму на это имя, я могу переименовать его и сделать это в этом случае. Переименованная проверка («CurrentDateDoesNotNeedSystemCurrentMillis») показана на следующем снимке экрана.

Чтобы создать подсказку и предоставить описание, отображаемое в поле, я могу нажать кнопку «Редактировать скрипт». Это приводит к появлению небольшого окна редактора, показанного на следующем снимке экрана.

Если для редактирования пользовательской проверки / подсказки требуется больше места, кнопка «Открыть в редакторе» приведет к открытию текста в текстовом редакторе NetBeans, в котором редактируется обычный код Java и код XML.

При наличии настраиваемой инспекции / подсказки пришло время попробовать ее на некотором коде Java. В следующем листинге кода используется посторонний вызов System.currentTimeMillis () и его результат передается конструктору с одним длинным аргументом java.util.Date . В этом нет необходимости, поскольку конструктор Date без аргументов автоматически создаст экземпляр экземпляра Date на основе текущего времени (времени сейчас).

RedundantSystemCurrentTimeMillis.java

package dustin.examples;

import static java.lang.System.out;
import java.util.Date;

/**
 * Simple class to demonstrate NetBeans custom hint.
 * 
 * @author Dustin
 */
public class RedundantSystemCurrentTimeMillis
{
   public static void main(final String[] arguments)
   {
      final Date date = new Date(System.currentTimeMillis());
      out.println(date);
   }
}

Приведенный выше код работает правильно, но может быть более кратким. Когда я говорю NetBeans связать мою новую проверку с этим проектом в диалоговом окне «Проверка и преобразование», NetBeans может пометить это для меня и рекомендовать исправление. Следующие три снимка экрана демонстрируют, что NetBeans помечает предупреждение желтым значком лампочки и желтым подчеркиванием, рекомендует исправление, когда я нажимаю на лампочку, и реализует предлагаемое исправление, когда я выбираю его.

Как показано выше, простой пользовательский совет позволяет NetBeans идентифицировать, помечать и исправлять по моей просьбе ненужное использование System.curentTimeMillis (). Я писал ранее, что подсказки NetBeans настолько удобны, потому что на самом деле они делают три вещи для разработчика Java: автоматически отмечают области для улучшения кода для разработчика, часто автоматически исправляют проблему, если это необходимо, и сообщают о лучших способах написания Java , Для последнего преимущества в этом случае, наличие этой пользовательской подсказки помогает донести до других разработчиков Java немного больше знаний о классе Date и лучший способ создать его экземпляр, когда желательны текущая дата / время.

Наиболее сложным аспектом использования пользовательских подсказок NetBeans является поиск документации о том, как их использовать. Лучшие источники , доступные в настоящее время , как представляется, в NetBeans 7.1 Заметки о выпуске , несколько сообщений Wielenga ( Пользовательские Декларативные подсказки в IDE NetBeans 7.1 , Oh No Vector! , Oh No @Override! / Oh No Utilities.loadImage! ), И Яна Lahodajackpot30 Rules Language (охватывает синтаксис языка правил, используемый пользовательскими проверками / подсказками и показанный в простом примере выше). Рефакторинг с Осмотреть и преобразования в среде IDE NetBeans Java редактор учебника также включает в себяраздел по управлению пользовательскими подсказками . Надеемся, что исправление ошибки 210023 поможет в этой ситуации.

Мой пример настраиваемой подсказки NetBeans работает специально с классом Date. Интересный и несколько связанный с этим поток StackOverflow спрашивает, можно ли создать настраиваемую подсказку NetBeans, чтобы рекомендовать использовать Joda Time вместо даты или календаря . Ответ в этом потоке относится к учебному руководству по модулю подсказок по Java для NetBeans . Просмотр этого руководства напоминает мне, что подход, описанный в этом посте и доступный в NetBeans 7.1, безусловно, улучшен и проще в использовании.

Кстати, подсказка, подобная подсказке, запрашиваемой в потоке StackOverflow, на который есть ссылка, легко написать в NetBeans 7.1. В этом примере преобразование не выполняется, поскольку изменение класса Date на класс Joda Time, вероятно, потребует большего количества изменений в коде, чем простое преобразование. Таким образом, эта подсказка становится просто рекомендацией перейти на Joda Time. На следующих снимках экрана показана простая подсказка и способ их отображения в редакторе NetBeans.

Кажется, что каждый выпуск NetBeans добавляет больше полезных советов к уже большому количеству полезных советов, которые поддерживает NetBeans. Однако разработчики NetBeans не могут добавлять все подсказки, которые могут понадобиться каждой команде или проекту. Кроме того, нежелательно иметь все возможные подсказки, которые каждый член сообщества мог бы добавить, добавленные в IDE. По этой причине возможность указания пользовательских подсказок в NetBeans и возможность выборочно применять эти подсказки к проектам и файлам являются весьма желательными возможностями.