구조의 구성원 오프셋을 계산할 때 Coverity에서 정의되지 않은 식별자를 감지합니다.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, 나는 우분투를 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.
운영체제, 컴파일러 및 버전을 제공 할 수 있습니까? –
우분투 16.04 (kernel - 4.4.0-38-generic), gcc/g ++ 5.4.0, 커버 리티 7.5.1 – 0sn1s