diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2020-04-04 14:43:49 +0200 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2020-04-27 10:07:51 +0000 |
commit | fbbddb1b67ab30b1c73a9ff1ae41ee5e344c0197 (patch) | |
tree | 78f1b6a5c82d2893f737f82699f27a7d1374e017 /src/plugins/scanner | |
parent | 37c992559fc79fd73828b653f80d0f2c3234568f (diff) |
clang-tidy: Fix 'cppcoreguidelines-pro-type-member-init' warnings
Also, fix undefined behavior when setting and reading different field of
a union (Lexer, Token) - according to the C++ Standard, it is not
allowed to use a union to zero members of a struct.
Treat these warnings as errors now.
Change-Id: I0f6d071217ef55e2c75c51138fcff47048eca62f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/scanner')
-rw-r--r-- | src/plugins/scanner/cpp/Lexer.cpp | 1 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/Lexer.h | 5 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/Token.cpp | 9 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/Token.h | 10 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/cppscanner.cpp | 8 | ||||
-rw-r--r-- | src/plugins/scanner/qt/qtscanner.cpp | 2 |
6 files changed, 9 insertions, 26 deletions
diff --git a/src/plugins/scanner/cpp/Lexer.cpp b/src/plugins/scanner/cpp/Lexer.cpp index 5bf5b2367..16556ac73 100644 --- a/src/plugins/scanner/cpp/Lexer.cpp +++ b/src/plugins/scanner/cpp/Lexer.cpp @@ -64,7 +64,6 @@ namespace CPlusPlus { Lexer::Lexer(const char *firstChar, const char *lastChar) : _state(State_Default), - _flags(0), _currentLine(1) { setSource(firstChar, lastChar); diff --git a/src/plugins/scanner/cpp/Lexer.h b/src/plugins/scanner/cpp/Lexer.h index 1cf829ebb..8f55f84e9 100644 --- a/src/plugins/scanner/cpp/Lexer.h +++ b/src/plugins/scanner/cpp/Lexer.h @@ -151,10 +151,7 @@ private: const char *_tokenStart = nullptr; unsigned char _yychar = 0; int _state = 0; - union { - unsigned _flags; - Flags f; - }; + Flags f{}; unsigned _currentLine = 0; }; diff --git a/src/plugins/scanner/cpp/Token.cpp b/src/plugins/scanner/cpp/Token.cpp index 603918f63..b488bf0d4 100644 --- a/src/plugins/scanner/cpp/Token.cpp +++ b/src/plugins/scanner/cpp/Token.cpp @@ -113,16 +113,9 @@ static const char *token_names[] = { }; -Token::Token() : - flags(0), offset(0), ptr(nullptr) -{ -} - -Token::~Token() = default; - void Token::reset() { - flags = 0; + f = {}; offset = 0; ptr = nullptr; } diff --git a/src/plugins/scanner/cpp/Token.h b/src/plugins/scanner/cpp/Token.h index 846aa5a12..a042c1087 100644 --- a/src/plugins/scanner/cpp/Token.h +++ b/src/plugins/scanner/cpp/Token.h @@ -295,9 +295,6 @@ enum Kind { class CPLUSPLUS_EXPORT Token { public: - Token(); - ~Token(); - inline bool is(unsigned k) const { return f.kind == k; } inline bool isNot(unsigned k) const { return f.kind != k; } #ifndef CPLUSPLUS_NO_PARSER @@ -348,15 +345,12 @@ public: unsigned pad : 3; unsigned length : 16; }; - union { - unsigned flags; - Flags f; - }; + Flags f{}; unsigned offset = 0; union { - void *ptr; + void *ptr = nullptr; #ifndef CPLUSPLUS_NO_PARSER const Literal *literal; const NumericLiteral *number; diff --git a/src/plugins/scanner/cpp/cppscanner.cpp b/src/plugins/scanner/cpp/cppscanner.cpp index 191a0f8d2..0acb25172 100644 --- a/src/plugins/scanner/cpp/cppscanner.cpp +++ b/src/plugins/scanner/cpp/cppscanner.cpp @@ -65,9 +65,9 @@ using namespace CPlusPlus; struct ScanResult { - char *fileName; - int size; - int flags; + char *fileName = nullptr; + int size = 0; + int flags = 0; }; struct Opaq @@ -226,7 +226,7 @@ static void *openScanner(const unsigned short *filePath, const char *fileTags, i return nullptr; } - struct stat s; + struct stat s{}; int r = fstat(opaque->fd, &s); if (r != 0) return nullptr; diff --git a/src/plugins/scanner/qt/qtscanner.cpp b/src/plugins/scanner/qt/qtscanner.cpp index 22fdcb79d..22ef294d0 100644 --- a/src/plugins/scanner/qt/qtscanner.cpp +++ b/src/plugins/scanner/qt/qtscanner.cpp @@ -107,7 +107,7 @@ static void *openScannerQrc(const unsigned short *filePath, const char *fileTags return nullptr; } - struct stat s; + struct stat s{}; int r = fstat(opaque->fd, &s); if (r != 0) return nullptr; |