我正在做一个codemod /转换来更改我的代码中的if
/return
语句。
我有很多,if(err) do something
我需要重构这种行为。
我怎样才能为此进行转换?
我有的:
if (err) {
return connection.rollback(function() {
throw err;
});
}
我想要的是:
if (err){
return rollback(connection, err);
}
到目前为止,我设法替换node.consequent
并直接使用 a callExpression
:
root.find(j.IfStatement).replaceWith(function (_if) {
var fnCall = j.callExpression(j.identifier('rollback'), [
j.identifier('connection'),
j.identifier('err')
]);
_if.node.consequent = fnCall;
return _if.node;
});
...导致:
if (err)
rollback(connection, err);
如何在里面也包含 theBlockStatement
和 areturn
呢?这是执行此codemod的正确方法吗?