我想检查并将特定语句转换为try-with-ressources表单。但我觉得declarative hints format的语法使我无法解决这个问题。
我试过了:
<!description="Stmt into try-with-resources">
try {
$before$;
someMethod($arg1, $arg2, $arg3);
$after$;
} catch $catches$
=>
try (Resource res = acquire($arg1, $arg2, $arg3)) {
$before$;
res.use();
$after$;
} catch $catches$
但是应用于我的代码,模式永远不会匹配。以下是我希望匹配的示例代码部分:
public boolean step(String input) {
String id = getId(ID);
try {
SomethingBefore();
someMethod(10, "label", name);
return true;
} catch (Exception ex) {
log.error("problem", ex);
return true;
}
}
知道为什么这不匹配? ESP。因为我认为文档中的示例与我的匹配,但finally
:
try {
$statements$;
} catch $catches$
finally {
$finally$;
}
更新:似乎Jackpot - 规则使用相同的语法,可能是因为它使用相同的代码库。
答案 0 :(得分:1)
这种重构非常麻烦且记录不完整。您必须根据此示例更改模式
<!description="Stmt into try-with-resources">
try {
$before$;
$name($arg1, $arg2, $arg3);
$after$;
} catch $catches$
=>
try (Resource res = acquire($arg1, $arg2, $arg3)) {
$before$;
res.use();
$after$;
} catch $catches$
但是,如果您还有其他方法调用3个参数,我不知道如何处理它。
答案 1 :(得分:0)
根据我在代码返回正在使用,我不认为可以在$ $之后的地方使用。因此,如果您从代码中删除它可能匹配。