19

私は静的解析とコンパイル時チェックが大好きで、ほとんど欠点がありますが、私の日常の仕事のほとんどは Objective-C で行われています。この緊張を解消するために、Objective-C プロジェクトで実行できる独自の分析ツールを作成できるようになりたいと考えています。

しかし、インターネットを調べてみると、人々が完全な Objective-C の文法をまとめるのに苦労しているようです。あるサイト は、基本的にあきらめることを勧めています。

ANTLR の Web サイトで文法を見つけましたが、それを起動すると、何も解析できませんでした。たとえば、次の行に応答しました。

void x();

src/main/resources/somecode.m line 1:0 no viable alternative at input 'void'

:(

文法を詳しく調べたところ、次の落胆する免責事項が見つかりました。

it's a work in progress, most of the .h file can be parsed

しかし、インターフェイスと実装の両方を解析できるものが必要です。

完全な Objective-C 2.0 文法はどこかにありますか? 私は Scala で動作するものを好みます (したがって、ANTLR のような Java と互換性のあるものはすべて完璧です) が、現時点では、別のパーサー ツールキット用に設計されたものを採用したいと考えています。

4

4 に答える 4

17

他の人が述べたように、Clang は適切なソリューションです。独自の AST コンシューマー、つまり AST を調べたときに呼び出されるクラスを提供できるため、構文解析や文法の混乱について心配する必要はありません。

Clang は Objective-C を完全にサポートしており、独自のチェックをモデル化できる静的アナライザーには既に多くのクラスがあります。(中clang/lib/StaticAnalyzer/Checkers)。

そのディレクトリには多くの静的アナライザー チェッカーが含まれていますが、通常の AST コンシューマーを作成することもできます。詳細については、 http://code.google.com/p/chromium/wiki/WritingClangPluginsを参照してください。

于 2011-07-25T00:21:34.520 に答える
6

Clangは、Objective-Cをサポートする静的分析ツールです。過去にとても便利だと思いました。

http://clang-analyzer.llvm.org/

于 2011-07-22T15:08:32.607 に答える
4

clang は拡張可能です。既存の静的分析を拡張するか、独自の静的分析を作成できます。llvm / clang は、(動的または静的に) リンクできる一連のライブラリとして設計されています。優れた出発点は ARC (自動参照カウント) 移行ライブラリです。これは、客観的な c コード の静的な分析と書き換えを担当します。

arcmt-testARC 移行ライブラリを使用する小さなサンプル プログラムです。

于 2011-07-22T21:16:07.457 に答える
1

OCDependを使用できます。これは Clang ベースの静的分析ツールであり、Objective-C コードの品質管理を簡素化し、非常に柔軟なコード クエリ フレームワークを提供します。

于 2013-03-15T15:54:23.350 に答える