-
Notifications
You must be signed in to change notification settings - Fork 168
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
CDocLine のテストを追加する #1655
CDocLine のテストを追加する #1655
Conversation
fa03529
to
0d79068
Compare
❌ Build sakura 1.0.3723 failed (commit 862cf3e27e by @k-kagari) |
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.
CSearchAgent::ReplaceData
メソッド内に GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol
という記述が14か所あります。
結構記述が長いので関数の冒頭辺りで
const auto bEnableExtEol = GetDllShareData().m_Common.m_sEdit.m_bEnableExtEol;
として後はそれを使うようにした方が記述がすっきりするかなと思います。
MinGW Release の失敗は if (this) が最適化で消えてしまう問題でしょうか。
レビューありがとうございます。後ほど反映します。 |
✅ Build sakura 1.0.3724 completed (commit bb2fe1a37a by @k-kagari) |
SonarCloud Quality Gate failed. |
✅ Build sakura 1.0.3725 completed (commit 64f979a956 by @k-kagari) |
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.
テスト不能なクラスCDocLineをテスト可能とする修正として問題なさそうに思います。
マージしました。レビューありがとうございました。 |
これは多分「thisがnullである場合に動くコード」を書いていることと、その挙動に依存するコードが「存在すること」が問題だと思います。 JavaやC#では「thisがnullであるオブジェクト」のメソッドを呼べば「ぬるぽ」で落ちます。
サクラエディタは元々Windows APIを多用するC言語プログラムとして書かれていて、C++化した部分とC言語のままな部分とが混在しています。 C言語プログラムでは、配列の終端にNULLを入れて番兵とする疑似コレクションがよく使われるんですけど、この考え方との親和性を持たせるために「thisがnullの場合」を実装してあるんだと思います。 これの対策は NULLオブジェクト の導入なんですけど、導入にはぼちぼち障害があって何もしとらん感じです。 |
PR の目的
CDocLine に対するテストを追加します。
カテゴリ
PR のメリット
仕様・動作説明
テストの障害となる CDocLine::SetEol の共有データ依存を除去する変更を含みます。
PR の影響範囲
CDocLine::SetEol の呼び出し元において自動テストでカバーできない変更が発生しています。以下の機能に影響します。
テスト内容
(GetStrLayoutLength の結果が正しいことも確認するのが望ましいですが、適切なテスト内容が浮かばずにいます。)