Coverity 扫描构建工具无法编译任何包含<stdlib.h>
在 Ubuntu 18.04 上的 C 文件,当_GNU_SOURCE
定义为:
$ cat > main.c
#include <stdlib.h>
int main() {
}
$
$ gcc -D_GNU_SOURCE=1 -o main main.c
$
$ /opt/cov-analysis/bin/cov-build --dir cov-int gcc -D_GNU_SOURCE=1 -o main main.c
Coverity Build Capture (64-bit) version 2017.07 on Linux 4.15.0-20-generic x86_64
...
[WARNING] Emitted 0 C/C++ compilation units (0%) successfully
...
$
相同的构建在 Ubuntu 16.04 或_GNU_SOURCE
未定义的情况下完美运行:
$ /volatile/local/cov-analysis/bin/cov-build --dir cov-int gcc -o main main.c
Coverity Build Capture (64-bit) version 2017.07 on Linux 4.15.0-20-generic x86_64
...
Emitted 1 C/C++ compilation units (100%) successfully
...
$
如何让 Coverity Scan 构建_GNU_SOURCE
在 Ubuntu 18.04 上定义的 C 源代码?
对于那些感兴趣的文件cov-int/build-log.txt
,可以在这里找到:
https ://gist.github.com/DimitriPapadopoulos/0dcd9018eed26401cc6095087d9cc1d5