C and C++


LANG.TYPE.CBCONST : const修飾が可能なポインタ型

要旨

const修飾型へのポインタPが宣言されていますが、このPはオブジェクトを変更する為に使用されていません。

このワーニングクラスの警告は、もしポインタPが非const修飾型を指すように宣言された他のポインタQに割り当てられた場合には発行されません。

このワーニングクラスの警告は、あらゆる非const修飾型の要素をもつ配列型の仮引数Aに対して、もしAのどの要素も変更されない場合(尚且つ、上記のようにAがポインタQに割り当てられない場合)に発行されます。 これは CodeSonar がCコンパイラーと同様に、配列型の仮引数をポインタとして扱うためです。

プロパティ

クラス名 Pointed-to Type Could Be const
日本語クラス名 const修飾が可能なポインタ型
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.CBCONST
カテゴリー
MisraC2023 MisraC2023:8.13 A pointer should point to a const-qualified type whenever possible
Misra2012 Misra2012:8.13 A pointer should point to a const-qualified type whenever possible
Misra2004 Misra2004:16.7 A pointer parameter in a function prototype should be declared as pointer to const if the pointer is not used to modify the addressed object
AUTOSARC++14 AUTOSARC++14:M7-1-2 A pointer or reference parameter in a function shall be declared as pointer to const or reference to const if the corresponding object is not modified.
MisraC++2008 MisraC++2008:7-1-2 A pointer or reference parameter in a function shall be declared as pointer to const or reference to const if the corresponding object is not modified.
MisraC++2023 MisraC++2023:10.1.1 The target type of a pointer or lvalue reference parameter should be const-qualified appropriately
CERT-C CERT-C:DCL13-C Declare function parameters that are pointers to values not changed by the function as const
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Pointed-to Type Could Be const"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int cbconst_ptr(const char *ptr_const,          /* ok: pointed-to type is const-qualified */
                 char *ptr_modified,            /* ok: used to modify an object */
                 char *ptr_assigned,            /* ok: assigned to a pointer to non-const-qualified type */
                 char *ptr_cbc,  /* 'Pointed-to Type Could Be const' warning issued here */
                 int arr_cbc[5]) /* 'Pointed-to Type Could Be const' warning issued here */
{
  char *local_ptr_cbc;           /* 'Pointed-to Type Could Be const' warning issued here */
  *ptr_modified='a';
  local_ptr_cbc=ptr_assigned;
  return (int)(*local_ptr_cbc + *ptr_const + *ptr_modified + *ptr_cbc) + arr_cbc[1];
}

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

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