問題タブ [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 投票する
2 に答える
255 参照

regex - リファクタリング - 「_」で始まるすべてのフィールド名を置き換える

プロジェクトをリファクタリングしようとしていますが、「_」で始まるすべての変数名を置き換えたいと考えています。private final String _name; -> private final String name;

変数を検索するための私のテンプレートは単純です:

変数名に次の正規表現を設定します。

しかし、これは "_" で始まる変数のリストを返すだけです。_ を取り除いてから、新しい変数名を設定するにはどうすればよいでしょうか?

編集:このトピックを編集したので、Eclipse ユーザーが Eclipse でこれを解決する方法を教えてくれるかもしれませ

0 投票する
1 に答える
164 参照

intellij-idea - IntelliJ での特定のオブジェクト初期化の構造検索

IntelliJ で構造検索を使用して、任意の配列要素を使用したオブジェクト配列の初期化のすべての発生を見つけようとしていますが、正しく取得できないようです:

私が使用している非常に単純な検索テンプレートは次のとおりです。

探しているオカレンスがピックアップされません。実際、ほとんどの場合、次のようなまったく予期しない出来事が見つかります。

私が期待していたのは、次のような行でした (興味深いのは new Object[] の部分です)。

次の「検索するテキスト」を使用した単純な「パス内検索」は問題なく機能します。

私はここで何か間違ったことをしているに違いありません。期待した結果が得られない理由を知っている人はいますか?

敬具、ベン

PS 興味のある読者への補足として: プロジェクトのフレームワークである slf4j をアップグレードしたいので、これを行っています。オブジェクト配列を使用して、以前に必要だった複数のログ パラメーターの構文をすべて置き換えたいと考えています。 :

例えばlog.debug("Some log statement param1[{}], param2[{}], param3[{}]", new Object[] { param1, param2, param3 });

変数パラメーター リストを使用して次のコードを使用します。

log.debug("Some log statement param1[{}], param2[{}], param3[{}]", param1, param2, param3 );

0 投票する
2 に答える
897 参照

c# - Resharper の構造的な検索と置換を使用して、C# オブジェクト初期化子を変換してコンストラクターを使用する方法

Resharper 構造検索および置換テンプレートを使用して、この例を自動的に置換したいと考えています。

new Fruit { Name = "Apple", IsTasty = true }

これとともに:

new Fruit("Apple", true)

(必要なコンストラクターは既に存在することに注意してください)

私はこのようなさまざまな組み合わせを試しました:

new $type$ { Name = $name$, IsTasty = $isTasty$ };

...さまざまな種類のプレースホルダーを使用していますが、R# はコード内の例を見つけられません。誰もこれを以前にやったことがありますか?

0 投票する
1 に答える
133 参照

regex - 特定の戻り値と動作を内部に持つメソッドを見つけるための正規表現

thisに似たものが必要ですが、メソッドの範囲内にあります。

特定のプロジェクトで、特定のオブジェクトを返し、別の特定のメソッドを使用するメソッドを持つすべてのファイルを検索したいと考えています。

現在、私はこれしか持っていません:MyObject(.)*\((.)*\)[\w\W]*?returnこれは、期待する戻り値を持つメソッドを選択しますが、その中で動作を指定するにはどうすればよいですか?

別のより単純なパターンを自由に使用してください。作成したパターンで十分かどうかはわかりません。

そして、私は正規表現の専門家ではないので、将来の目的のためにも正規表現を説明してください。

0 投票する
1 に答える
179 参照

java - IDEA Structural Search - メソッドの最後に一致するコード

私はこのような方法を見つけようとしています:

を取り除くのが目的ですmockery.assertIsSatisfied()。メソッドの途中やループの最後にあることがあり、妥当と思われる場合があるため、すべての呼び出しを削除することはできません。もちろん、JUnit@Ruleを使用してこれを自動的に呼び出すため、すべてのテストの最後にこれを配置するのは冗長です。

これが正しいテンプレートだと思いました:

これは、そのメソッドの 400 以上の使用法のうち約 2 つのメソッドに一致します。そのメソッドの他の使用法をランダムに選んでみると、他のものもパターンに一致するはずだったことがわかります。(一致するものの間で何が共通しているのかわかりません。どちらも try ブロックですが、一致しないものもいくつかあります。)

それで、これを行う正しい方法は何ですか?

編集:これに a をハードコーディングしたことに気付いたthrows Exceptionので、それなしで検索を再実行したところ、結果は0になりました。迷っている人は参考にしてください。

0 投票する
2 に答える
1571 参照

java - IntelliJ/構造検索: スーパー メソッドのみを呼び出す無駄なメソッドを削除する

私の Android プロジェクトの 1 つ (ただし、必ずしも Android に関連付けられているわけではありません) には、コードを爆破するだけで実際には何もせず、自動的に削除される可能性のあるメソッド呼び出しがかなりあります。例:

これらの式を自動的に削除するのに役立つインスペクションが見つからなかったので、構造検索を試みました。これまでの私の試み: 「注釈付きメソッド」のテンプレートをコピーし、2 つの小さな変更を加えました。

  1. $Annotation$ が発生 = 1、テキスト = オーバーライドに変更されました
  2. occur=1 の $Statement$ 変数を追加しました

テンプレートコード:

これまでのところ、とても良いです。本体に 1 行しかないメソッドを見つけるだけです。しかし今、スーパーメソッドを呼び出す正確なステートメント ($MethodName$ への逆参照のようなもの) を明示的に検索したいのですが、スーパー値も返します (void でない場合)。何か案は?

これは、メインの IntelliJ コードベースにも統合できる非常に有用な検査になると思います。:-)

0 投票する
2 に答える
135 参照

intellij-idea - Intellij、派生クラスをリファクタリングして別のクラスから拡張する

基本クラスのオブジェクト指向構造があり、その基本クラスから約 10 個のクラスが派生しています。私はそれを特化したいと思っており、それらの 10 個のクラスがどのクラスから拡張されているかを変更する必要があります。

ので、私は持っています:

これを次のように変更する必要があります。

クラスを手動で調べる代わりに、Intellij にはリファクタリング機能があり、B から派生したすべてのクラスを B2 から派生するように変更できますか?

0 投票する
1 に答える
844 参照

java - コンストラクタ引数に大量の注釈を付ける方法は?

プロジェクトの多くのクラスをjackson経由でデシリアライズ可能にしたいという問題があります。問題は、ほとんどのクラスが次のようになっていることです。

だから私が見つけたのは、ジャクソンでは次のようなことができるということです:

そして、それはうまくいきます。問題は、intellij で構造的な置換を行うことができないことです。私がしようとすると: ここに画像の説明を入力

私の試合はすべて「未分類の試合」セクションにあります。さらに、置き換えようとすると、Intellij はクラスからコンストラクターを削除するだけです。

私が間違っていることについて何か考えがありますか、それとも intellij の既知のバグですか?

これを置き換えるのに役立つ非常に複雑な正規表現でさえ(単一引数コンストラクターの場合、自分で作成できます。問題は、これらのクラスのコンストラクターに複数引数コンストラクターがあることです)。