问题标签 [structural-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
320 浏览

c# - Resharper 搜索模式以检测返回未使用值的方法

如果可能的话,我想要一个更清晰的模式来检测未处理的 IDisposables。如果我有方法

并在不分配和使用 IDisposable 的情况下调用它,我想被告知它。我尝试了以下模式

哪里expr是类型IDisposable。发生以下情况。

在此处输入图像描述

第一个被正确检测到,但第二个是错误,因为对现有变量的简单赋值也是 C# 中的表达式,而使用赋值var不是。是否可以检测到返回值是通过结构搜索分配的?

我注意到 resharper 具有以下代码质量选项

在此处输入图像描述

但我猜它们是用比结构搜索解析器更复杂的东西构建的。

0 投票
1 回答
353 浏览

visual-studio - 有没有办法通过 Resharper 中的评论禁用自定义模式

在 Resharper 中,普通提示可以通过评论禁用

按下时上下文菜单上的选项<ctrl-enter>

使用自定义结构搜索模式

http://blog.jetbrains.com/dotnet/2010/08/19/highlighting-custom-patterns-with-resharper/

我找不到办法做到这一点。上下文菜单上没有禁用提示的选项。

是否可以使用注释禁用自定义模式?

0 投票
1 回答
91 浏览

intellij-idea - Intellij - 如何防止结构化搜索/替换丢弃注释?

我使用以下搜索字符串创建了结构化搜索和替换:

这个替换字符串:

例如,替换这个:

和:

然而,结果是这样的:

也就是说,注释消失了。我该如何避免这种情况?代码库有许多带有各种注释的受保护字段,我想让它们保持不变。

0 投票
1 回答
3145 浏览

java - 如何将@Deprecated 添加到每个类和每个类的每个构造函数/方法?

我有一些遗留代码,我想标记所有它们和它们的所有方法@Deprecated,这样当我们去触摸它们时,我们可以删除这些注释,这样我们就可以跟踪哪些已经现代化,哪些仍然是坏的

我正在尝试使用Structural Search/Replace并且似乎无法获得正确的模板。

搜索模板

替换模板

但这会删除课程中的所有其他内容。

这会剥离所有匹配的类的可见性修饰符和最终修饰符。

我如何替换这些东西并保留其余代码?

0 投票
2 回答
314 浏览

java - 针对 IntelliJ 13 中带注释方法的返回类型的结构搜索

根据主题,我试图在结构上搜索使用特定注释和特定返回类型注释的所有方法。

更清楚地说,如果我有如下方法:

我想找到一种在 IntelliJ 中制定结构搜索的方法,以查找例如“所有带有注释@MyAnnotation和返回类型的方法String”,并且这样的搜索只会返回myMethod1().

我正在使用 IntelliJ 13 Ultimate。
谢谢。

0 投票
1 回答
1624 浏览

intellij-idea - 使用 IntelliJ 结构搜索和替换将 getter 替换为属性

由于我正在使用的库中的更改,getter 被替换为对属性的直接访问。例如:

已经成为

因此,我想使用 IntelliJ 的 SSR 将 getter 调用替换为 Bean 属性。但是,我一直坚持如何使用正则表达式捕获组进行替换。如果有另一个 IntelliJ 快捷方式来做我想做的事,我很乐意使用它。

以下 SSR 搜索参数找到了 getter,但我似乎无法$property$在替换中使用捕获组。我试过\1了(在 IntelliJ 中使用反向\$1引用)$1

我还尝试将搜索更改为$instance$.get$property$()(清除约束,$property$但搜索未返回任何结果。

  1. 如何访问捕获组 ( $1)
  2. 是否可以在替换之前执行任何处理$1(修复案例)

我注意到Script text接受 Groovy 代码的选项,但是我找不到有关此功能的任何文档。

SSR 搜索模板 实例变量配置 属性变量配置

0 投票
1 回答
54 浏览

resharper - Resharper 格式标识符中的结构查找/替换

使用 R# 结构查找/替换时,是否可以更改/修改令牌的输出?

例如,如果我捕获一个标识符,我可以在输出中使用正则表达式重新格式化它吗?我想改变这个:

[Fact] public void SomeMethodName()

和:

[Fact(DisplayName = "Some method name"] public void SomeMethodName()

可能的?

0 投票
1 回答
373 浏览

string - 使用 IntelliJ IDEA 结构替换连接字符串文字

我正在尝试搜索字符串的静态连接并使用Structural Search Replace将它们组合成单个字符串。

例如,我想搜索替换"String1"+"String2"+"String3" 并替换为"String1String2String3"。但它不应该替换注释中的字符串。

如果我搜索

它导致上述字符串出现 1 次但是

与上面的字符串不匹配

结构搜索替换如何工作?如何引用在中找到的Search string变量Replace String

0 投票
0 回答
284 浏览

intellij-idea - 有没有办法在 IntelliJ IDEA 中将一个注释的所有用法替换为另一个注释?

我们目前正在使用 JCIP 注释进行并发检查,并希望尝试切换到 JSR 305 注释以实现相同目的。稍后我们将做同样的事情,从 JetBrains 注释切换到 JSR 305 等价物,这将是一项更大的任务,因为它们被更多地使用。

我已经尝试了多种方法来做到这一点。

如果我使用简单的文本替换进行查找和替换,则导入语句最终会出现乱序。在几乎所有情况下,由于导入顺序,这会破坏代码样式。在某些情况下,IDEA 似乎无法看到它们出现故障并且不会让我修复它,所以我必须手动检查所有文件,在这种情况下我不妨完成整个工作手动。

我尝试了结构替换,发现整个功能和往常一样无法使用。它甚至似乎无法找到注释。

我最终尝试从我正在搜索的内容中删除 @ 并且它找到了注释(有点讽刺的是,即使这个功能的目的是在结构上找到东西,当你真正尝试找到一些结构时,它突然赢了'找不到任何东西。)然后它用新注释的完全限定版本替换它们,即使我告诉它缩短名称。更糟糕的是,它不会将这些名称检测为不必要的完全限定,因此它没有为此提供自动修复,这意味着我不能自动在所有文件上运行它。(它还将新注释显示为语法错误,我只能认为这是一个错误。)

我还尝试了 Migrate 功能,将所有旧的和类名添加进去并告诉它迁移。我发现这与结构上的替换具有相同的效果 - 它没有导入导入,让我手动修复所有这些。

也许还有另一种方法可以做到这一点?

0 投票
1 回答
1343 浏览

intellij-idea - Intellij 结构替换更改方法签名

我想更改具有特定签名的方法:

对此:

-> 我想替换返回类型。我用 SSR 试过这个:

  • 复制现有模板“类的方法”。这产生了模板:

    类 $Class$ { $ReturnType$ $MethodName$($ParameterType$ $Parameter$); }

我首先尝试分别替换 $ReturnType$ OldType 和 NewType:

搜索模板:

替换模板:

这给了我所有的方法,但是如果我替换它,该方法就会被删除。

然后我尝试通过以下方式更改模式:

搜索模板:

并指定 $OldType$ 应该是搜索的目标。我还为这个变量指定了一个 RegEx 模式:OldType。

替换模板:

这也会找到所有方法,但如果我替换它们会被删除。我尝试了非常不同的方法,但总是得到相同的结果:如果我替换匹配项,该方法将被删除。我如何必须指定搜索/替换模板才能在签名中将 OldType 替换为 NewType。