iOS : XCodeのコンパイラの警告を制御する

XCodeでコンパイラの警告をエラーとして扱う方法や、警告を一時的に無効にする方法について解説します。

警告設定の例

通常はコンパイラ警告(Warning)が発生しても、警告を無視してプログラムの実行が可能です。しかし、コンパイラ警告を無視すると思わぬバグにつながるため、できる限りコンパイラ警告が出ないように開発するべきです。

コンパイラ警告がエラーとなるように設定すると、警告の発生でプログラムが実行できなくなります。そのため、コンパイル警告を無視することがなくなり、警告に正しく対応しながら開発できます。

通常のコンパイラ警告の例
通常のコンパイラ警告の例
コンパイラ警告をエラーとして扱う場合の例
コンパイラ警告をエラーとして扱う場合の例

警告をエラーとして扱う:XCode3の場合

XCode3でコンパイラ警告をエラーとして扱うには、ビルド設定「警告をエラーと見なす」をONに設定します。

まず、「グループツリー > ターゲット > プロジェクト名 > 右クリック > 情報を見る」と操作し、プロジェクトの情報画面を表示します。

XCode3のターゲットの情報を見るメニュー

プロジェクトの情報画面の上部タブで「ビルド」を選択し、一覧で「警告をエラーと見なす」設定を見つけて、チェックボックスをONにします。

XCode3の「警告をエラーと見なす」設定

ビルド設定は項目が多いので、キーワード検索で絞り込むと見つけやすくなります。検索バーで「error」と入力すると、「警告をエラーと見なす」設定が簡単に見つかります。

XCode3のビルド設定のキーワード検索

警告をエラーとして扱う:XCode4の場合

XCode4でコンパイラ警告をエラーとして扱うには、ビルド設定「Treat Warnings as Errors」をYESに設定します。

まず、「プロジェクト・ナビゲーター > プロジェクト名 > TARGETS:プロジェクト名 > Build Settings」と操作し、ビルド設定を表示します。次に、ビルド設定で「Treat Warnings as Errors」設定を見つけて、YESに設定します。

XCode4のTreatWarningsasErrorsの設定

ビルド設定は項目が多いので、キーワード検索で絞り込むと見つけやすくなります。検索バーで「error」と入力すると、「Treat Warnings as Errors」設定が簡単に見つかります。

XCode4のビルド設定のキーワード検索

警告を一時的に無効にする

開発を行なっていると、コンパイラ警告の内容を理解した上で、警告をピンポイントで無視したい場合があります。そのような場合は、プラグマ(pragma)を利用して警告を一時的に無効にできます。

ソースコードに「#pragma GCC diagnostic ignored "(警告タイプ)"」と記述することで、特定の警告を無効にできます。「#pragma GCC diagnostic warning "(警告タイプ)"」と記述すると、警告が再び有効になります。

「(警告タイプ)」には操作したい警告に対応する文字列を指定します。例えば以下の様な文字列があります。

なお、関数の中に上記プラグマは記述できません。関数の外に記述して利用します。

サンプルコード

#pragma GCC diagnostic ignored "-Wunused-variable"
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- ( void )loadView
{
    [ super loadView ];
    
    UIView * testView = [ [ [ UIView alloc ] initWithFrame:self.view.bounds ] autorelease ];
    testView.backgroundColor = [ UIColor orangeColor ];
    
    [ self.view addSubview:testView ];

    UIButton * testButton = [ UIButton buttonWithType:UIButtonTypeRoundedRect ];
    testButton.frame = CGRectMake( 10, 10, 100, 40 );
    [ testButton setTitle:@"TEST" forState:UIControlStateNormal ];
    
    // -Wdeprecated-declarationsで推奨されない関数の警告が抑止される
    testButton.titleShadowOffset = CGSizeMake( 1, 1 );
    
    [ self.view addSubview:testButton ];
    
    // -Wunused-variableで未使用変数の警告が抑止される
    int sampleValue = 1;
    
    return;
}

// 警告設定を元に戻す
#pragma GCC diagnostic warning "-Wunused-variable"
#pragma GCC diagnostic warning "-Wdeprecated-declarations"

なお、-Wunused-variableなどの文字列は、XCodeのビルド設定画面の説明文で確認することができます。

XCode3の場合:情報ダイアログの説明文で確認
XCode3の情報ダイアログの説明文
XCode4の場合:クイックヘルプの説明文で確認
XCode4のクイックヘルプの説明文

関連する記事