C and C++


LANG.TYPE.AWID : 代入により暗黙拡張される複合式

要旨

複合式の値が、その実質的な型より大きなオブジェクトに代入されています。

このワーニングクラスは、クリティカルシステム向けのC言語ガイドラインMISRA C:2012実質的な型および 複合式に記載されている概念に基づいています。

プロパティ

クラス名 Expression Value Widened by Assignment
日本語クラス名 代入により暗黙拡張される複合式
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.AWID
カテゴリー
MisraC2023 MisraC2023:10.6 The value of a composite expression shall not be assigned to an object with wider essential type
Misra2012 Misra2012:10.6 The value of a composite expression shall not be assigned to an object with wider essential type
Misra2004 Misra2004:10.1 The value of an expression of integer type shall not be implicitly converted to a different underlying type if: (a) it is not a conversion to a wider integer type of the same signedness, or (b) the expression is complex, or (c) the expression is not constant and is a function argument, or (d) the expression is not constant and is a return expression
  Misra2004:10.2 The value of an expression of floating type shall not be implicitly converted to a different type if: (a) it is not a conversion to a wider floating type, or (b) the expression is complex, or (c) the expression is a function argument, or (d) the expression is a return expression
AUTOSARC++14 AUTOSARC++14:M5-0-3 A cvalue expression shall not be implicitly converted to a different underlying type.
  AUTOSARC++14:M5-0-5 There shall be no implicit floating-integral conversions.
MisraC++2008 MisraC++2008:5-0-3 A cvalue expression shall not be implicitly converted to a different underlying type.
  MisraC++2008:5-0-5 There shall be no implicit floating-integral conversions.
CWE CWE:704 Incorrect Type Conversion or Cast
CERT-C CERT-C:INT18-C Evaluate integer expressions in a larger size before comparing or assigning to that size
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Expression Value Widened by Assignment"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

void f_longarg(long inl);
void use_longs(long a, long b, long c);

void TYPE_AWID(short s1, short s2){
  long long1;
  long long2;
  long long3;

  long1 = s1;                                /* not a composite expression */

  long2 = s1 + s2;      /* 'Expression Value Widened by Assignment' warning issued here */

  long3 = (long) s1 + s2;                    /* '(long) s1' causes entire expression to have 'long' type */
  use_longs(long1, long2, long3);

  f_longarg(2*s1);     /* 'Expression Value Widened by Assignment' warning issued here */
}

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

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