メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

AUTOSAR C++14 Rule M6-4-7

The condition of a switch statement shall not have bool type.

説明

ルール定義

The condition of a switch statement shall not have bool type.

根拠

switch ステートメントで bool 条件を使用すると、混乱を招いたり、コンパイラでキャッチされないエラーの原因となったりする可能性があります。bool 評価を処理するには、if ステートメントのほうが適しています。bool 条件を使用する switch ステートメントの代わりに、if...else ステートメントを使用してください。

Polyspace 実装

Polyspace® は、switch-case 条件の結果が bool になる場合は常に、この欠陥を報告します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

#include <cstdint>

int x = 10;

int example(int x)	
{
    switch (x > 0) { //noncompliant
    case true:
        x += 10;
        break;

    case false:
        x -= 10;
        break;

    default:
        x = 0;
        break;
    }

    return x;
}

switch ステートメントの条件 x > 0 の結果が bool になるため、Polyspace はこれを非準拠としてマークします。

上記の switch-case の代わりに、次の if ステートメントを使用します。

#include <cstdint>

int x = 10;

int example(int x)
{
    if (x > 0) {
        x += 10;
    } else if (x <= 0) {
        x -= 10;
    } else {
        x = 0;
    }

    return x;
}

チェック情報

グループ: ステートメント
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入