Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delete warnings #87

Closed
1 task done
Tracked by #122
200km opened this issue Apr 19, 2022 · 33 comments
Closed
1 task done
Tracked by #122

Delete warnings #87

200km opened this issue Apr 19, 2022 · 33 comments
Assignees
Labels
priority::high priorityg high

Comments

@200km
Copy link
Member

200km commented Apr 19, 2022

Overview

Delete warnings

Details

There are so many warnings in S2E build. We need to delete them.

Conditions for close

  • all warnings are deleted.

Supplement

NA

Note

NA

@200km 200km added the priority::high priorityg high label Apr 19, 2022
@200km 200km self-assigned this Apr 19, 2022
@200km
Copy link
Member Author

200km commented Apr 19, 2022

#92#93 でだいぶ減った。残りもう少し頑張る。

@200km
Copy link
Member Author

200km commented Apr 20, 2022

@sksat 外部からコピーしてきているコードのwarningも気にせず修正していっていいですかね?

@200km
Copy link
Member Author

200km commented Apr 20, 2022

#97 ここまでのPRがすべて通れば、g++のwarningsはなくなるはず。
Windows Visual Studio側も確認が必要。

@sksat
Copy link
Collaborator

sksat commented Apr 21, 2022

@sksat 外部からコピーしてきているコードのwarningも気にせず修正していっていいですかね?

いいと思います

@200km
Copy link
Member Author

200km commented Apr 21, 2022

@sksat 外部からコピーしてるコードに #pragmra warningを使っているものがありました。このあたりどうしましょうか。

@200km
Copy link
Member Author

200km commented Apr 21, 2022

VS2019でビルドしたら、111件warningがでた。。。
VSとg++で警告オプションのレベルを似たものにしたいですね。

@200km
Copy link
Member Author

200km commented Apr 21, 2022

現状整理

  • g++
    • 警告オプションは -Wall
    • #pragma warningしているよwarning以外は消えた
  • VS2019
    • 警告オプションは /W4
    • 111件のwarning

@200km
Copy link
Member Author

200km commented Apr 22, 2022

@sksat ワーニングの件、アドバイスいただけると嬉しいです。
方針として、

  1. VS側の警告レベルを下げてg++に合わせる
  2. g++側の警告レベルを上げてVSに合わせる
  3. いまの警告レベルのままでとにかくVS側もwarningを削る

の三択で、2が一番良いのだろうなと思いつつ、警告レベルの設定をよく理解しておらずどうしようかなと言う感じです。

@sksat
Copy link
Collaborator

sksat commented Apr 22, 2022

とりあえずg++に-Wextraを追加かな,と思います(GCCは-Wall -Wextraしてようやくほぼすべてのワーニングが出るので).

@200km
Copy link
Member Author

200km commented Apr 22, 2022

Thanks. I agree with you.

@200km
Copy link
Member Author

200km commented Apr 22, 2022

After we added the -Wextra, we can see 1300 warnings in g++...
I will tackle to delete them all.

@200km
Copy link
Member Author

200km commented Apr 22, 2022

@sksat There are so many unused parameter warnings for function's arguments.
Can I use UNUSED macro like here?
Or do you have an another recommendation?

@sksat
Copy link
Collaborator

sksat commented Apr 22, 2022

UNUSEDマクロはせっかく出ているワーニングを握り潰すということなので,あんまりやりたくはないですね...
これは他のuserとかから使われていて変更のためのコストが大きい,そもそも後から引数を使うように実装が変わる可能性がある,ということですかね?

@200km
Copy link
Member Author

200km commented Apr 22, 2022

これは他のuserとかから使われていて変更のためのコストが大きい

Yes, changing the function's arguments makes huge effect to all users. But if it is really need to change, I can change it.

そもそも後から引数を使うように実装が変わる可能性がある

There are several examples we cannot remove the arguments

@sksat
Copy link
Collaborator

sksat commented Apr 22, 2022

なるほどです.じゃあ仕方ないですかね.
ワーニングを握り潰すとはいってもUNUSEDで握り潰している箇所を明示はできるわけですし,一旦UNUSEDでやりましょう.

@200km
Copy link
Member Author

200km commented Apr 22, 2022

Thanks. I will make another issue to remove UNUSED.

This was referenced Apr 22, 2022
@200km
Copy link
Member Author

200km commented Apr 22, 2022

All warnings are deleted again for g++ by #106.

@200km
Copy link
Member Author

200km commented Apr 23, 2022

We still have 57 warnings in VS2022.
image

@sksat gcc側にもう少し警告オプション追加する必要がありそうですが,どれを入れるべきかというのが分かっておらず,教えてもらえると嬉しいです.

@200km
Copy link
Member Author

200km commented Apr 23, 2022

とりあえずVS2022を使ってこれらのwarningsを消していきます.

@200km
Copy link
Member Author

200km commented Apr 23, 2022

@seki-hiro I2cObcTarget周りでHILS用に追加実装してくれた部分で,uint/int関連のワーニングが出ているので修正してもらえますか?いろんな関数が関連していて,実装者本人にやってもらった方が正確そうなので.

@200km
Copy link
Member Author

200km commented Apr 24, 2022

この記事のオプション設定を参考にしたりすると良いのでしょうか?

@200km
Copy link
Member Author

200km commented Apr 24, 2022

g++について上の記事のwarning設定にしてみたところ、次のような感じになった。

何もwarningが出なかったもの

-Wcast-align -Wctor-dtor-privacy -Wdisabled-optimization -Winit-self -Wlogical-op -Wmissing-include-dirs -Wnoexcept -Wredundant-decls -Wsign-promo -Wstrict-null-sentinel -Wundef -Wno-unused

warning出たもの

  • -pedantic : +1k
  • -Wcast-qual : +4
  • -Wformat=2 : +1
  • -Wmissing-declarations : +14
  • -Wold-style-cast : +298
  • -Woverloaded-virtual : +4
  • -Wshadow : +26
  • -Wsign-conversion : +2k
  • -Wstrict-overflow=5 : +15
  • -Wswitch-default : +1

ただ、Visual Studioと同じようなwarningが出ているようには見えなかった。表示が違うだけで一緒なのかもしれないけれど。

@sksat
Copy link
Collaborator

sksat commented Apr 25, 2022

ワーニングというのはコンパイラがそれぞれかなり独自に出しているものなので,規格に絡むもの以外は他のコンパイラ実装でまったく同じものが出るということはないです(なんだかんだ似ていることはありますけどね).とりあえず最優先で入れるべきなのは-Wpedanticかな(-pedanticと同じ意味です).

@sksat
Copy link
Collaborator

sksat commented Apr 25, 2022

-Wsign-conversionもまあ必要だな(というかそんなに出るのか)

@200km
Copy link
Member Author

200km commented Apr 25, 2022

完全に一致するとは思っていないのですが、似たwarningsが出てくれれば、一方で消せば他方も消えるので嬉しいなと思っていました。最終的にはどちらも見て、一方で出てたら修正するしか無いという感じですかね。

とりあえず、VSで出ないようにします。

@200km
Copy link
Member Author

200km commented Apr 25, 2022

-Wpedantic と -Wsign-conversion はその後入れるのを検討しますね。
前者は変なところに;がついている、後者は配列の要素指定にintを使っているというのがほとんどだったので、修正できるかなとは思っています。

@sksat
Copy link
Collaborator

sksat commented Apr 25, 2022

ですねー.両方見るしかないです.あーやけに多いなと思ったらそういうことか.なるほど.

@200km
Copy link
Member Author

200km commented Apr 25, 2022

残っているwarnings

g++

  • #pragma warning関連

VS2022

  • algorithm/transformを使っているIniReader.cpp
  • defaultlib LIBCMT conflicts with use of other libs; use /NODEFAULTLIB:library

@200km
Copy link
Member Author

200km commented Apr 25, 2022

IniReaderの方はこの記事を参考に修正

LIBCMTはこの記事を参考に[/MT]をつけて修正。ExtLibも同じような設定にする必要あり。

@200km
Copy link
Member Author

200km commented Apr 25, 2022

残りはg++の#pragma warning関連のみ。

@200km
Copy link
Member Author

200km commented Apr 25, 2022

#pragma warning関連 も片付けた。これで、一旦VS2022でもgccでもwarningは撲滅できた

@200km
Copy link
Member Author

200km commented Apr 25, 2022

-Wpedanticについては、入れ込めてwarningも全部消した。動作に影響が出るような修正ではなかった。
-Wsign-conversionは入れ込むの大変そう。

@200km
Copy link
Member Author

200km commented Apr 25, 2022

-Wsign-conversionは入れ込むの大変そう。

入れようと思うと結構大きな改修になるので、v5.0.0に入れれそうにない。
下記issueで別対応とする。
#120

@200km 200km closed this as completed Apr 26, 2022
@sksat sksat mentioned this issue Apr 26, 2022
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority::high priorityg high
Projects
None yet
Development

No branches or pull requests

2 participants