diff --git a/addons/test/misra/misra-test.c b/addons/test/misra/misra-test.c index 7a4f777df..78f283136 100644 --- a/addons/test/misra/misra-test.c +++ b/addons/test/misra/misra-test.c @@ -1610,7 +1610,7 @@ static void misra_16_7(void) { } static void misra_17_1(void) { - va_list(); // 17.1 + va_list(); // 17.1 17.7 va_arg(); // 17.1 va_start(); // 17.1 va_end(); // 17.1 diff --git a/cli/filelister.cpp b/cli/filelister.cpp index 05ddc9386..4499c479b 100644 --- a/cli/filelister.cpp +++ b/cli/filelister.cpp @@ -222,8 +222,8 @@ static std::string addFiles2(std::map &files, std::string new_path; new_path.reserve(path.length() + 100);// prealloc some memory to avoid constant new/deletes in loop - while ((readdir_r(dir, &dir_result_buffer.entry, &dir_result) == 0) && (dir_result != nullptr)) { + while ((SUPPRESS_DEPRECATED_WARNING(readdir_r(dir, &dir_result_buffer.entry, &dir_result)) == 0) && (dir_result != nullptr)) { if ((std::strcmp(dir_result->d_name, ".") == 0) || (std::strcmp(dir_result->d_name, "..") == 0)) continue; diff --git a/cmake/compileroptions.cmake b/cmake/compileroptions.cmake index cd8cf6b85..95ba5db5e 100644 --- a/cmake/compileroptions.cmake +++ b/cmake/compileroptions.cmake @@ -82,6 +82,9 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options_safe(-Wno-suggest-override) # TODO: enable when warnings are fixed in in tinyxml2 add_compile_options_safe(-Wno-suggest-destructor-override) # TODO: enable when warnings are fixed in in tinyxml2 add_compile_options_safe(-Wno-extra-semi-stmt) # TODO: enable when warnings are fixed in in tinyxml2 + add_compile_options_safe(-Wno-implicitly-unsigned-literal) + add_compile_options_safe(-Wno-tautological-type-limit-compare) + add_compile_options_safe(-Wno-unused-member-function) add_compile_options(-Wno-disabled-macro-expansion) # warnings we are not interested in diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 01752bd7a..079b4871f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -33,12 +33,12 @@ else() endif() add_library(lib_objs OBJECT ${srcs_lib} ${hdrs}) -target_include_directories(lib_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/) +target_include_directories(lib_objs SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/externals/) if(USE_BUNDLED_TINYXML2) - target_include_directories(lib_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) + target_include_directories(lib_objs SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/externals/tinyxml2/) endif() -target_include_directories(lib_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) -target_include_directories(lib_objs PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) +target_include_directories(lib_objs SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/externals/picojson/) +target_include_directories(lib_objs SYSTEM PRIVATE ${PROJECT_SOURCE_DIR}/externals/simplecpp/) if (HAVE_RULES) target_include_directories(lib_objs SYSTEM PRIVATE ${PCRE_INCLUDE}) endif() diff --git a/lib/calculate.h b/lib/calculate.h index be0b6a9f9..084285c67 100644 --- a/lib/calculate.h +++ b/lib/calculate.h @@ -42,7 +42,7 @@ inline bool isEqual(float x, float y) template bool isZero(T x) { - return isEqual(x, T(0)); + return isEqual(x, T(0)); } template diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index 659235246..0118c482e 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -75,6 +75,7 @@ static bool isRaiiClass(const ValueType *valueType, bool cpp, bool defaultReturn return true; return defaultReturn; + case ValueType::Type::POD: case ValueType::Type::SMART_POINTER: case ValueType::Type::CONTAINER: case ValueType::Type::ITERATOR: diff --git a/lib/config.h b/lib/config.h index 2a78761c2..8cf43eee7 100644 --- a/lib/config.h +++ b/lib/config.h @@ -107,4 +107,16 @@ static const std::string emptyString; #error "No threading model defined" #endif +#define STRINGISIZE(...) #__VA_ARGS__ + +#ifdef __clang__ +#define SUPPRESS_WARNING(warning, ...)_Pragma("clang diagnostic push") _Pragma(STRINGISIZE(clang diagnostic ignored warning)) __VA_ARGS__ _Pragma("clang diagnostic pop") +#define SUPPRESS_DEPRECATED_WARNING(...) SUPPRESS_WARNING("-Wdeprecated", __VA_ARGS__) +#define SUPPRESS_FLOAT_EQUAL_WARNING(...) SUPPRESS_WARNING("-Wfloat-equal", __VA_ARGS__) +#else +#define SUPPRESS_DEPRECATED_WARNING(...) __VA_ARGS__ +#define SUPPRESS_FLOAT_EQUAL_WARNING(...) __VA_ARGS__ +#endif + + #endif // configH diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index ef0737d38..57dc6d46c 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -6976,6 +6976,9 @@ std::string ValueType::dump() const case NONSTD: ret << "valueType-type=\"nonstd\""; break; + case POD: + ret << "valueType-type=\"pod\""; + break; case RECORD: ret << "valueType-type=\"record\""; break; diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 70eb3b061..1ad4f9505 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -8248,6 +8248,10 @@ const char* ValueFlow::Value::toString(LifetimeScope lifetimeScope) return "Argument"; case ValueFlow::Value::LifetimeScope::SubFunction: return "SubFunction"; + case ValueFlow::Value::LifetimeScope::ThisPointer: + return "ThisPointer"; + case ValueFlow::Value::LifetimeScope::ThisValue: + return "ThisValue"; } return ""; }