Совместимость покрытия с gcc-6 на Ubuntu 18.04.1?

Мы только что обновили наш сервер сборки с Ubuntu 16.x до 18.04.1, и я больше не могу заставить работать Coverity.

Согласно Coverity Scan не удается собрать ‹stdlib.h › с определенным _GNU_SOURCE у меня есть контейнер Docker на нашем компьютере с Ubuntu 18.04.1, который устанавливает пакет gcc-6 (в этом контейнере нет другого установленного gcc — он только gcc-6).

Согласно TravisCI/Coverity: Предупреждение - файлы не были отправлены, я также запустил в моем контейнере следующее: /coverity/cov-analysis-linux64-7.6.0/bin/cov-configure --comptype gcc --compiler gcc-6 --template. Кажется, это сгенерировало файл /coverity/cov-analysis-linux64-7.6.0/config/coverity_config.xml

Когда я настраиваю/собираю наше программное обеспечение (libfabric, из https://github.com/ofiwg/libfabric ) в контейнере он строится просто отлично. Однако, если я попытаюсь собрать его через cov-build, я получаю ошибки компиляции. Например, вот команда cov-build для сборки всего одного файла из libfabric:

# Clear out the Coverity meta data dir, just to be sure
$ rm -rf cov-data
$ /coverity/cov-analysis-linux64-7.6.0/bin/cov-build \
     -dir cov-data make src/fi_tostr.lo

Вот фрагмент соответствующего вывода из файла cov-build/build-log.txt, показывающий, где произошел сбой Coverity:

[STATUS] Compiling src/fi_tostr.c
/coverity/cov-analysis-linux64-7.6.0/bin/cov-emit --dir=/home/jsquyres/git/libfabric/cov-data --ignore_path=/tmp/cov-0/a35264b27887fab7178c6bf7ab1117a9/cov-configure --ignore_path=/tmp/cov-0/a35264b27887fab7178c6bf7ab1117a9/cov-0/49f277832f55e48469661625f8083203 -w --no_stdarg_builtin --incompat_proto --add_type_modifier=__coverity___fpreg --add_type_modifier=__coverity___float80 --add_type_modifier=__coverity___float128 --no_predefined_cplusplus --gnu_version=60400 --no_predefines --restrict --gnu_carriage_return_line_terminator --no_multiline_string --no_trigraphs --c99 --allow__bool --pre_preinclude /home/jsquyres/git/libfabric/cov-data/emit/394646c6191c/config/5fe0c6b2b8489d2ab05d2434d738b5ac/gcc-config-0/coverity-macro-compat.h --pre_preinclude /home/jsquyres/git/libfabric/cov-data/emit/394646c6191c/config/5fe0c6b2b8489d2ab05d2434d738b5ac/gcc-config-0/coverity-compiler-compat.h --preinclude /coverity/cov-analysis-linux64-7.6.0/config/template-gcc-config-8/../user_nodefs.h --gcc -I . -I include -I prov/sockets/include -I prov/sockets --sys_include /usr/lib/gcc/x86_64-linux-gnu/6/include --sys_include /usr/local/include --sys_include /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed --sys_include /usr/include/x86_64-linux-gnu --sys_include /usr/include -DHAVE_CONFIG_H -DNDEBUG -DPROVDLDIR="/usr/local/lib/libfabric" -DRDMADIR="@rdmadir@" -DSYSCONFDIR="/usr/local/etc" -D_GNU_SOURCE -D__OPTIMIZE__ -D__USE_XOPEN2K8 --type_sizes=e16Pdlx8fi4s2 --type_alignments=e16Pdlx8fi4s2 --size_t_type=m --wchar_t_type=i --ptrdiff_t_type=l src/fi_tostr.c
"/usr/lib/gcc/x86_64-linux-gnu/6/include/stdatomic.h", line 40: error #65:
          expected a ";"
  typedef _Atomic _Bool atomic_bool;
                  ^

"/usr/lib/gcc/x86_64-linux-gnu/6/include/stdatomic.h", line 41: error #84:
          invalid combination of type specifiers
  typedef _Atomic char atomic_char;
                  ^

Кто-нибудь знает, как заставить Coverity понимать эти типы?


person Jeff Squyres    schedule 09.10.2018    source источник
comment
Похоже, что Coverity не поддерживает квалификатор типа _Atomic, поэтому он задыхается от <stdatomic.h>. Вы можете попробовать хак, такой как #ifdef __COVERITY__, #define _Atomic, #endif перед любым другим включением, или -D_Atomic="" флаг компиляции.   -  person Nominal Animal    schedule 09.10.2018
comment
Вы не говорите, какую версию Coverity вы используете. Документы для Coverity содержат таблицу поддерживаемых компиляторов. Если версия компилятора изменилась, вам может потребоваться запустить cov-configure.   -  person Paul Floyd    schedule 10.01.2019
comment
@PaulFloyd Это было несколько месяцев назад; Конкретную версию Coverity не помню. Это было то, что было актуально на scan.coverity.com в то время (октябрь 2018 г.). Если вы прочитаете мое полное описание проблемы, вы увидите, что я запустил cov-configure.   -  person Jeff Squyres    schedule 11.01.2019
comment
Ах да, и я вижу, что это версия 7.6 из пути cov-configure.   -  person Paul Floyd    schedule 11.01.2019
comment
@PaulFloyd Есть ли исправление / обходной путь, чтобы это работало?   -  person Jeff Squyres    schedule 11.01.2019
comment
Извините но нет. Вы пробовали использовать cov-wizard? У меня нет опыта работы с ним, но у него есть панель Compiler Configuration, но, вероятно, это просто оболочка графического интерфейса вокруг cov-configure.   -  person Paul Floyd    schedule 15.01.2019