JDimproved / JDim

2ch browser for linux
https://jdimproved.github.io/JDim/
GNU General Public License v2.0
44 stars 11 forks source link

Fix compiler warnings for -Wextra-semi-stmt part1,2 #1363

Closed ma8ma closed 3 months ago

ma8ma commented 3 months ago

Fix compiler warnings for -Wextra-semi-stmt part1

ステートメントの後ろに余分なセミコロンが付いており効果がないとclangに指摘されたため取り除きます。

clang-17のレポート (file pathを一部省略) ``` src/article/articleview.cpp:488:103: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/articleview.cpp:672:104: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/articleview.cpp:694:80: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/articleviewbase.cpp:1042:49: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/articleviewbase.cpp:3760:30: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:133:70: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:155:71: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/board/boardviewbase.cpp:1450:56: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/board/boardviewbase.cpp:1939:86: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/board/boardviewbase.cpp:2519:38: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/board/boardviewbase.cpp:2569:38: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/board/boardviewbase.cpp:2738:56: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/board/boardviewbase.cpp:727:64: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/control/controlutil.cpp:557:49: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/control/mousekeyconf.cpp:64:28: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/image/imageview.cpp:399:82: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/image/imageviewicon.cpp:217:54: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/jdlib/loader.cpp:1009:84: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/jdlib/loader.cpp:1010:97: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/jdlib/loader.cpp:1011:66: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] ```

Fix compiler warnings for -Wextra-semi-stmt part2

ステートメントの後ろに余分なセミコロンが付いており効果がないとclangに指摘されたため取り除きます。

clang-17のレポート (file pathを一部省略) ``` src/article/drawareabase.cpp:2198:56: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:2199:62: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:3395:86: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:4305:35: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:4324:50: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/drawareabase.cpp:5155:66: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/article/layouttree.cpp:659:42: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/core.cpp:2787:65: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/dbtree/bbsmenu.cpp:285:70: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/dbtree/boardbase.cpp:2193:5: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/dbtree/root.cpp:195:28: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/dbtree/root.cpp:260:74: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/searchloader.cpp:41:105: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/skeleton/tablabel.cpp:189:49: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/skeleton/tablabel.cpp:204:70: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/skeleton/treeviewbase.cpp:291:21: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] src/usrcmdpref.cpp:163:104: warning: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Wextra-semi-stmt] ```
ma8ma commented 3 months ago

AddressSanitizer を使うジョブでハングアップが発生しました。最近ローカルの環境でもsanitizerを使うとハングアップに遭遇することがあり、一度ハングアップしたテストプログラムを再実行すると正常に実行する場合もあります。

ハングアップしたテストのログ

ninja: Entering directory `/home/runner/work/JDim/JDim/builddir'
[1/3] Generating src/buildinfo.h with a custom command
INFO: GIT Hash = "eb084b8fbb"
INFO: GIT Date = "20240316"
INFO: src/buildinfo.h is not modified.
1/1 gtest tests RUNNING       
>>> MALLOC_PERTURB_=109 /home/runner/work/JDim/JDim/builddir/test/gtest_jdim

gtest tests time out (After 30 seconds)
1/1 gtest tests TIMEOUT        30.23s   killed by signal 15 SIGTERM
――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――
stderr:
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer:DEADLYSIGNAL
(以下タイムアウトするまで出力される)

googletest のリポジトリを検索したところ同じような現象が issue に報告されています。 https://github.com/google/googletest/issues/4491

とりあえずGitHub ActionsのジョブがAddressSanitizer:DEADLYSIGNALを出力し続けてハングアップしたときはジョブの結果を無視してマージすることにします。

edit: sanitizerがハングアップしたローカル環境の表示

$ LANG=C uname -srvm
Linux 6.5.0-25-generic #25-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb  7 14:58:39 UTC 2024 x86_64

$ LANG=C lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 23.10
Release:        23.10
Codename:       mantic

$ LANG=C gcc --version
gcc (Ubuntu 13.2.0-4ubuntu3) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ LANG=C pkg-config --modversion gtest
1.13.0

edit2: このPRより後に開いた https://github.com/JDimproved/JDim/pull/1364 のジョブは成功しました。