0

バックグラウンド:

getProperty という名前のメソッドを持つ Component という Java クラスがあります。私のソース管理には、この Component クラスをインスタンス化し、そのオブジェクトで getProperty メソッドを呼び出す他の多くの Java クラスがあります。この getProperty メソッドを変更して、誰が影響を受けているかを分析したいと考えています。

要件:

すべての *.java ファイルを検索したい (パッケージ名に従って複数のディレクトリにまたがっている)。問題は、getProperty メソッドが Component クラスだけで使用できるのではなく、System.getProperty や Event.getProperty などの他の多くのクラスで使用できることです。そのため、grep を使用した検索結果が混在した結果を返しています。ここで、各検索結果をスキャンして、自分に関連するものを見つける必要があります (つまり、Component.getProperty メソッドの呼び出し元です)。

1 つ確かなことは、だれかが Component.getProperty メソッドを呼び出す場合、Component クラスを明示的にインポートすることを確実にすることです。すなわち。com.abc.xyz.alpha.Component をインポートします。

したがって、私の検索アルゴリズムは、ファイルに文字列「import com.abc.xyz.alpha.Component;」がある場合、という方向に進みます。次に、そのファイルで getProperty 文字列のみを探します。ファイルに import ステートメントがない場合は、そのファイルをスキップして次のファイルに進みます。

この検索を perl で書くのに助けが必要です。誰かがここで助けてもらえますか?

この長い投稿を最後まで読んでくれてありがとう。御時間ありがとうございます。

4

1 に答える 1

0

荒々しく、

fgrep -l 'import com.abc.xyz.alpha.Component;' *.java |
xargs fgrep getProperty

またはPerlでは、

perl -0777ne 'print map { "$ARGV:$_\n" } grep { m/getProperty/ } split ("\n")
    if m/import com\.abc\.xyz\.alpha\.Component;/' *.java
于 2012-08-23T16:15:15.710 に答える