私は、大規模なソフトウェア プロジェクトに関するいくつかの単純なメトリックを計算する、私の古いプロジェクトのほこりを払っています。メトリックの 1 つは、ファイル/クラス/メソッドの長さです。現在、私のコードは、クラス/メソッドの境界が非常に粗いアルゴリズムに基づいている場所を「推測」しています (ファイルをトラバースし、「現在の深さ」を維持し、引用符で囲まれていない括弧に遭遇するたびにそれを調整します。クラスまたはメソッドが開始されたレベルに戻ると、 、終了したと見なします)。ただし、この手順には多くの問題があり、深度がいつ変化したかを検出する「単純な」方法が常に有効であるとは限りません。
これで正確な結果が得られるようにするには、関数定義、クラス定義、深さの変化を検出する正規の方法を (各言語で) 使用する必要があります。これは、プロジェクトを適用したいすべての言語に対して、少なくともこれらの要素を含む解析ツリーを生成する単純なパーサーを作成することになります。
明らかに、パーサーはこれらすべての言語に対して以前に作成されているため、その作業を繰り返す必要はないように思われます (パーサーを作成するのは楽しいものですが)。 多数のソース言語用にすぐに使用できるパーサー ライブラリを収集するオープンソース プロジェクトはありますか? それとも、ANTLR を使用してゼロから独自のものを作成する必要がありますか? (注: プロジェクトを別の言語に移植して、優れた既存のリソースを利用できることを嬉しく思います。そのため、そのリソースを知っていれば、それがどの言語で書かれているかは問題ではありません。)