C and C++


CONCURRENCY.C_ATOMIC.DAF : Direct Access to Field of C Atomic Object

要旨

An expression directly accesses a field of an atomic object of struct or union type.

プロパティ

クラス名 Direct Access to Field of C Atomic Object
日本語クラス名 Direct Access to Field of C Atomic Object
クラス分類 信頼性 (reliability)
ニーモニック CONCURRENCY.C_ATOMIC.DAF
カテゴリー
MisraC2023 MisraC2023:12.6 Structure and union members of atomic objects shall not be directly accessed
Misra2012 Misra2012:12.6 Structure and union members of atomic objects shall not be directly accessed
対応言語 C のみ利用可能です。 C++ は利用できません。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Direct Access to Field of C Atomic Object"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

#include <stdatomic.h>

typedef struct {
    int x;
} ss_t;

void atomic_daf(ss_t *nonatomic, _Atomic ss_t *atomicA, _Atomic ss_t *atomicB){
    atomicA->x = 0; /* 'Direct Access to Field of C Atomic Object' warning issued here */
    nonatomic->x = 0;                   /* ok: not an atomic object */
    atomic_store(atomicB, *nonatomic);  /* ok: not a direct field access */
}

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

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