如何智能更改项目范围内的函数签名?

Posted

技术标签:

【中文标题】如何智能更改项目范围内的函数签名?【英文标题】:How to intelligently change signature of function in the scope of the project? 【发布时间】:2021-06-29 00:30:09 【问题描述】:

我想更改Python模块中一个函数的签名,在当前项目中已经多次使用。

如果使用IDEA的重构功能(带Python插件),修改函数名可以在整个项目范围内生效;但更改签名不能,也看不到这个范围选项。

去谷歌搜索相关内容,没有找到更多有用的信息。

IDEA真的没有办法智能改变整个项目范围内的函数签名吗?

如果答案是否定的,还有其他解决方案吗?

注意:当然,也可以使用正则表达式。这个选项是已知的。

【问题讨论】:

好吧,Refactor | Change Signature 操作应该在这里完成工作。 jetbrains.com/help/idea/change-signature.html 例如带有 php 插件的 IDEA:jetbrains.com/help/idea/…。 PyCharm:jetbrains.com/help/pycharm/change-signature.html P.S. 不能谈论 Python/IDEA .. 但它在实际的 PhpStorm 中运行良好。 @LazyOne 这是已知的。右键菜单,重命名后,重点是“整个项目”。从你发的超链接看,好像没有这个选项。默认是整个项目吗? @Andy 是的,项目中函数的所有用法都应该通过Change Signature重构。 @LazyOne 我确信在 Python 或 PyCharm 的 IDEA 中情况并非如此。也许它没有这个功能。 @Andy 那么它确实为您更改签名的范围是什么?只有模块?或者它甚至不这样做? 【参考方案1】:

不能像重命名那样设置范围,具体范围是什么不太清楚,但绝对不限于当前文件。

如果只在当前文件生效,那么可能没有建立正确的解析关系,那么你应该Find Usages(默认快捷键是Control+鼠标左键),检查一下,如果发现错误,可以使用File | Invalidate Caches尝试清除缓存并重启IDE。

感谢 LazyOne。

【讨论】:

以上是关于如何智能更改项目范围内的函数签名?的主要内容,如果未能解决你的问题,请参考以下文章

如何从全局范围调用 jquery 函数内的方法?

C++ STL transform 函数说明

给定'getrand100()'函数获取特定范围内的随机数

如何编写使用临时容器的范围管道?

是否可以将 Firebase 函数的范围限定为存储桶内的文件夹?

VueJs 上 $route 监视函数中的组件范围不正确