0

次の問題に直面しています: Objective-C ソース コード (iOS 用に作成) の詳細なレポートを生成する必要があります。以下を表示できるようにする必要があります。

クラスレポート:
クラス名 | ファイルの場所 | メソッドの数
ClassA | /my/path/ClassA.m | 7
クラス B | /my/パス/ClassB.m | 12
....

メソッド レポート:
メソッド名 | クラス名 | ファイルの場所の
方法1 | クラスA | /my/path/ClassA.m
メソッド 2 | クラスA | /my/path/ClassA.m
....

また、他にもいくつかのレポートを表示できるようにする必要がありますが、現時点では、どこかから始めることに興味があります。

注意してください:
- 現時点では、行数/複雑さなどを表示する必要はありません。
- 上記のようなレポートで十分です (上記の情報が含まれている限り、私は本当に幸せです。情報を解析して、必要なレポートを作成できます)
- Doxygen とその xml 出力は既に見ましたが、サンプルはほとんどありません。私が実行したプロジェクトでは、xmlドキュメントにリストされているすべてのメソッドを取得できませんでした(ファイルに含まれていても)。これらのメソッドが表示されない理由を調査する必要があります。

すべての回答/ヒント/コメントに事前に感謝します....

4

2 に答える 2

1

Java の習熟度に応じて、JavaCCを確認することをお勧めします。また、Objective-C 2.0 を解析するための文法もあります。

http://lists.apple.com/archives/java-dev/2010/Sep/msg00097.html

文法がどれほど複雑/単純であるかを確認するために、文法をほとんど開いていなかったことを告白します。よく整理されているように見えましたが、自分で試したことはありませんでした。一般的に言えば、JavaCC は一見すると少し急勾配に見えますが、数時間いじってみれば、すぐにマークを見つけることができるはずです。ただし、一度取得すると、どの言語の解析も非常に簡単になります。

于 2012-05-22T13:35:17.000 に答える
1

私たちのソース コード検索エンジンは、おそらくこれをうまく行うのに役立つでしょう。

通常、SCSE は対話的に使用され、大量のソース コードを検索してコードを検査します。検索対象の言語の要素を理解し、Objective C のオプションがあります。言語の構文を理解するため、空白やコメント、面白い内容の文字列によって混乱することはありません。また、検索結果をテキスト ログやヒットと場所 (ファイル、行) の XML ファイルとして記録することもできます。

これをバッチ スクリプトで使用して、検索を実行し、結果を取得できます。

必要なことを行うには、SCSE に次のクエリを指定し、結果を XML に記録します (ObjectiveC 構文を許してください。私はそのようなプログラマーではありません)。

    '@implementation' I     -- this would find class declarations, bind I and capture line #
    '@interface' I  -- if you wanted these, too
    '@end'   -- would find end-of-class declarations
    '+' '(' I ')' '{'  -- find method declations and bind name
    '-' '(' I ')' '{'  -- find static method declarations

これで、これらの要素の場所を記述した XML ファイルのセットができました。ヒットを統合すると、クラスとコンテンツのアウトライン モデルが得られ、この情報から値を計算するのは非常に簡単です。

より正確な回答が必要な場合は、DMS Software Reengineering Toolkit完全な Objective C パーサーがあります。この情報は、パーサーが生成する AST から簡単に抽出できます。

于 2012-05-22T17:12:13.013 に答える