-
Notifications
You must be signed in to change notification settings - Fork 163
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
SonarCloud解析で検出されたゼロ除算コードに対策する #1511
SonarCloud解析で検出されたゼロ除算コードに対策する #1511
Conversation
SonarCloud Quality Gate failed. |
✅ Build sakura 1.0.3355 completed (commit ef07f6e8bd by @berryzplus) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PRにしていただきありがとうございます。問題が修正されることを確認しました。
コードについても最小限の修正としてならば言うことはないと思われます。SonarCloud の警告が増えるのが残念ですけれど、最小限なので。
直し方が汚いと思います。(100%主観)
直し方が汚いと感じるのは、もっと言い直し方がある(たぶん)という直感の現れだと思います。
警告を消すためだけの対応を行うことで、本来採るべき最適解を探る機会が失われることがデメリットです。
#1510 の内容も含めて、そういう言及があったことを覚えておきます。
レビューありがとうございます。 |
この変更に起因するデグレが2chで報告されています。
明らかに関係ない変更なので、真偽は不明。 |
1.0.3360 なら #1512 の可能性があると思います。 |
PR の目的
SonarCloud解析で検出されたゼロ除算コードに対策します。
結果的に #1510
すべてのウィンドウが最小化された状態で「並べて表示」コマンドを実行するとクラッシュする
の不具合が直ります。カテゴリ
PR の背景
SonarCloud解析でBugだと言われている件に対処したい #1504 と関連します。
「SonarCloud解析を便利に使えるように」対応の下準備として、簡単に直せる指摘について対処策を考えていました。
#1510 で実害があると報告されたので対処を入れる感じです。
PR のメリット
不具合を修正することができます。
PR のデメリット (トレードオフとかあれば)
直し方が汚いと思います。(100%主観)
直し方が汚いと感じるのは、もっと言い直し方がある(たぶん)という直感の現れだと思います。
警告を消すためだけの対応を行うことで、本来採るべき最適解を探る機会が失われることがデメリットです。
仕様・動作説明
「ゼロで割る」は、最も有名なCPUが実行できない命令です。
これをやったら例外キャッチする機構がない限り、プログラムは落ちます。
上下に並べて表示、左右に並べて表示の実装は、デスクトップ領域を「表示されているウインドウの数」で割って1ウインドウあたりの高さ(幅)を算出し、オフセットで並べる感じになっています。表示されているウインドウが0個だった場合、ウインドウ領域の高さ(幅)をゼロで割ることになるので、ウインドウ数が0の場合を除外しないと落ちてしまいます。
修正コードでは、単にreturnするのではなく、
関数内で独自に確保した配列メモリの解放も行うようにしています。
PR の影響範囲
テスト内容
以下のファイルを
test1.js
などのテキトーなファイル名で保存し、キーマクロの読み込みをしてからキーマクロの実行をします。実行するとすべてのサクラエディタウインドウが最小化されます。修正前はその後プログラムがクラッシュしていましたが、修正後はクラッシュしなくなります。関連 issue, PR
fix #1510
#1504
参考資料