结构化搜索和替换
传统的搜索过程不会考虑源代码的语法和语义。 即使您使用正则表达式,GoLand 仍然将您的代码视为常规文本。 结构化搜索和替换 (SSR )操作允许您根据代码结构在代码中搜索特定的代码模式或语法结构。
GoLand 根据您创建的 search templates和您应用的 conditions查找和替换源代码片段。
结构性地搜索目标
在主菜单中,转到 以打开 结构搜索 对话框。
要快速切换到 结构替换 对话框,请点击
。
在 结构搜索 对话框中,执行以下操作之一:
从头创建模板:在模板列表中选择 草稿模板 ,并在编辑器区域中输入代码模板(例如,使用
$variable$表示您的代码)。要保存自定义模板以供以后使用,请在对话框工具栏上点击 保存模板 图标(
)。 您也可以选择将该模板保存为检查。

GoLand 会将创建的模板添加到模板列表中的 最近 节点。
使用现有模板作为原型:从可用的现有模板列表中选择所需的模板。
例如,请参考以下代码段:
package company import ( "fmt" "regexp" ) type Employee struct { NAME string Age int Salary float64 Email string } type Manager struct { Employee Department string } type Documents struct { Passport int SocSecurity string IDCard string BirthCert string } type Department struct { Name string Manager *Manager Employees []Employee } func (e *Employee) Work() { fmt.Printf("%s is working.\n", e.NAME) } func (e *Employee) GetDetails() string { return fmt.Sprintf("Employee: %s, Age: %d, Salary: %.2f, Email: %s", e.NAME, e.Age, e.Salary, e.Email) } func (e *Employee) IsValidEmail() bool { var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`) return emailRegex.MatchString(e.Email) }让我们查找一个包含四个字段的 struct,其中第一个字段以大写字母开头。
在现有模板列表中,导航到 并选择 结构体声明。 如果打开的文件中存在匹配的构造,GoLand 将立即在编辑器中高亮显示它们。
点击 查找 ,在整个项目中搜索这些结构。

在 结构搜索 对话框中会显示所选模板及其过滤器的值。 您可以编辑现有过滤器,或添加新的 条件 ,例如正则表达式或 脚本约束。 将插入符号置于某个代码变量上,并使用过滤器区域管理其过滤器。
例如,您可以更改 计数 修饰符的
$field$变量,并将其 最大值 值设置为3。 现在,高亮显示的结果受到该设置的限制,且应包含不超过三个字段。
或者,为了实现更精细的搜索,您可以将搜索模板更改为:
type $name$ struct { $field$ $fieldType$ $field1$ $field1Type$ $field2$ $field2Type$ $field3$ $field3Type$ }在此示例中,为 文本 变量添加一个
$field$修饰符。在 修饰符 面板中,点击 添加 (
)以创建新的修饰符。 要使用正则表达式,请选择 文本。 您还可以根据变量添加 其他修饰符。
对于 文本 修饰符,输入以下正则表达式:
\b[A-Za-z]*[A-Z]{2,}[A-Za-z]*\b在此情况下,GoLand 仅搜索首个字段中包含大写字符的 struct。

还提供其他选项,具体取决于所选语言。
例如,请查看以下选项:
语言 :使用该列表选择要在搜索中包含的文件类型。 在此情况下,它为 Go。
目标 :使用该列表选择要搜索的项。
注入的代码 :选中后,诸如 HTML 中的 JavaScript 或 Java 中的 SQL 等注入的代码将包含在搜索中。
区分大小写 :选中后,搜索结果将与搜索目标的大小写匹配。
指定搜索范围:项目、模块、目录或自定义范围。
单击 查找。
GoLand 会在 查找 工具窗口中显示结果。

您可以将新的搜索模板作为自定义模板添加到 结构化搜索检查。 为此,请在 查找 工具窗口中点击 从模板创建检查。 随后即可重复使用它来检查您的代码。
共享搜索模板
您可以通过导出或导入搜索模板与同事共享。
在 结构搜索 对话框 中, 创建一个新的搜索模板或使用现有的模板。
要导出模板,请点击
。 GoLand 将模板的 XML 表示添加到剪贴板(按 Ctrl+Shift+V 以查看剪贴板内容)。 您可以在聊天、电子邮件或论坛中与其他开发者共享此表示形式。
要导入模板,请从任何地方(电子邮件、聊天或论坛)复制(Ctrl+C )共享的 XML 代码,并在 结构搜索 对话框中点击
。 GoLand 接受 XML 代码表示并将其转换为模板,包括变量和作用域(如果存在)。