構造内のメンバーのオフセットを計算しようとしているときに、未定義の識別子が検出されました。offsetof()が使用されたときのCoverityスキャンエラーRW.UNDEFINED_IDENTIFIER
typedef struct A
{
uint8_t mem[10];
} A;
size_t offset = offsetof(A, mem); // This line raises the error.
正確なカバー率の説明は、「識別子mem is undefined」です。
memをmem [0]、mem []で置き換えようとしましたが、構造体Aからtypedefを削除しましたが、何も解決しないようです。誰かがカバレッジを揺るがす可能性のあるものへの指針を持っているなら、それは素晴らしいことでしょう。
[更新#1]: - のgcc/gの++ 5.4.0、7.5.1コベリティ
[更新#2、私はUbuntuのに16.04(4.4.0-38-ジェネリックカーネル)を使用しています]:このような構造を持つスタンドアロンtest.cのとコマンドラインオプションを、次のことコベリティ幸せを維持します:
cov-build --dir . cc -c test.c -o test -Werror -march=corei7 -g -fstrict-aliasing -fstack-protector -fstrict-overflow -Wall -Wextra -Wshadow -Wmissing-prototypes -Wstrict-prototypes -O3 -fomit-frame-pointer -fPIE.
興味深いことに、私は全体のプロジェクトをコンパイルするとき、それは同じラインのためのエラーの束につながる:、UNDEFINED_IDENTIFIER ROUTINE_NOT_EMITTED、TYPE_IDENTIFIER_NOT_ALLOWED。
オペレーティングシステム、コンパイラ、およびバージョンを提供できますか? –
私はubuntu 16.04(kernel - 4.4.0-38-generic)、gcc/g ++ 5.4.0、カバー率7.5.1を使用しています。 – 0sn1s