用于在Eclipse中显示方法名称和参数值的模板

时间:2010-08-24 14:27:02

标签: eclipse templates logging

有没有办法在Eclipse中生成一个模板(Java - >编辑器 - >模板),生成类似的东西

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);
}

我找不到使用标准模板UI的方法,也许有一个插件来做这类事情?

5 个答案:

答案 0 :(得分:10)

这是一个开始:

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

产生以下内容:

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

我没有找到分离每个论点的方法。我发现this page遇到了同样的问题。

对于其他Eclipse模板,请查看此question

答案 1 :(得分:5)

我想回答这个问题可能有点为时已晚,但也许我的回答会对某人有所帮助:


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"));
}

对于这种方法:


public void foo(boolean arg){
    // ...
}

输出将是:


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

此代码似乎能够处理任何对象,基本类型和空值。是的,这个目的有点复杂!

答案 2 :(得分:5)

我制作了一个小插件,添加了格式很好的变量:

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

Eclipse不提供有关参数类型的任何信息,因此没有Arrays.toString(...)

答案 3 :(得分:4)

或template =

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

答案 4 :(得分:1)

eclipse-log-param插件非常有用,可以避免手动输入日志行。但是,为所有新方法自动添加行会更好。

这甚至可能吗?它看起来像在Windows-&gt;首选项 - &gt;代码样式 - &gt;代码模板 - &gt;代码有方法配置自动添加的代码,如自动生成的方法(&#34;方法体&#34;模板,其中&#34;自动生成的方法存根&#34;评论)。但是没有办法配置未生成的新方法。

此外,编辑&#34;方法主体&#34;的模板时,变量formatted_method_parameters不可用。