甘いものが好きです

iOS App開発時に感じた疑問や課題、その他の雑感などを書いていきます。

Xcode 4.6から利用可能になったビルド設定「Empty Loop Bodies」を試してみた

以下の記事によると、昨日リリースされたXcode 4.6では新たなビルド設定「Empty Loop Bodies」が追加されたとのこと。

この設定を有効にすると、if文やwhile文などで条件を記述した括弧の直後にセミコロンを打っている場合には、

Semantic Issue
If statement has empty body

あるいは

Semantic Issue
While loop has empty body

という警告が出るようになる。

どのような書き方をすると警告が出るようになるのか、具体的に調べてみた。*1

デフォルトでは有効

Xcode 4.5.2で作成したプロジェクトをXcode 4.6で開いてプロジェクト設定を確認してみたところ、「Empty Loop Bodies」には「YES」が設定されていた。どうやらデフォルトで有効になっているようだ。

for/while文

括弧の直後にセミコロンを打ち、同じ行に他の文を続けると警告が出る。

int i = 0;
while (i < 10); i++; // この行に対して警告が出る

改行する場合には、次行をインデントすると警告が出るが、

int i = 0;
while (i < 10); // この行に対して警告が出る
    i++;

次行をインデントしないと(または次行が空行だと)警告は出ない。

// この書き方だと警告は出ない
int i = 0;
while (i < 10);
i++;

if文

if文はfor/while文よりもチェックが厳しい。括弧の直後にセミコロンを打つだけで必ず警告が出る。

int i = 0;
if (i < 10); // この行に対して警告が出る

*1:Xcode 4.6 (4H127)で確認。