2017-03-13 12 views
0

プロジェクト全体でObjective-Cブロック内の「自己」または下線付きのパラメータの使用をチェックできるスクリプト(またはRegex)がありますか?Objective-Cのブロック内で「self」コールのインスタンスをスキャンしますか?

コードを移動するときにこれらを偶然スキミングすることが可能です。誰かがそれらを避けるためにもっと防弾方法を持っているのだろうかと思っていました。


EDIT:たとえば、機能Aは旗を投げるが、Bは機能していない...だけ^{}内では、この場合には問題ないはずです。

- (void)a 
{ 
    ^
    { 
     NSLog(@"This should throw a flag: %@ ... %@ ... %@", [self someProperty], _someProperty, self.someProperty); 

     ^(NSInteger number) 
     { 
      NSLog(@"This should also throw a flag: %@ ... %@ ... %@", [self someProperty], _someProperty, self.someProperty); 

     }(0); 

    } 

} 

- (void)b 
{ 
    NSLog(@"This is OK: %@ ... %@ ... %@", [self someProperty], _someProperty, self.someProperty); 

    __weak NSObject *weakSelf=self; 

    ^
    { 
     NSLog(@"This is also OK.", [weakSelf someProperty], weakSelf, weakSelf.someProperty); 

     ^(NSInteger number) 
     { 
      NSLog(@"This, too, is OK.", [weakSelf someProperty], weakSelf, weakSelf.someProperty); 

     }(0); 

    } 

} 
+0

なぜブロック内の 'self'へのアクセスを探したいのですか? –

答えて

0

私は、これはあなたが何を意味するかであるかどうかわからないんだけど、あなたはコンパイラが「ビルド・フェーズでこれを置くことによって、ビルド時に「自己」のすべての使用に対する警告の三角形を置くことができます|ターゲットの「スクリプトを実行する」:

TAGS="self" 
find "${SRCROOT}/" -type f \(-name "*.h" -or -name "*.m" -or -name  "*.swift" \) -print0 \ 
| xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$" \ 
| perl -p -e "s/($TAGS)/ warning: \$1/" 

変数を調整してください。

+0

このフィルタはブロック内にありますか? –

+0

また、 '_propertyName'などのプロパティの' self'に相当するものを下線で示します。 –

+0

フィルタ用語を追加して、より多くのものを探すことができます。これは、 '^ {}'や '^(NSInteger someVar){} TAGS変数内の1つの検索語よりも'TAGS =" self | _propertyName "' – applehelpwriter

関連する問題