[Qt-creator] Clang-Tidy and Clazy analyzer using '-D__cplusplus=199711L'

Ivan Donchevskii ivan.donchevskii at qt.io
Thu Aug 9 14:41:57 CEST 2018


Hi!


We use defines we get from the compiler which is set in your current Kit. It might be possible that we have some bug in the process of getting them.

Please create a bugreport (bugreports.qt.io) with a small code example so we can reproduce the issue and fix it.


Kind regards,

Ivan

________________________________
From: Qt-creator <qt-creator-bounces+ivan.donchevskii=qt.io at qt-project.org> on behalf of Tyson Wiser <twiser.public at gmail.com>
Sent: Thursday, August 9, 2018 2:35:47 PM
To: qt-creator at qt-project.org
Subject: [Qt-creator] Clang-Tidy and Clazy analyzer using '-D__cplusplus=199711L'

First of all, thank you for creating and maintaining this great IDE. It has been a great tool.

More details follow, but in a nutshell, I'm having trouble using the 'Clang-Tidy and Clazy...' analyzers in Qt Creator 4.7 on CentOS 7. It appears that it is incorrectly defining __cplusplus, which causes multiple errors. Is there a way to find out why that is and how to change it? It is also trying to use the C++17 standard. Is there a way to change that to C++11?

I run Qt Creator on a CentOS 7 Linux box. My projects are makefile-based (no CMake, QMake, or QBS), but I have the appropriate paths in my <project>.includes file so that the code completion, etc. all work as expected. I recently upgraded from 4.6.1 to 4.7. In 4.6.1 I did not use the clang-tidy checks as I found them to be too slow. I'm trying them again in 4.7 and they seem to be faster. However, they do not seem to check every file. In looking at the command line used to launch the tools (from the Issues window), I notice the following.

1. The '-std=c++17' option is included.
2. Later on, there is a '-D__cplusplus=199711L' included as well.

I believe that the combination of the two points above (especially #2) are causing the tools to fail early.

So here are my questions. First, how do I find out why __cplusplus is being defined to an old standard and how do I change it? Second, is it possible to change it so that the tools use '-std=c++11" instead of '-std=c++17'?

In case it is helpful, the command line the IDE used is included below (I've replaced some irrelevant sections with <description>). Thanks in advance for any help you may be able to provide.

-Tyson

:-1: warning: Command line: /home/twiser/programs/qtcreator-4.7.0/libexec/qtcreator/clang/bin/clang-6.0 -fsyntax-only -serialize-diagnostics /tmp/QtCreator-UPSeGv/clangtools-dTWDOt/report-NavConnectionSerial.cpp-BFnMCN -Wno-unknown-pragmas -Wno-unknown-warning-option -Wno-documentation-unknown-command -Xclang -add-plugin -Xclang clang-tidy -Xclang -plugin-arg-clang-tidy -Xclang '-checks=-*,bugprone-*,cppcoreguidelines-c-copy-assignment-signature,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-no-malloc,cppcoreguidelines-pro-bounds-constant-array-index,cppcoreguidelines-pro-bounds-pointer-arithmetic,cppcoreguidelines-pro-type-const-cast,cppcoreguidelines-pro-type-cstyle-cast,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-pro-type-static-cast-downcast,cppcoreguidelines-pro-type-union-access,cppcoreguidelines-slicing,cppcoreguidelines-special-member-functions,misc-*,modernize-*,performance-*,readability-avoid-const-params-in-decls,readability-container-size-empty,readability-delete-null-pointer,readability-deleted-default,readability-else-after-return,readability-function-size,readability-identifier-naming,readability-inconsistent-declaration-parameter-name,readability-misleading-indentation,readability-misplaced-array-index,readability-non-const-parameter,readability-redundant-*,readability-simplify-boolean-expr,readability-static-*,readability-uniqueptr-delete-release' -Xclang -add-plugin -Xclang clang-lazy -Xclang -plugin-arg-clang-lazy -Xclang enable-all-fixits -Xclang -plugin-arg-clang-lazy -Xclang no-autowrite-fixits -Xclang -plugin-arg-clang-lazy -Xclang level0 -m64 -target x86_64-redhat-linux -x c++ -std=c++17 -fcxx-exceptions -fexceptions '-D__DBL_MIN_EXP__=(-1021)' -D__UINT_LEAST16_MAX__=65535 -D__ATOMIC_ACQUIRE=2 -D__FLT_MIN__=1.17549435082228750797e-38F '-D__UINT_LEAST8_TYPE__=unsigned char' '-D__INTMAX_C(c)=c ##L' -D__CHAR_BIT__=8 -D__UINT8_MAX__=255 -D__WINT_MAX__=4294967295U -D__ORDER_LITTLE_ENDIAN__=1234 -D__SIZE_MAX__=18446744073709551615UL -D__WCHAR_MAX__=2147483647 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 '-D__DBL_DENORM_MIN__=double(4.94065645841246544177e-324L)' -D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 -D__GCC_ATOMIC_CHAR_LOCK_FREE=2 -D__FLT_EVAL_METHOD__=0 -D__unix__ -D__GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 -D__x86_64 -D__UINT_FAST64_MAX__=18446744073709551615UL -D__SIG_ATOMIC_TYPE__=int '-D__DBL_MIN_10_EXP__=(-307)' -D__FINITE_MATH_ONLY__=0 -D__GNUC_PATCHLEVEL__=5 -D__UINT_FAST8_MAX__=255 -D__DEC64_MAX_EXP__=385 '-D__INT8_C(c)=c' -D__UINT_LEAST64_MAX__=18446744073709551615UL -D__SHRT_MAX__=32767 -D__LDBL_MAX__=1.18973149535723176502e+4932L -D__UINT_LEAST8_MAX__=255 -D__GCC_ATOMIC_BOOL_LOCK_FREE=2 '-D__UINTMAX_TYPE__=long unsigned int' -D__linux -D__DEC32_EPSILON__=1E-6DF -D__unix -D__UINT32_MAX__=4294967295U -D__LDBL_MAX_EXP__=16384 -D__WINT_MIN__=0U -D__linux__ -D__SCHAR_MAX__=127 '-D__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)' '-D__INT64_C(c)=c ##L' -D__DBL_DIG__=15 -D__GCC_ATOMIC_POINTER_LOCK_FREE=2 -D__SIZEOF_INT__=4 -D__SIZEOF_POINTER__=8 -D__GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 -D__USER_LABEL_PREFIX__= -D__STDC_HOSTED__ -D__LDBL_HAS_INFINITY__ -D__FLT_EPSILON__=1.19209289550781250000e-7F -D__GXX_WEAK__ -D__LDBL_MIN__=3.36210314311209350626e-4932L -D__DEC32_MAX__=9.999999E96DF -D__INT32_MAX__=2147483647 -D__SIZEOF_LONG__=8 -D__STDC_IEC_559__ -D__STDC_ISO_10646__=201103L '-D__UINT16_C(c)=c' -D__DECIMAL_DIG__=21 -D__gnu_linux__ -D__LDBL_HAS_QUIET_NAN__ -D__GNUC__=4 -D__GXX_RTTI -D__MMX__ -D__FLT_HAS_DENORM__ -D__SIZEOF_LONG_DOUBLE__=16 -D__BIGGEST_ALIGNMENT__=16 '-D__DBL_MAX__=double(1.79769313486231570815e+308L)' -D__INT_FAST32_MAX__=9223372036854775807L -D__DBL_HAS_INFINITY__ -D__INT64_MAX__=9223372036854775807L '-D__DEC32_MIN_EXP__=(-94)' '-D__INT_FAST16_TYPE__=long int' -D__LDBL_HAS_DENORM__ -D__cplusplus=199711L -D__DEC128_MAX__=9.999999999999999999999999999999999E6144DL -D__INT_LEAST32_MAX__=2147483647 -D__DEC32_MIN__=1E-95DF -D__DEPRECATED -D__DBL_MAX_EXP__=1024 -D__DEC128_EPSILON__=1E-33DL -D__SSE2_MATH__ -D__ATOMIC_HLE_RELEASE=131072 -D__PTRDIFF_MAX__=9223372036854775807L -D__amd64 -D__STDC_NO_THREADS__ -D__ATOMIC_HLE_ACQUIRE=65536 -D__GNUG__=4 -D__LONG_LONG_MAX__=9223372036854775807LL -D__SIZEOF_SIZE_T__=8 -D__SIZEOF_WINT_T__=4 -D__GCC_HAVE_DWARF2_CFI_ASM -D__GXX_ABI_VERSION=1002 '-D__FLT_MIN_EXP__=(-125)' '-D__INT_FAST64_TYPE__=long int' '-D__DBL_MIN__=double(2.22507385850720138309e-308L)' -D__LP64__ -D__DECIMAL_BID_FORMAT__ -D__DEC128_MIN__=1E-6143DL -D__REGISTER_PREFIX__= -D__UINT16_MAX__=65535 -D__DBL_HAS_DENORM__ '-D__UINT8_TYPE__=unsigned char' -D__NO_INLINE__ -D__FLT_MANT_DIG__=24 '-D__VERSION__="4.8.5 20150623 (Red Hat 4.8.5-28)"' '-D__UINT64_C(c)=c ##UL' -D_STDC_PREDEF_H -D__GCC_ATOMIC_INT_LOCK_FREE=2 -D__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__ -D__STDC_IEC_559_COMPLEX__ '-D__INT32_C(c)=c' -D__DEC64_EPSILON__=1E-15DD -D__ORDER_PDP_ENDIAN__=3412 '-D__DEC128_MIN_EXP__=(-6142)' '-D__INT_FAST32_TYPE__=long int' '-D__UINT_LEAST16_TYPE__=short unsigned int' -Dunix -D__INT16_MAX__=32767 '-D__SIZE_TYPE__=long unsigned int' -D__UINT64_MAX__=18446744073709551615UL '-D__INT8_TYPE__=signed char' -D__ELF__ -D__FLT_RADIX__=2 '-D__INT_LEAST16_TYPE__=short int' -D__LDBL_EPSILON__=1.08420217248550443401e-19L '-D__UINTMAX_C(c)=c ##UL' -D__GNUC_RH_RELEASE__=28 -D__k8 -D__SIG_ATOMIC_MAX__=2147483647 -D__GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 -D__SIZEOF_PTRDIFF_T__=8 -D__x86_64__ -D__DEC32_SUBNORMAL_MIN__=0.000001E-95DF -D__INT_FAST16_MAX__=9223372036854775807L -D__UINT_FAST32_MAX__=18446744073709551615UL '-D__UINT_LEAST64_TYPE__=long unsigned int' -D__FLT_HAS_QUIET_NAN__ -D__FLT_MAX_10_EXP__=38 -D__LONG_MAX__=9223372036854775807L -D__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL -D__FLT_HAS_INFINITY__ '-D__UINT_FAST16_TYPE__=long unsigned int' -D__DEC64_MAX__=9.999999999999999E384DD '-D__CHAR16_TYPE__=short unsigned int' -D__PRAGMA_REDEFINE_EXTNAME -D__INT_LEAST16_MAX__=32767 -D__DEC64_MANT_DIG__=16 -D__UINT_LEAST32_MAX__=4294967295U -D__GCC_ATOMIC_LONG_LOCK_FREE=2 '-D__INT_LEAST64_TYPE__=long int' '-D__INT16_TYPE__=short int' '-D__INT_LEAST8_TYPE__=signed char' -D__DEC32_MAX_EXP__=97 -D__INT_FAST8_MAX__=127 -D__INTPTR_MAX__=9223372036854775807L -Dlinux -D__SSE2__ -D__EXCEPTIONS -D__LDBL_MANT_DIG__=64 -D__DBL_HAS_QUIET_NAN__ '-D__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)' -D__code_model_small__ -D__k8__ '-D__INTPTR_TYPE__=long int' '-D__UINT16_TYPE__=short unsigned int' -D__WCHAR_TYPE__=int -D__SIZEOF_FLOAT__=4 -D__UINTPTR_MAX__=18446744073709551615UL '-D__DEC64_MIN_EXP__=(-382)' -D__INT_FAST64_MAX__=9223372036854775807L -D__GCC_ATOMIC_TEST_AND_SET_TRUEVAL -D__FLT_DIG__=6 '-D__UINT_FAST64_TYPE__=long unsigned int' -D__INT_MAX__=2147483647 -D__amd64__ '-D__INT64_TYPE__=long int' -D__FLT_MAX_EXP__=128 -D__ORDER_BIG_ENDIAN__=4321 -D__DBL_MANT_DIG__=53 -D__INT_LEAST64_MAX__=9223372036854775807L -D__DEC64_MIN__=1E-383DD '-D__WINT_TYPE__=unsigned int' '-D__UINT_LEAST32_TYPE__=unsigned int' -D__SIZEOF_SHORT__=2 -D__SSE__ '-D__LDBL_MIN_EXP__=(-16381)' -D__INT_LEAST8_MAX__=127 -D__SIZEOF_INT128__=16 -D__LDBL_MAX_10_EXP__=4932 -D__ATOMIC_RELAXED=0 '-D__DBL_EPSILON__=double(2.22044604925031308085e-16L)' -D_LP64 '-D__UINT8_C(c)=c' -D__INT_LEAST32_TYPE__=int -D__SIZEOF_WCHAR_T__=4 '-D__UINT64_TYPE__=long unsigned int' '-D__INT_FAST8_TYPE__=signed char' -D__DBL_DECIMAL_DIG__=17 -D__FXSR__ -D__DEC_EVAL_METHOD__=2 '-D__UINT32_C(c)=c ##U' -D__INTMAX_MAX__=9223372036854775807L -D__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__ -D__FLT_DENORM_MIN__=1.40129846432481707092e-45F -D__INT8_MAX__=127 '-D__UINT_FAST32_TYPE__=long unsigned int' '-D__CHAR32_TYPE__=unsigned int' -D__FLT_MAX__=3.40282346638528859812e+38F -D__INT32_TYPE__=int -D__SIZEOF_DOUBLE__=8 '-D__INTMAX_TYPE__=long int' -D__DEC128_MAX_EXP__=6145 -D__ATOMIC_CONSUME -D__GNUC_MINOR__=8 -D__UINTMAX_MAX__=18446744073709551615UL -D__DEC32_MANT_DIG__=7 -D__DBL_MAX_10_EXP__=308 -D__LDBL_DENORM_MIN__=3.64519953188247460253e-4951L '-D__INT16_C(c)=c' -D__STDC__ '-D__PTRDIFF_TYPE__=long int' -D__ATOMIC_SEQ_CST=5 '-D__UINT32_TYPE__=unsigned int' '-D__UINTPTR_TYPE__=long unsigned int' -D__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD -D__DEC128_MANT_DIG__=34 '-D__LDBL_MIN_10_EXP__=(-4931)' -D__SSE_MATH__ -D__SIZEOF_LONG_LONG__=8 -D__GCC_ATOMIC_LLONG_LOCK_FREE=2 -D__LDBL_DIG__=18 -D__FLT_DECIMAL_DIG__=9 -D__UINT_FAST16_MAX__=18446744073709551615UL -D__GNUC_GNU_INLINE__ '-D__FLT_MIN_10_EXP__=(-37)' -D__GCC_ATOMIC_SHORT_LOCK_FREE=2 '-D__UINT_FAST8_TYPE__=unsigned char' -D_GNU_SOURCE -D__ATOMIC_ACQ_REL=4 -D__ATOMIC_RELEASE=3 -nostdinc -nostdlibinc -undef -isystem /home/twiser/programs/qtcreator-4.7.0/libexec/qtcreator/clang/lib/clang/6.0.1/include <list-of-project-include-paths> -I /usr/include/c++/4.8.2 -I /usr/include/c++/4.8.2/x86_64-redhat-linux -I /usr/include/c++/4.8.2/backward -I /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include -I /usr/local/include -I /usr/include -include <project>.config <source-file>.cpp

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qt-creator/attachments/20180809/de524065/attachment.html>


More information about the Qt-creator mailing list