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

在Eclipse中显示方法名称和参数值的模板,eclipse,templates,logging,Eclipse,Templates,Logging,有没有办法在Eclipse中使用一个模板(Java->Editor->Templates)来生成这样的内容 debug("methodName arg1=" + arg1 + " arg2=" + arg2 + " arg3=" + arg3); 在方法中使用时。例如: public void setImage(long rowId, long contactId, String thinggy) { // invoking the template here, produces thi

有没有办法在Eclipse中使用一个模板(Java->Editor->Templates)来生成这样的内容

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实现这一点的方法,也许有一个插件可以实现这类功能?

这是一个开始:

debug("${enclosing_method_arguments}: ", ${enclosing_method_arguments});
这将产生以下结果:

debug("arg1, arg2, arg3: ", arg1, arg2, arg3);
我还没有找到一种方法来区分每一个论点。我发现它遇到了同样的问题


关于Eclipse模板的其他内容,请看这个。

我想回答这个问题可能有点晚了,但我的回答可能会帮助一些人:

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

System.out.println(String.format(“%tH:%%s”,java.util.Calendar.getInstance(),“${enclosuring_package}.${enclosuring_type}.${enclosuring_method}(${enclosuring_method_arguments})”);
String[]lArgsNames=新字符串(${enclosing_method_arguments}”)。拆分(“,”;
Object[]lArgsValues=new Object[]{${enclosing_method_arguments}};
对于(int i=0;i

对于此方法:

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

公共void foo(布尔参数){
// ...
}

产出将是:

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

18:43:43:076>any.package.AnyClass.foo(arg)
(布尔值)“arg”=“true”

这段代码似乎能够处理任何对象、基元类型和空值。是的,它的目的有点复杂

或模板=

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

为了什么

hesteFras(false, null, "sur", 89);
给出一个日志语句:

hesteFras: connect=false, ged=null, frans=sur, cykel=89

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


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

Eclipse日志参数插件可用于避免手动键入日志行。但是,对于所有新方法,自动添加行会更好

这可能吗?在Windows->Preferences->Code Style->Code Templates->Code中,有一些方法可以配置自动添加的代码,比如自动生成的方法(“方法体”模板,它有一个“自动生成的方法存根”注释)。但无法配置未生成的新方法


此外,在编辑“方法体”的模板时,变量格式的方法参数不可用。

非常感谢,它看起来非常有前景。不幸的是,我似乎无法使它工作。我在eclipse上安装了它,但没有看到新的格式化的\u method\u parameters变量:(-有什么想法吗?好吧,我现在找到了:对于上下文,不能使用“Java”(就像插件的主页上所说的那样)但是改为“Java语句”。然后变量就在那里了。我接受这个答案,祝贺并感谢这个插件。小请求:能够配置输出会很好;)例如,我更喜欢“var=”+var而不是“var:”+var。我必须为此安装插件吗。请给我一点指示<代码>格式化的\u方法\u参数
模板中没有这样的变量这是否支持eclipse标记好的答案永远不会太迟:)是的,这段代码做了应该做的,但使用起来太痛苦了。该死的,这太聪明了!我试图找出如何在其中获得正确数量的%s组,最后放弃并将它们全部添加到一个集群中,作为“Arrays.toString(new Object[]{${enclosing_method_arguments}}”);它可以工作,但会在最后追加所有组,因此您的显示结果是(p1name,p2name)=[p1Value,p2Value]——您的效果更好!
hesteFras: connect=false, ged=null, frans=sur, cykel=89