Skip to content

Commit 7c8b518

Browse files
committed
mitigated misc-const-correctness clang-tidy false positive
fixed `readability-math-missing-parentheses` clang-tidy warnings .clang-tidy: disabled `readability-use-concise-preprocessor-directives` split up Clang warnings in CMake disabled `-Wnrvo` Clang warning fixed `misc-const-correctness` clang-tidy warnings clang-tidy.yml: updated to Clang 21
1 parent 538c5c4 commit 7c8b518

File tree

5 files changed

+31
-20
lines changed

5 files changed

+31
-20
lines changed

.clang-tidy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Checks: >
4949
-readability-magic-numbers,
5050
-readability-redundant-inline-specifier,
5151
-readability-simplify-boolean-expr,
52+
-readability-use-concise-preprocessor-directives,
5253
-readability-uppercase-literal-suffix,
5354
-performance-avoid-endl,
5455
-performance-enum-size,

.github/workflows/clang-tidy.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,19 @@ jobs:
2626
run: |
2727
wget https://apt.llvm.org/llvm.sh
2828
chmod +x llvm.sh
29-
sudo ./llvm.sh 20
30-
sudo apt-get install clang-tidy-20
29+
sudo ./llvm.sh 21
30+
sudo apt-get install clang-tidy-21
3131
3232
- name: Verify clang-tidy configuration
3333
run: |
34-
clang-tidy-20 --verify-config
34+
clang-tidy-21 --verify-config
3535
3636
- name: Prepare CMake
3737
run: |
3838
cmake -S . -B cmake.output -G "Unix Makefiles" -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
3939
env:
40-
CXX: clang-20
40+
CXX: clang-21
4141

4242
- name: Clang-Tidy
4343
run: |
44-
run-clang-tidy-20 -q -j $(nproc) -p=cmake.output
44+
run-clang-tidy-21 -q -j $(nproc) -p=cmake.output

CMakeLists.txt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,25 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
4949
# no need for c++98 compatibility
5050
add_compile_options(-Wno-c++98-compat-pedantic)
5151
# these are not really fixable
52-
add_compile_options(-Wno-exit-time-destructors -Wno-global-constructors -Wno-weak-vtables)
52+
add_compile_options(-Wno-exit-time-destructors)
53+
add_compile_options(-Wno-global-constructors)
54+
add_compile_options(-Wno-weak-vtables)
5355
add_compile_options_safe(-Wno-unsafe-buffer-usage)
56+
add_compile_options_safe(-Wno-nrvo)
5457
# we are not interested in these
55-
add_compile_options(-Wno-multichar -Wno-four-char-constants)
58+
add_compile_options(-Wno-multichar)
59+
add_compile_options(-Wno-four-char-constants)
5660
# ignore C++11-specific warning
57-
add_compile_options(-Wno-suggest-override -Wno-suggest-destructor-override)
61+
add_compile_options(-Wno-suggest-override)
62+
add_compile_options(-Wno-suggest-destructor-override)
5863
# contradicts -Wcovered-switch-default
5964
add_compile_options(-Wno-switch-default)
6065
# TODO: fix these?
61-
add_compile_options(-Wno-padded -Wno-sign-conversion -Wno-implicit-int-conversion -Wno-shorten-64-to-32 -Wno-shadow-field-in-constructor)
66+
add_compile_options(-Wno-padded)
67+
add_compile_options(-Wno-sign-conversion)
68+
add_compile_options(-Wno-implicit-int-conversion)
69+
add_compile_options(-Wno-shorten-64-to-32)
70+
add_compile_options(-Wno-shadow-field-in-constructor)
6271

6372
if (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 14 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14)
6473
# TODO: verify this regression still exists in clang-15

simplecpp.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,7 @@ void simplecpp::TokenList::readfile(Stream &stream, const std::string &filename,
865865
back()->setstr(currentToken);
866866
location.adjust(currentToken);
867867
if (currentToken.find_first_of("\r\n") == std::string::npos)
868-
location.col += 2 + 2 * delim.size();
868+
location.col += 2 + (2 * delim.size());
869869
else
870870
location.col += 1 + delim.size();
871871

@@ -1320,7 +1320,7 @@ void simplecpp::TokenList::constFoldLogicalOp(Token *tok)
13201320
void simplecpp::TokenList::constFoldQuestionOp(Token **tok1)
13211321
{
13221322
bool gotoTok1 = false;
1323-
for (Token *tok = *tok1; tok && tok->op != ')'; tok = gotoTok1 ? *tok1 : tok->next) {
1323+
for (const Token *tok = *tok1; tok && tok->op != ')'; tok = gotoTok1 ? *tok1 : tok->next) {
13241324
gotoTok1 = false;
13251325
if (tok->str() != "?")
13261326
continue;
@@ -1934,7 +1934,7 @@ namespace simplecpp {
19341934
}
19351935
}
19361936

1937-
Token * const output_end_1 = output->back();
1937+
const Token * const output_end_1 = output->back();
19381938

19391939
const Token *valueToken2;
19401940
const Token *endToken2;
@@ -2239,7 +2239,7 @@ namespace simplecpp {
22392239
const bool canBeConcatenatedStringOrChar = isStringLiteral_(A->str()) || isCharLiteral_(A->str());
22402240
const bool unexpectedA = (!A->name && !A->number && !A->str().empty() && !canBeConcatenatedWithEqual && !canBeConcatenatedStringOrChar);
22412241

2242-
Token * const B = tok->next->next;
2242+
const Token * const B = tok->next->next;
22432243
if (!B->name && !B->number && B->op && !B->isOneOf("#="))
22442244
throw invalidHashHash::unexpectedToken(tok->location, name(), B);
22452245

@@ -2512,11 +2512,11 @@ static void simplifySizeof(simplecpp::TokenList &expr, const std::map<std::strin
25122512
for (simplecpp::Token *tok = expr.front(); tok; tok = tok->next) {
25132513
if (tok->str() != "sizeof")
25142514
continue;
2515-
simplecpp::Token *tok1 = tok->next;
2515+
const simplecpp::Token *tok1 = tok->next;
25162516
if (!tok1) {
25172517
throw std::runtime_error("missing sizeof argument");
25182518
}
2519-
simplecpp::Token *tok2 = tok1->next;
2519+
const simplecpp::Token *tok2 = tok1->next;
25202520
if (!tok2) {
25212521
throw std::runtime_error("missing sizeof argument");
25222522
}
@@ -2531,7 +2531,7 @@ static void simplifySizeof(simplecpp::TokenList &expr, const std::map<std::strin
25312531
}
25322532

25332533
std::string type;
2534-
for (simplecpp::Token *typeToken = tok1; typeToken != tok2; typeToken = typeToken->next) {
2534+
for (const simplecpp::Token *typeToken = tok1; typeToken != tok2; typeToken = typeToken->next) {
25352535
if ((typeToken->str() == "unsigned" || typeToken->str() == "signed") && typeToken->next->name)
25362536
continue;
25372537
if (typeToken->str() == "*" && type.find('*') != std::string::npos)
@@ -2582,11 +2582,11 @@ static void simplifyHasInclude(simplecpp::TokenList &expr, const simplecpp::DUI
25822582
for (simplecpp::Token *tok = expr.front(); tok; tok = tok->next) {
25832583
if (tok->str() != HAS_INCLUDE)
25842584
continue;
2585-
simplecpp::Token *tok1 = tok->next;
2585+
const simplecpp::Token *tok1 = tok->next;
25862586
if (!tok1) {
25872587
throw std::runtime_error("missing __has_include argument");
25882588
}
2589-
simplecpp::Token *tok2 = tok1->next;
2589+
const simplecpp::Token *tok2 = tok1->next;
25902590
if (!tok2) {
25912591
throw std::runtime_error("missing __has_include argument");
25922592
}
@@ -2604,7 +2604,7 @@ static void simplifyHasInclude(simplecpp::TokenList &expr, const simplecpp::DUI
26042604
const bool systemheader = (tok1 && tok1->op == '<');
26052605
std::string header;
26062606
if (systemheader) {
2607-
simplecpp::Token *tok3 = tok1->next;
2607+
const simplecpp::Token *tok3 = tok1->next;
26082608
if (!tok3) {
26092609
throw std::runtime_error("missing __has_include closing angular bracket");
26102610
}
@@ -2615,7 +2615,7 @@ static void simplifyHasInclude(simplecpp::TokenList &expr, const simplecpp::DUI
26152615
}
26162616
}
26172617

2618-
for (simplecpp::Token *headerToken = tok1->next; headerToken != tok3; headerToken = headerToken->next)
2618+
for (const simplecpp::Token *headerToken = tok1->next; headerToken != tok3; headerToken = headerToken->next)
26192619
header += headerToken->str();
26202620
} else {
26212621
header = tok1->str().substr(1U, tok1->str().size() - 2U);

simplecpp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ namespace simplecpp {
375375
std::pair<FileData *, bool> get(const std::string &sourcefile, const std::string &header, const DUI &dui, bool systemheader, std::vector<std::string> &filenames, OutputList *outputList);
376376

377377
void insert(FileData data) {
378+
// NOLINTNEXTLINE(misc-const-correctness) - FP
378379
FileData *const newdata = new FileData(std::move(data));
379380

380381
mData.emplace_back(newdata);

0 commit comments

Comments
 (0)