gpt4 book ai didi

javascript - codemod/transform 包括 BlockStatement

转载 作者:行者123 更新时间:2023-11-30 00:20:58 24 4
gpt4 key购买 nike

我正在执行 codemod/transform 以更改代码中的 if/return 语句。

我有很多if(err) do something,我需要重构那个行为。

我如何为此进行转换?

我有什么:

if (err) {
return connection.rollback(function() {
throw err;
});
}

我想要的:

if (err){
return rollback(connection, err);
}

到目前为止,我设法替换了 node.consequent 并直接使用了 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);

如何在其中包含 BlockStatementreturn?这是执行此操作的正确方法吗?codemod

实例here

最佳答案

好的,成功了!多么好的工具!

please do comment or post a new answer if there is a better way to do this!

因此,我缺少的是 if 语句中的 block 语句 {},以及其中的 return

所以我补充说:

var ret = j.returnStatement(fnCall);
var block = j.blockStatement([ret]);
_if.node.consequent = block;

结果在这里:http://astexplorer.net/#/84e8ZqEAwQ/1

关于javascript - codemod/transform 包括 BlockStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com