2016-04-04 16 views
0

ソースコードファイル内で特定のパターンを検索できるプログラムを作成したいとします。つまり、入力はコード例です。Apache Solr - ソースコードファイルの索引付け方法

int fib (int i) { 
    int pred, result, temp; 

    pred = 1; 
    result = 0; 

    while (i > 0) { 
    temp = pred + result; 
    result = pred; 
    pred = temp; 
    i = i-1; 
    } 
    return(result); 
} 

出力は、このコードまたは同様のコードを含むファイルです。

オープンソースワールドコードは他のプロジェクトで再利用されています。特に、図書館はプロジェクトにコピーされることが多い。バグを簡単に修正するためには、特定のライブラリやコードが使われているプロジェクトを知る必要があります。

したがって、私はapache solrを使用しようとします。

私の計画は、私のソースコードファイルのインデックスを作成することです...私はいくつかのツールが必要ですか?いいえ、私は良いアイデアがわかりません。ソースコードファイルをトークン化する私に関数、変数などのすべての名前を与えるように、私はsolrインデックスを供給するのに使うことができる出力。しかし、私はおそらく、トークンやデータインポートハンドラーが、このトリックを行うapache solrにすでにあるのかどうかはわかりません。

答えて

1

異なるプロジェクトで異なる命名規則が使用される可能性があるため、solrを使用してこれを行うことができるかどうかはわかりません。

Tools for Code Seacrh

0

のApache Solrのはおそらくここで最良の選択肢ではありません。

は、それが助け場合は、下のリンクを見てください。ここでは、文字列の比較よりもツリー/グラフの比較に似た問題があります。私はそのために特別なツールを使用することをお勧めします。

手作業でやりたいのであれば、基本的にはツリートラバーサルAPIを持つパーサーか、トークンのストリーム/ツリーを得るための他の方法が必要です。これは、解析している言語に非常に依存します。あなたの言語の文法を持っていれば、ANTLRのようなものがあります。

また、十分に構造化されていれば、コンパイル済みコードから情報を抽出することもできます。 Javaの場合は、ASMのようなものがあります。

しかし、あなたはまだ表現を理解する必要があります。応答 - 自分自身 - の質問どのように私はこれらの2つのコードが似ていることを知っていますは正しい最初のステップでなければなりません。

関連する問題