Шаблон для отображения имени метода и значений параметров в Eclipse - PullRequest
8 голосов
/ 24 августа 2010

Есть ли способ иметь шаблон (Java -> Редактор -> Шаблоны) в Eclipse, который генерирует что-то вроде этого

debug("methodName arg1=" + arg1 + " arg2=" + arg2 + " arg3=" + arg3);

При использовании в методе. Например:

public void setImage(long rowId, long contactId, String thinggy) {
   // invoking the template here, produces this:
   debug("setImage rowId=" + rowId + " contactId=" + contactId + " thinggy=" + thinggy);
}

Я не смог найти способ сделать это с помощью стандартного пользовательского интерфейса шаблона, может быть, существует плагин для таких вещей?

Ответы [ 5 ]

10 голосов
/ 02 сентября 2010

Это начало:

debug("${enclosing_method_arguments}: ", ${enclosing_method_arguments});

, которое выдает следующее:

debug("arg1, arg2, arg3: ", arg1, arg2, arg3);

Я не нашел способа выделить каждый аргумент.Я нашел эту страницу , которая столкнулась с той же проблемой.

Для других шаблонов Eclipse, посмотрите на этот вопрос .

5 голосов
/ 13 января 2012

Я сделал небольшой плагин, который добавляет красиво отформатированную переменную:

https://github.com/dernasherbrezon/eclipse-log-param

Eclipse не предоставляет никакой информации о типе параметра, поэтому нет Arrays.toString (...)

5 голосов
/ 10 февраля 2011

Я думаю, что, вероятно, уже слишком поздно, чтобы ответить на этот вопрос, но, возможно, мой ответ кому-то поможет:

<code>
System.out.println(String.format("%tH:% %s", java.util.Calendar.getInstance(), "${enclosing_package}.${enclosing_type}.${enclosing_method}(${enclosing_method_arguments})"));
String[] lArgsNames = new String("${enclosing_method_arguments}").split(", ");
Object[] lArgsValues = new Object[] {${enclosing_method_arguments}};
for (int i = 0; i < lArgsValues.length; i++) {
    System.out.println("\t" + (lArgsValues[i] != null ? ("(" + lArgsValues[i].getClass().getSimpleName() + ") \"" + lArgsNames[i] + "\" = \"" + lArgsValues[i] + "\"") : "\"" + lArgsNames[i] + "\" is null"));
}

Для этого метода:

<code>
public void foo(boolean arg){
    // ...
}

вывод будет:

<code>
18:43:43:076 > any.package.AnyClass.foo(arg)
    (Boolean) "arg" = "true"

Этот код может обрабатывать любой объект, тип примитива и нулевое значение.И да, это немного сложно для этой цели!

4 голосов
/ 26 мая 2011

или шаблон =

if (aLog.isDebugEnabled()) {
  aLog.debug(String.format("${enclosing_method}:${enclosing_method_arguments}".replaceAll(", ", "=%s, ")+"=%s", ${enclosing_method_arguments}));
}

дает

public static void hesteFras(boolean connect, Object ged, String frans, int cykel) {
    if (aLog.isDebugEnabled()) {
        aLog.debug(String.format("hesteFras: connect, ged, frans, cykel".replaceAll(", ", "=%s, ") + "=%s",
                connect, ged, frans, cykel));
    }

, что для

hesteFras(false, null, "sur", 89);

дает запись в журнале:

hesteFras: connect=false, ged=null, frans=sur, cykel=89
2 голосов
/ 06 декабря 2012

Плагин eclipse-log-param полезен, чтобы не вводить строку регистрации вручную.Однако было бы еще лучше, если бы строка добавлялась автоматически для всех новых методов.

Возможно ли это вообще?Похоже, что в Windows-> Настройки-> Стиль кода-> Шаблоны кода-> Код есть способы настроить автоматически добавляемый код, например, автоматически сгенерированные методы (шаблон «Тело метода», в котором есть комментарий «Сгенерированный заглушкой метода»).Но нет способа сконфигурировать новые методы, которые не генерируются.

Кроме того, переменная formatted_method_parameters недоступна при редактировании шаблона для «Тела метода».

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