fix 'Do not throw uncaught exceptions in a destructor.' #1854
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR の目的
Sonar Cloudの無駄な警告を潰して、ツールが検出した「本当に問題のあるコード」を識別しやすくします。
カテゴリ
PR の背景
ここのprojectではコードの静的解析に Sonar Cloud を使っています。
検出されたバグを修正する試みが何度か行われてきました。
最近はやっていないようですが、現在 115 件のバグが放置されています。
https://sonarcloud.io/project/overview?id=sakura-editor_sakura
今回はこのうちの1つを対応したいと思います。
PR のメリット
PR のデメリット (トレードオフとかあれば)
仕様・動作説明
「デストラクタで例外を投げないようにしましょう」
の警告に対処します。
デストラクタ内の以下のコードが問題です。
std::wstring(const wchar_t*)
はメモリ確保に失敗すると例外を投げます。std::wstring::operator += (const wchar_t*)
はメモリ確保に失敗すると例外を投げます。クラス内に同じコードが3か所あるので、
コードの結果をメンバに保持するよう変更し、
コンストラクタで
name
を設定するようにします。「例外を投げるコンストラクタ」も常識的にはNGですが、
Sonar Cloudでは警告されないので気付かなかったことにします。
修正箇所以外のCode Smellsは無視します。
PR の影響範囲
CWriteData
はGrep置換のときに使われるクラスです。テスト内容
テスト1
手順
関連 issue, PR
参考資料