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.TYPE.AWID : 代入により暗黙拡張される複合式

要旨

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

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

プロパティ

クラス名 Expression Value Widened by Assignment
日本語クラス名 代入により暗黙拡張される複合式
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.AWID
カテゴリー
MisraC2025 MisraC2025:10.6 The value of a composite expression shall not be assigned to an object with wider essential type
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 */
}

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

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

 

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