JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.

If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.

If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.

CodeSonar® 9.2p0 CONFIDENTIAL CodeSecure Inc
C and C++


LANG.STRUCT.SW.MB : break文の欠如

要旨

switch 節が break 文で終了していません。

このクラスは 正しく記述されていないswitch文 の部分集合となります。

switch 文が下記の複数のワーニングを含む場合、 その部分集合のみが表示される可能性があります。

プロパティ

クラス名 Missing break
日本語クラス名 break文の欠如
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.SW.MB
カテゴリー
MisraC2025 MisraC2025:16.3 Every switch-clause shall be appropriately terminated
MisraC2023 MisraC2023:16.3 An unconditional break statement shall terminate every switch-clause
Misra2012 Misra2012:16.3 An unconditional break statement shall terminate every switch-clause
Misra2004 Misra2004:15.2 An unconditional break statement shall terminate every non-empty switch clause
AUTOSARC++14 AUTOSARC++14:M6-4-5 An unconditional throw or break statement shall terminate every non-empty switch-clause.
MisraC++2008 MisraC++2008:6-4-5 An unconditional throw or break statement shall terminate every non-empty switch-clause.
MisraC++2023 MisraC++2023:9.4.2 The structure of a switch statement shall be appropriate
CWE CWE:484 Omitted Break Statement in Switch
CERT-C CERT-C:MSC17-C Finish every set of statements associated with a case label with a break statement
JSF++ JSF++:193 Every non-empty case clause in a switch statement shall be terminated with a break statement.
OWASP-2025 OWASP-2025:A10 Mishandling of Exceptional Conditions
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Missing break"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int lang_struct_sw_mb(int i){
    int a = i;
    switch (a){                           /* all clauses end with break statement */
        case 1: {/*...*/ break;}
        case 2: {/*...*/ a++; break;}
        default: {/*...*/ break;}
    }  

    switch (a){
        case 1:
          a++;                            /* break statement missing at end of this clause */
        case 3:  {      /* 'Missing break' warning issued here:
                         * the previous clause does not end with a break statement, so
                         * execution will fall through into this one.
                         */
          a++;
          break;
        }
        default:
          a--;          /* 'Missing break' warning issued here:
                         * there is no break statement at the end of this clause, which is
                         * the final clause in the switch statement.
                         */
    }

    return a;
}

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。

 

To report problems with this documentation, please visit https://support.codesecure.com/.