1

現在のデプロイメントターゲットの外部で呼び出されたメソッドが正しく処理されていることを確認するための自動テストを構築しようとしています。具体的な例を次に示します。

私のアプリはMacOSX 10.8 SDKを使用するように設定されており、展開ターゲットは10.6に設定されています。

私はよくsetTimingFunciton:メソッドを使用します。10.7で導入されました。

[[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];

ほとんどの場合、このメソッド呼び出しを、メソッドが存在すること、またはOSが正しいバージョン以降であることを確認するためのチェックで正しく制限しました。しかし、私は1つを逃しました。そして、それはめったに実行されないコードパスにあるので、ベータテストでさえそれに気づきませんでした。それはずっと後に私を噛むために戻ってきただけです。

統合サーバーまたは他のそのようなスクリプト化された回帰テストに展開できるこのようなものをテストする自動化された方法を構築したいと思います。自動的にチェックする方法があるに違いないように思えました。

残念ながら、10.6 sdkで再コンパイルすると、多くのエラーが発生します。そのほとんどは「modernobj-c」が原因です。もちろん、これらは10.8SDKを使用する場合のエラーではありません。注意して、エラーを見つけてメソッド呼び出しを見つけることができますが、それは非常に複雑で手動です。

人間が何百行もの誤ったエラーを選択することを伴わない、これらの種類のものを静的にチェックする方法を知っている人はいますか?

PS私はこれを読みました: デプロイメントターゲット<ベースSDKの場合に利用できないメソッドが使用されているかどうかを確認する方法は? それらを掘り下げるための別の手動フローをお勧めします。問題は、人間の方法が私に失敗したことです。私は1つを逃した。もう少し確実なものが欲しいのですが。

4

2 に答える 2

0

ここにアイデアがあります。可用性マクロの定義を解除して再定義し、Clangが反対するものが含まれるようにしますが、それ以外の場合はプログラムフローに影響を与えません。Clangを実行します。

于 2012-06-22T13:38:34.190 に答える
0

私はこの回答からのテクニックを使用しました、そしてそれはうまくいきました。完全自動で、何も見逃しません。

于 2012-06-22T14:01:49.787 に答える