C and C++


LANG.CAST.PC.CRVQ : volatile修飾を除去するキャスト

要旨

ポインタのキャストにより volatile 修飾が除去されています。

プロパティ

クラス名 Cast Removes volatile Qualifier
日本語クラス名 volatile修飾を除去するキャスト
クラス分類 信頼性 (reliability)
ニーモニック LANG.CAST.PC.CRVQ
カテゴリー
MisraC2023 MisraC2023:11.8 A conversion shall not remove any const, volatile or _Atomic qualification from the type pointed to by a pointer
Misra2012 Misra2012:11.8 A conversion shall not remove any const, volatile or _Atomic qualification from the type pointed to by a pointer
Misra2004 Misra2004:11.5 A cast shall not be performed that removes any const or volatile qualification from the type addressed by a pointer
AUTOSARC++14 AUTOSARC++14:A5-2-3 A cast shall not remove any const or volatile qualification from the type of a pointer or reference.
MisraC++2008 MisraC++2008:5-2-5 A cast shall not remove any const or volatile qualification from the type of a pointer or reference.
MisraC++2023 MisraC++2023:8.2.3 A cast shall not remove any const or volatile qualification from the type accessed via a pointer or by reference
CWE CWE:704 Incorrect Type Conversion or Cast
TS17961 TS17961:5.1-ptrcomp 5.1. Accessing an object through a pointer to an incompatible type
JSF++ JSF++:182 Type casting from any type to or from pointers shall not be used.
  JSF++:183 Every possible measure should be taken to avoid type casting.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Cast Removes volatile Qualifier"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

volatile int y = 5; 

int cast_y(void){
    int *py = (int *)&y;  /* 'Cast Removes volatile Qualifier' warning issued here */
    int *cpy = &y;                 /* not a cast */
    return (int)y;                 /* not a pointer cast */
}

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

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