IntelliJ IDEA結(jié)構(gòu)搜索和替代的示例

2018-10-25 10:01 更新

一個語句

$Statement$;

將事件發(fā)生次數(shù)增加到一定數(shù)量,您可以找到包含指定數(shù)量的元素的語句序列。

方法調(diào)用

$Instance$.$MethodCall$($Arguments$)

此模板與方法調(diào)用表達式匹配。如果出現(xiàn)的次數(shù)為零, 則表示可以省略方法調(diào)用。

if 語句

if ($Expr$) {
    $ThenStatements$;
}
else {
    $ElseStatements$;
}

在注釋或字符串文本中搜索

如果要找一個包含 "foo" 的注釋或文字,搜索模板將是 $SomethingWeWantToFind$ 或 "$SomethingWeWantToFind$"。如果想要查找包含某些特定單詞的注釋/字符串(例如,將 foo 作為一個詞),則應(yīng)將其指定為文本約束。

搜索類的構(gòu)造函數(shù)

使用默認變量設(shè)置的類的搜索模板構(gòu)造函數(shù)允許在指定范圍內(nèi)的每個類中只找到一個構(gòu)造函數(shù)。如果類有幾個構(gòu)造函數(shù),那么找到多個構(gòu)造函數(shù),則您需要在$ class $變量中設(shè)置發(fā)生計數(shù)的最大值選項。有關(guān)更多信息,請參閱編輯變量對話框。 

請注意,類聲明也將包含在查找事件的列表中。

添加 try / catch / finally 代碼

如果想用 try/catch/finally 結(jié)構(gòu)替換一個語句,可以建議使用下面的一對搜索和替換模板。搜索模板是:

$Statements$;

具有指定為約束的特定最大出現(xiàn)次數(shù)。

替換模板是:

try {
 $Statements$;
}
catch(Exception ex) {
}

查找實現(xiàn)某個接口的類或所有類的所有后代

考慮以下搜索模板:

class $Clazz$ extends $AnotherClass$ {}

或者

class $Clazz$ implements $SomeInterface$ {}

作為變量 $ AnotherClass $ 或 $ SomeInterface $ 的文本約束,指定基類或?qū)崿F(xiàn)的接口的名稱。

找到所有這些方法

要查找相同接口方法的不同實現(xiàn),請使用以下搜索模板:

class $a$ {
public void $show$();
}

指定 $show$ 變量的文本約束,并啟用“該變量是搜索的目標(biāo)”選項。

使用 @Modifier 查找包本地和實例方法

IntelliJ IDEA 建議為一個類的本地和實例字段預(yù)定義模板。這些模板使用了 @Modifier 注釋,有助于描述搜索目標(biāo),當(dāng)沒有辦法用自然語言表達它時。

但是,如果您需要搜索本地包或?qū)嵗椒?,則必須自己創(chuàng)建相應(yīng)的搜索模板,然后應(yīng)用 @Modifier注釋。

指定使用可見性修飾符本地包和實例查找所有方法的條件,使用以下搜索模板:

class
$Class$ {
@Modifier("packageLocal") @Modifier("Instance" ) $ReturnType$ $MethodName$($ParameterType$ $Parameter$);
}
}

在搜索中使用“包含約束”字段

現(xiàn)有示例使用以下模板:

LOG.debug($params$);

在 _a 和 _st 是變量并且 * 表示 "約束" 字段中包含的零個或多個匹配項,并選中 "完全匹配變量" 的 "反轉(zhuǎn)條件" 復(fù)選框的地方放置 if (' _a) {' _st *;} 將導(dǎo)致日志記錄搜索不包含在 if 語句中。

搜索 XML 和 HTML 標(biāo)簽、屬性及其值

搜索標(biāo)簽的最簡單的模板是:<$a$/>

通過將約束放在變量 $a$ 上,您可以指定要查找的標(biāo)簽。例如,如果指定了 text / regexp 約束:app.+,您將發(fā)現(xiàn)這些標(biāo)記的名稱以 app 開頭。

用于在 XML 和 HTML 中搜索的更通用的模板 <$tag$ $attribute$="$value$"/> 。通過使用具有正確指定的搜索設(shè)置和約束的此模板,您可以發(fā)現(xiàn)幾乎可能發(fā)生在XML 或 HTML 中的任何內(nèi)容。例如,如果您指定了text / regexp 約束的 width 為 $attribute$,則 $attribute$ 可以找到具有該 width 屬性的所有標(biāo)簽。

使用腳本約束

IntelliJ IDEA 結(jié)構(gòu)搜索可讓您使用無法使用 UI 指定的高級約束。

以下模板為例:

IntelliJ IDEA 使用腳本約束

  IntelliJ IDEA 使用腳本約束

該約束是使用 Groovy 腳本語言和 IntelliJ IDEA PSI API 為您搜索的語言指定的。Groovy 約束適用于可以應(yīng)用結(jié)構(gòu)搜索的任何語言。 

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號