Sakura: CGrepAgent::DoGrep のローカル変数初期化漏れ

Created on 7 Jul 2018  ·  13Comments  ·  Source: sakura-editor/sakura

https://github.com/sakura-editor/sakura/blob/4bfac54f654b9cd497412a62e00e39ba535bab31/sakura_core/CGrepAgent.cpp#L233-L241

GetDllShareData().m_Common.m_sEdit.m_bEnableLineModePaste が false のときに,未初期化の bLineSelect を参照するようです.

(このレベルで issue 立てていいのか迷いましたが,問題があればご指摘ください)

Most helpful comment

プロジェクトのコンパイルオプション?みたいなもので調整できるものもあるんすかね。

警告レベルを上げる以外にも Visual Studio に標準で入っている静的解析の機能もあります。

All 13 comments

ご指摘ありがとうございます。
このレベルであれば、対応余裕があれば直接PRくらいで良いです。対応余裕がなければ注意喚起としてIssueで良いです :+1:

これはどうやって見つけましたか?
他にも同様の問題がないか気になります。

今スマホなので確認してないですが、警告レベルを最大にしたら検出してくれそうな雰囲気を感じます

これはどうやって見つけましたか?

ソースを眺めていてたまたま,です.
類似不具合の確認はしていません.

警告レベル /Wall で,C4701 のみ抜き出してみました.
とりあえず本 issue の箇所は検出されています.

d:\dds\sakura\sakura_core\cgrepagent.cpp(241): warning C4701: 初期化されていない可能性のあるローカル変数 'bLineSelect' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\charset\ccodepage.cpp(772): warning C4701: 初期化されていない可能性のあるローカル変数 'nBinaryPos' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\charset\ccodepage.cpp(886): warning C4701: 初期化されていない可能性のあるローカル変数 'nBinaryPos' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\io\cfileload.cpp(627): warning C4701: 初期化されていない可能性のあるローカル変数 'i' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\macro\cwsh.cpp(413): warning C4701: 初期化されていない可能性のあるローカル変数 'sThreadParam' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]

ではまず、警告の設定だけを変えることにしますか?

/Wall にするととんでもない量の警告になりますよ。
実験的に /Wall にして警告チェックするのは良いですけど、現時点でプロジェクトとして /Wall にしちゃうのはまだ時期尚早だと思います。

警告レベルの調整は、現時点での x64 ビルドの警告ゼロが達成した後で考えたいです。

警告レベルの調整は、現時点での x64 ビルドの警告ゼロが達成した後で考えたいです。

227 を登録しました。

/Wall にするととんでもない量の警告になりますよ。
実験的に /Wall にして警告チェックするのは良いですけど、現時点でプロジェクトとして /Wall にしちゃうのはまだ時期尚早だと思います。

参考情報です。
現時点のmaster6191664で33,548警告出ました。 (Win32 - Debug)
windows SDK内の警告が相当数含まれているので、あまり正確な数字じゃないです。
SDK内のヘッダの警告を拾わないように適切な #pragma をいれてやる必要がありそうです。
x64 - Debugだと24,236警告になる理由は Win64 向けのヘッダは最近作られたものだからかと思います。

当面は x64 - Debugのレベル3警告621件に対処するのが先決なのかな、と思っています。
警告ゼロはレベル3警告=ゼロの意味ですよね?
x64 - Debugのレベル4警告対応はしなくていいんでしたっけ?(7,438警告あります)

あと、/Wallしてみて気付いたんですが、廃止された警告番号があるようです。
https://github.com/sakura-editor/sakura/blob/61916645567f763fdbf564e1f92fa6e2233059f4/sakura_core/StdAfx.h#L22

プロジェクトのコンパイルオプション?みたいなもので調整できるものもあるんすかね。
それともデフォルトからいじるものじゃないとか・・・

Delphiでも「まぁ、それいいやん、チェックしなくっても」ってやつはポチってコンパイルオプションで許容するようにしちゃったり。。。

プロジェクトのコンパイルオプション?みたいなもので調整できるものもあるんすかね。

警告レベルを上げる以外にも Visual Studio に標準で入っている静的解析の機能もあります。

Visual Studio に標準で入っている静的解析の機能もあります。

おお、あるんですね!

236がマージされたのでクローズします。

Was this page helpful?
0 / 5 - 0 ratings