Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellij idea Intellij想法13:如何禁用重构注释和字符串?_Intellij Idea - Fatal编程技术网

Intellij idea Intellij想法13:如何禁用重构注释和字符串?

Intellij idea Intellij想法13:如何禁用重构注释和字符串?,intellij-idea,Intellij Idea,在.jsp文件中。这太“聪明”了,无法尝试重构与整个项目相匹配的注释。这通常会导致很多bug风险,在Java环境中进行重构不再安全 同样的事情也发生在Intellij12上。说真的,我不需要Intellij来推荐任何被认为不安全的东西,或者当它不确定是同一件事的时候 我可以排除重构,但我没有时间每次评估五个“建议”。这只会增加人为错误的可能性:大多数时候我只是按enter键,然后woops就会重构 当Java环境有时试图替换.js文件中的内容时,重构也是一个主要问题。说真的,这必须停止 如果没有

在.jsp文件中。这太“聪明”了,无法尝试重构与整个项目相匹配的注释。这通常会导致很多bug风险,在Java环境中进行重构不再安全

同样的事情也发生在Intellij12上。说真的,我不需要Intellij来推荐任何被认为不安全的东西,或者当它不确定是同一件事的时候

我可以排除重构,但我没有时间每次评估五个“建议”。这只会增加人为错误的可能性:大多数时候我只是按enter键,然后woops就会重构

当Java环境有时试图替换.js文件中的内容时,重构也是一个主要问题。说真的,这必须停止

如果没有弹出对话框,我无法取消选中“搜索字符串”。即使勾选了该选项,Intellij在默认情况下也不应该包含这些建议,尤其是当它位于当前文件之外时。它也可以建议重构它们,但默认情况下应该将它们排除在外。也就是说,它应该是一个选择加入功能,而不是默认情况下销毁所有内容

这是一个严重的用户体验问题,最近出现了所谓的“智能”智能重构。重构JS文件时,我不想在Java文件中搜索注释或字符串!时期反之亦然

安全第一!知道自己在做什么的开发人员将在需要时自己搜索字符串。在动态语言环境中,它使Intellij无法使用,因为通常情况下,如果没有任何清晰的模式,有时会进行重构,有时会在整个项目中进行更改,等等

应该有这样一个选项:“仅相对于此文件重构,或者100%推断时重构!”,特别是对于动态语言!对于静态语言,它甚至不应该尝试在文件外查找注释和字符串

我本不想公开发表,但我在两年多前的bugtracker中提出了这个问题,但没有人注意

编辑

对于那些认为我可能会走得更远的人,我只是尝试了一下:

在本课程中:

<%--<link href="<c:url value="../core/core.css" />" />--%>
当像以前一样重构
KV.val
时,我得到了以下建议,一个来自灾难的输入,以及一些我必须一次评估和排除的东西。这需要努力,而且很烦人,也很危险。就像有人大喊:住手!然后哦,一分钟后什么都没有,沮丧和一篇1000字的文章(这篇)

说真的,有没有办法阻止这种危险行为!?有什么原因可以解释为什么默认情况下会启用此选项

编辑20200706

2020年,大便继续:

按两次Shift+F6(重构重命名)会打开对话框,您可以禁用“在注释和字符串中搜索”

有什么原因可以解释为什么默认情况下会启用此选项


是的,有。现在人们倾向于使用太多的DSL、模板和语言注入。在普通的旧Java中,所有这些东西主要以字符串的形式存在。反射API还将方法/类名表示为字符串。任何IDE都不可能支持和识别它们,因此最好为您提供一个安全网,以防止可能的重构错误。如果你有一个优秀的单元测试覆盖率,那么你在这里可能是安全的

至于注释,它们通常包含代码示例。这些代码块在重命名过程中很快就会过时,所以当IDE提醒您它们的存在时,这会很有帮助

当然,这种检查有时会导致误报。然而,如果你给变量起的是描述性的自解释名称(我的意思不是“var”或“val”),这是不可能发生的。因此,IDE在某种程度上推动您朝着更好的代码风格发展


如果您仍然不相信,请按照@Meo的建议,禁用字符串和注释中的搜索。

要清楚,这两次激活了“重构重命名”的快捷方式。这可能是一个不同的组合,取决于你的键映射。谢谢,我看到你也可以禁用inplace重构,虽然它很好,因为它总是感觉安全的。我这篇文章的重点是强调应该在全局范围内关闭对注释和字符串的搜索。它试图改变另一个类中变量的值是毫无意义的。这是不明智的。当智能或人工智能假设通过增加正确性的可能性,它在某种程度上被允许有一个误差范围时,就会出现问题。我需要严格的java重构,它应该包括XML文件,除非整个包名都存在,但由于它记住了设置,我认为它没有问题。你可以使用全文重构,也可以不使用,这取决于你需要什么。不幸的是,复选框似乎会不时出现。有人知道会永久关闭此功能的设置吗?正如之前所提到的,IntelliJ在这里太“聪明”了,不利于自身的发展…@Meo它并不尊重这一点。现在javascript中的内联、incode文本重构正在修改代码中的值和注释,而不是函数中的值和注释。是的,这是一个很好的建议。但正如我对他的评论,当智能或人工智能假设通过增加正确的可能性,它在某种程度上被允许有误差时,就存在一个问题。我需要严格的java重构,除非整个包名存在,否则应该包含XML文件,即使这样,我也希望得到通知。重构结果不应首先列出注释和字符串,默认情况下应排除。它变得越来越不友好了,需要我集中精力,这迫使我向前倾,眼睛紧张。这就像试图记下一个塞满电话号码。你能重复一下这个号码吗:392314213343234295423442?对我来说也是一样的努力,
<%--<link href="<c:url value="../core/core.css" />" />--%>
public class KV<K, V> {
    public K key;
    public V val;
    public KV(K key, V val) {
        this.key = key;
        this.val = val;
    }
}
public class CoreConfig {
    String abc = "kv.val";
    String def = "somethingElse.val";
}