| 247 | |
| 248 | # 修改 return 语句为 return Result(result=..., tool_id=...) |
| 249 | class ReturnTransformer(ast.NodeTransformer): |
| 250 | def __init__(self, func_name): |
| 251 | self.func_name = func_name |
| 252 | |
| 253 | def visit_Return(self, node): |
| 254 | if node.value is None: |
| 255 | # return 语句没有返回值 |
| 256 | new_return = ast.Return( |
| 257 | value=ast.Call( |
| 258 | func=ast.Name(id="Result", ctx=ast.Load()), |
| 259 | args=[], |
| 260 | keywords=[ |
| 261 | ast.keyword(arg="result", value=ast.Constant(value=None)), |
| 262 | ast.keyword(arg="tool_id", value=ast.Constant(value=tool_id)), |
| 263 | ], |
| 264 | ) |
| 265 | ) |
| 266 | else: |
| 267 | # return 语句有返回值 |
| 268 | new_return = ast.Return( |
| 269 | value=ast.Call( |
| 270 | func=ast.Name(id="Result", ctx=ast.Load()), |
| 271 | args=[], |
| 272 | keywords=[ |
| 273 | ast.keyword(arg="result", value=node.value), |
| 274 | ast.keyword(arg="tool_id", value=ast.Constant(value=tool_id)), |
| 275 | ], |
| 276 | ) |
| 277 | ) |
| 278 | return ast.copy_location(new_return, node) |
| 279 | |
| 280 | transformer = ReturnTransformer(node.name) |
| 281 | node = transformer.visit(node) |
no outgoing calls
no test coverage detected