From 12878d05bfb0a10c90cb6dc29fec801d06a2f5fc Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 19:23:41 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E7=94=A8?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=95=E3=82=A1=E3=82=A4=E3=83=ABprofile1?= =?UTF-8?q?=E3=81=8C=E6=AE=8B=E5=AD=98=E3=81=99=E3=82=8B=E5=AF=BE=E7=AD=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/cpp/tests1/test-file.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/test/cpp/tests1/test-file.cpp b/src/test/cpp/tests1/test-file.cpp index 362a49f2aa..58ce1b15bd 100644 --- a/src/test/cpp/tests1/test-file.cpp +++ b/src/test/cpp/tests1/test-file.cpp @@ -338,12 +338,18 @@ class CExeIniTest : public ::testing::Test { */ std::filesystem::path exeIniPath; + /* + * profile1 配下のフォルダーのパス + */ + std::filesystem::path profileDirPath; + /*! * テストが起動される直前に毎回呼ばれる関数 */ void SetUp() override { // マルチユーザー構成設定ファイルのパス exeIniPath = GetExeFileName().concat(L".ini"); + profileDirPath.clear(); } /*! @@ -358,8 +364,16 @@ class CExeIniTest : public ::testing::Test { std::filesystem::remove(exeIniPath, ec); } + // profile1 配下のフォルダーも削除する + if (!profileDirPath.empty()) { + std::filesystem::remove_all(profileDirPath, ec); + } + // 削除チェック EXPECT_FALSE(fexist(exeIniPath)); + if (!profileDirPath.empty()) { + EXPECT_FALSE(std::filesystem::exists(profileDirPath)); + } } }; @@ -383,9 +397,12 @@ TEST_F(CExeIniTest, GetIniFileName_PrivateRoamingAppData) // プロセスのインスタンスを用意する CControlProcess dummy(nullptr, LR"(-PROF="profile1")"); + const auto iniPath = GetIniFileName(); + profileDirPath = iniPath.parent_path(); + // 期待値を取得する auto expected = ExpandEnvironmentStringsW(LR"(%USERPROFILE%\AppData\Roaming\sakura\profile1\)"); - expected += GetIniFileName().filename(); + expected += iniPath.filename(); // テスト実施 EXPECT_THAT(GetIniFileName(), StrEq(expected)); @@ -554,6 +571,10 @@ TEST(file, GetInidirOrExedir) // 両方ないときはINI基準のパスが変える GetInidirOrExedir(buf.data(), filename, true); EXPECT_THAT(buf, StartsWith(iniBasePath.c_str())); + + std::filesystem::remove(iniBasePath, ec); + std::filesystem::remove(exeBasePath, ec); + std::filesystem::remove_all(iniBasePath.parent_path(), ec); } /*! From 91f05ae67250c84cd9ed3cdc63addf08cfb76440 Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 19:23:58 +0900 Subject: [PATCH 2/9] =?UTF-8?q?EditWnd=E3=81=AE=E3=83=A1=E3=83=83=E3=82=BB?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E9=85=8D=E9=80=81=E3=82=92=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 編集ウィンドウもウィンドウなので、メッセージ配送が主な役割。 現時点では「おかしなメッセージ」に耐性がなくてテスト不能なものがかなりある。 --- src/test/cpp/tests1/test-window.cpp | 318 +++++++++++++++++++++++++++- 1 file changed, 314 insertions(+), 4 deletions(-) diff --git a/src/test/cpp/tests1/test-window.cpp b/src/test/cpp/tests1/test-window.cpp index ee6ab3a000..146a837c68 100644 --- a/src/test/cpp/tests1/test-window.cpp +++ b/src/test/cpp/tests1/test-window.cpp @@ -684,6 +684,16 @@ struct EditWndTest : public ::testing::Test, public window::EditorTestSuite, pub */ void TearDown() override { + // 強制的に「編集なし」にする + pcEditDoc->m_cDocEditor.m_bIsDocModified = false; + + // 強制的に「Grepモード」を解除する + CEditApp::getInstance()->m_pcGrepAgent->m_bGrepMode = false; + + // キューに溜まったメッセージは全部捨てる + MSG msg{}; + while (::PeekMessageW(&msg, nullptr, 0L, 0L, PM_REMOVE)) ; + mgr = nullptr; } @@ -735,6 +745,306 @@ struct EditWndTest : public ::testing::Test, public window::EditorTestSuite, pub } }; +TEST_F(EditWndTest, DISABLED_OnCreate101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_CREATE, 0L, 0L), IsTrue()); // 戻り値は反転される +} + +TEST_F(EditWndTest, DISABLED_OnDestroy101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_DESTROY, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnMove101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_MOVE, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnSize101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SIZE, SIZE_RESTORED, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnSetFocus101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SETFOCUS, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnEnable101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_ENABLE, TRUE, 0L), IsFalse()); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_ENABLE, FALSE, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnSetText101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_SETTEXT, 0L, LPARAM(L"title-from-test")); +} + +TEST_F(EditWndTest, DISABLED_OnClose101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_CLOSE, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, DISABLED_OnQueryEndSession101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_QUERYENDSESSION, 0L, 0L), IsTrue()); +} + +TEST_F(EditWndTest, OnShowWindow101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SHOWWINDOW, FALSE, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnPaintIcon101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_PAINTICON, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnIconEraseBkgnd101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_ICONERASEBKGND, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnWindowPosChanged101) +{ + HWND hWndEdit = nullptr; + WINDOWPOS wp{}; + wp.flags = SWP_SHOWWINDOW; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_WINDOWPOSCHANGED, 0L, LPARAM(&wp)), IsFalse()); +} + +TEST_F(EditWndTest, OnWindowPosChanged102) +{ + HWND hWndEdit = nullptr; + WINDOWPOS wp{}; + wp.flags = SWP_HIDEWINDOW; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_WINDOWPOSCHANGED, 0L, LPARAM(&wp)), IsFalse()); +} + +TEST_F(EditWndTest, OnHScroll101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_HSCROLL, MAKEWPARAM(SB_LINELEFT, 0), 0L); +} + +TEST_F(EditWndTest, OnVScroll101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_VSCROLL, MAKEWPARAM(SB_LINEUP, 0), 0L); +} + +TEST_F(EditWndTest, OnMenuSelect101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_MENUSELECT, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnNotify101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_NOTIFY, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnHelp101) +{ + HWND hWndEdit = nullptr; + // FIXME: helpinfo構造体を渡さないと落ちる + // EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_HELP, 0L, 0L), IsTrue()); + + HELPINFO hi{}; + hi.iContextType = HELPINFO_WINDOW; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_HELP, 0L, LPARAM(&hi)), IsTrue()); +} + +TEST_F(EditWndTest, OnCommand101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_COMMAND, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnCommand102) +{ + // 表示されたモーダルダイアログをキャンセルボタンで閉じるようにする + dialog::ModalDialogCloser closer; + + GetDllShareData().m_sHistory.m_nOPENFOLDERArrNum = 1; + + // ファイルを開くダイアログを表示する + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_COMMAND, MAKEWPARAM(IDM_SELOPENFOLDER, 0), 0L), IsFalse()); + + GetDllShareData().m_sHistory.m_nOPENFOLDERArrNum = 0; +} + +TEST_F(EditWndTest, DISABLED_OnSysCommand101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_SYSCOMMAND, SC_CLOSE, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnTimer101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_TIMER, 2 /* IDT_EDITCHECK */, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnExitMenuLoop101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_EXITMENULOOP, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnInitMenuPopup101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_INITMENUPOPUP, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnDropFiles101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_DROPFILES, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnThemeChanged101) // パラメーター不正の考慮がないので呼べない +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_THEMECHANGED, 0L, 0L); +} + +TEST_F(EditWndTest, OnMenuChar101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_MENUCHAR, 0L, 0L); +} + +TEST_F(EditWndTest, OnCopy101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_COPY, 0L, 0L); +} + +TEST_F(EditWndTest, OnPaste101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, WM_PASTE, 0L, 0L); +} + +TEST_F(EditWndTest, OnMyWmGetLineData101) +{ + HWND hWndEdit = nullptr; + const auto invalidLine = GetDocument()->m_cDocLineMgr.GetLineCount() + CLogicInt(1); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_GETLINEDATA, WPARAM(invalidLine), 0L), Eq(-2)); +} + +TEST_F(EditWndTest, OnMyWmUipiCheck101) +{ + HWND hWndEdit = nullptr; + constexpr LPARAM expected = 0x1234; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_UIPI_CHECK, 0L, expected), Eq(expected)); +} + +TEST_F(EditWndTest, OnMyWmAllowActivate101) +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, MYWM_ALLOWACTIVATE, 0L, 0L); +} + +TEST_F(EditWndTest, DISABLED_OnMyWmChangeSetting101) // 副作用が大きいので無効 +{ + HWND hWndEdit = nullptr; + pcEditWnd->DispatchEvent(hWndEdit, MYWM_CHANGESETTING, 0L, int(PM_CHANGESETTING_ALL)); +} + +TEST_F(EditWndTest, OnMyWmSaveEditState101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_SAVEEDITSTATE, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmSetActivePane101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_SETACTIVEPANE, WPARAM(-1), 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmSetCaretPos101) +{ + HWND hWndEdit = nullptr; + GetDllShareData().m_sWorkBuffer.m_LogicPoint = CLogicPoint(0, 0); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_SETCARETPOS, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmGetCaretPos101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_GETCARETPOS, 0L, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnMyWmGetLineCount101) +{ + HWND hWndEdit = nullptr; + const auto lineCount = pcEditWnd->DispatchEvent(hWndEdit, MYWM_GETLINECOUNT, 0L, 0L); + EXPECT_THAT(lineCount, Ge(0)); +} + +TEST_F(EditWndTest, OnMyWmAddStringLenW101) +{ + HWND hWndEdit = nullptr; + auto* pWork = GetDllShareData().m_sWorkBuffer.GetWorkBuffer(); + ::wcscpy_s(pWork, 4, L"abc"); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, MYWM_ADDSTRINGLEN_W, 3, 0L), IsFalse()); +} + +TEST_F(EditWndTest, OnLButtonDown101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnMouseWheel101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_MOUSEWHEEL, MAKEWPARAM(0, WHEEL_DELTA), MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnLButtonUp101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_LBUTTONUP, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnNCLButtonDown101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_NCLBUTTONDOWN, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnNCLButtonUp101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_NCLBUTTONUP, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + +TEST_F(EditWndTest, OnLButtonDblClk101) +{ + HWND hWndEdit = nullptr; + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_LBUTTONDBLCLK, 0L, MAKELPARAM(10, 20)), IsFalse()); +} + /*! * 上書き保存時バックアップのテスト */ @@ -752,8 +1062,8 @@ TEST_F(EditWndTest, FileSaveWithBackupAgent001) std::filesystem::remove(backupPath, ec); { - std::wofstream fs(targetPath); - fs << L"line1" << std::endl; + std::wofstream fos(targetPath); + fos << L"line1" << std::endl; } sBackup.m_bBackUp = true; @@ -809,8 +1119,8 @@ TEST_F(EditWndTest, GetDocDataObject001) EXPECT_THAT(pDataObject, IsNull()); { - std::wofstream fs(targetPath); - fs << L"line1" << std::endl; + std::wofstream fos(targetPath); + fos << L"line1" << std::endl; } EXPECT_THAT(mgr->LoadKeyMacroStr(unusedArg1, std::format(L"FileOpen('{}', 99, 0, '無題1')", targetPath.native()).c_str()), IsTrue()); From ff4d8675b239134132f40800666cb4953f83cc04 Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 19:24:27 +0900 Subject: [PATCH 3/9] =?UTF-8?q?WM=5FHELP=E3=83=8F=E3=83=B3=E3=83=89?= =?UTF-8?q?=E3=83=A9=E3=81=AE=E5=AE=9A=E7=BE=A9=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/window/CEditWnd.cpp | 8 +------- src/test/cpp/tests1/test-window.cpp | 3 +-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index 2af46dbc76..37083679b1 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -1106,7 +1106,6 @@ LRESULT CEditWnd::DispatchEvent( LPNMHDR pnmh; int nPane; EditInfo* pfi; - LPHELPINFO lphi; UINT idCtl; /* コントロールのID */ LPDRAWITEMSTRUCT lpdis; /* 項目描画情報 */ @@ -1218,13 +1217,8 @@ LRESULT CEditWnd::DispatchEvent( return GetActiveView().GetCommander().HandleCommand( F_COPY, true, 0, 0, 0, 0 ); case WM_HELP: - lphi = (LPHELPINFO) lParam; - switch( lphi->iContextType ){ - case HELPINFO_MENUITEM: + if (const auto lphi = (LPHELPINFO) lParam; lphi && HELPINFO_MENUITEM == lphi->iContextType) { MyWinHelp( hwnd, HELP_CONTEXT, FuncID_To_HelpContextID( (EFunctionCode)lphi->iCtrlId ) ); - break; - default: - break; } return TRUE; diff --git a/src/test/cpp/tests1/test-window.cpp b/src/test/cpp/tests1/test-window.cpp index 146a837c68..8fa5d8f70d 100644 --- a/src/test/cpp/tests1/test-window.cpp +++ b/src/test/cpp/tests1/test-window.cpp @@ -861,8 +861,7 @@ TEST_F(EditWndTest, DISABLED_OnNotify101) // パラメーター不正の考慮 TEST_F(EditWndTest, OnHelp101) { HWND hWndEdit = nullptr; - // FIXME: helpinfo構造体を渡さないと落ちる - // EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_HELP, 0L, 0L), IsTrue()); + EXPECT_THAT(pcEditWnd->DispatchEvent(hWndEdit, WM_HELP, 0L, 0L), IsTrue()); HELPINFO hi{}; hi.iContextType = HELPINFO_WINDOW; From 431ee6305faadc5f7159de0c8e75a5e74553efa7 Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 08:21:19 +0900 Subject: [PATCH 4/9] =?UTF-8?q?SonarQube=E6=8C=87=E6=91=98=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20This=20function=20should=20be=20declared=20"const".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/window/CEditWnd.cpp | 28 ++++++++++++++++++++++------ sakura_core/window/CEditWnd.h | 4 ++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index 37083679b1..1332a1cd8b 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -274,7 +274,11 @@ void CEditWnd::UpdateCaption() } //!< ウィンドウ生成用の矩形を取得 -void CEditWnd::_GetWindowRectForInit(CMyRect* rcResult, [[maybe_unused]] int nGroup, const STabGroupInfo& sTabGroupInfo) const +void CEditWnd::_GetWindowRectForInit( + CMyRect* rcResult, + int nGroup [[maybe_unused]], + const STabGroupInfo& sTabGroupInfo +) const { /* ウィンドウサイズ継承 */ int nWinCX, nWinCY; @@ -384,7 +388,10 @@ HWND CEditWnd::_CreateMainWindow(int nGroup, const STabGroupInfo& sTabGroupInfo) return hwndResult; } -void CEditWnd::_GetTabGroupInfo(STabGroupInfo* pTabGroupInfo, int& nGroup) const +void CEditWnd::_GetTabGroupInfo( + STabGroupInfo* pTabGroupInfo, + int& nGroup +) const { HWND hwndTop = nullptr; WINDOWPLACEMENT wpTop = {0}; @@ -2689,7 +2696,12 @@ void CEditWnd::SetMenuFuncSel( HMENU hMenu, EFunctionCode nFunc, const WCHAR* sK m_cMenuDrawer.MyAppendMenu( hMenu, MF_BYPOSITION | MF_STRING, nFunc, sName, sKey ); } -STDMETHODIMP CEditWnd::DragEnter( LPDATAOBJECT pDataObject, DWORD dwKeyState, [[maybe_unused]] POINTL pt, LPDWORD pdwEffect) const +STDMETHODIMP CEditWnd::DragEnter( + LPDATAOBJECT pDataObject, + DWORD dwKeyState, + POINTL pt [[maybe_unused]], + LPDWORD pdwEffect +) const { if( pDataObject == nullptr || pdwEffect == nullptr ){ return E_INVALIDARG; @@ -2711,7 +2723,11 @@ STDMETHODIMP CEditWnd::DragEnter( LPDATAOBJECT pDataObject, DWORD dwKeyState, [[ return S_OK; } -STDMETHODIMP CEditWnd::DragOver([[maybe_unused]] DWORD dwKeyState, [[maybe_unused]] POINTL pt, LPDWORD pdwEffect) const +STDMETHODIMP CEditWnd::DragOver( + DWORD dwKeyState [[maybe_unused]], + POINTL pt [[maybe_unused]], + LPDWORD pdwEffect +) const { if( pdwEffect == nullptr ) return E_INVALIDARG; @@ -3745,8 +3761,8 @@ int CEditWnd::CreateFileDropDownMenu( HWND hwnd ) */ void CEditWnd::SetWindowIcon(HICON hIcon, int flag) const { - HICON hOld = (HICON)::SendMessage( GetHwnd(), WM_SETICON, flag, (LPARAM)hIcon ); - if( hOld != nullptr ){ + if (const auto hOld = (HICON)::SendMessageW(GetHwnd(), WM_SETICON, flag, LPARAM(hIcon)); + hOld != nullptr ){ ::DestroyIcon( hOld ); } } diff --git a/sakura_core/window/CEditWnd.h b/sakura_core/window/CEditWnd.h index 892cc762ee..6ebbd6efae 100644 --- a/sakura_core/window/CEditWnd.h +++ b/sakura_core/window/CEditWnd.h @@ -330,8 +330,8 @@ class CEditWnd const CMyPoint& GetDragPosOrg() const{ return m_ptDragPosOrg; } /* IDropTarget実装 */ // 2008.06.20 ryoji - STDMETHODIMP DragEnter(LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect) const; - STDMETHODIMP DragOver(DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect) const; + STDMETHODIMP DragEnter(LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL pt [[maybe_unused]], LPDWORD pdwEffect) const; + STDMETHODIMP DragOver(DWORD dwKeyState [[maybe_unused]], POINTL pt [[maybe_unused]], LPDWORD pdwEffect) const; STDMETHODIMP DragLeave() const; STDMETHODIMP Drop(LPDATAOBJECT pDataObject, DWORD dwKeyState, POINTL pt, LPDWORD pdwEffect); From c9fcd2c74c53769661d7aac5b22493a2d8eb46e6 Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 17:10:58 +0900 Subject: [PATCH 5/9] =?UTF-8?q?SonarQube=E6=8C=87=E6=91=98=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20Merge=20this=20"if"=20statement=20with=20the=20encl?= =?UTF-8?q?osing=20one.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/window/CEditWnd.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index 1332a1cd8b..a9c24d1193 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -1563,11 +1563,11 @@ LRESULT CEditWnd::DispatchEvent( CJackManager::getInstance()->InvokePlugins( PP_EDITOR_END, &GetActiveView() ); // タブまとめ表示では閉じる動作はオプション指定に従う // 2006.02.13 ryoji - if( PM_CLOSE_EXIT != (PM_CLOSE_EXIT & wParam) ){ // 全終了要求でない場合 + if (PM_CLOSE_EXIT != (PM_CLOSE_EXIT & wParam) && // 全終了要求でない場合 // タブまとめ表示で(無題)を残す指定の場合、残ウィンドウが1個なら新規エディタを起動して終了する - if( m_pShareData->m_Common.m_sTabBar.m_bDispTabWnd && - !m_pShareData->m_Common.m_sTabBar.m_bDispTabWndMultiWin && - m_pShareData->m_Common.m_sTabBar.m_bTab_RetainEmptyWin + m_pShareData->m_Common.m_sTabBar.m_bDispTabWnd && + !m_pShareData->m_Common.m_sTabBar.m_bDispTabWndMultiWin && + m_pShareData->m_Common.m_sTabBar.m_bTab_RetainEmptyWin ){ // 自グループ内の残ウィンドウ数を調べる // 2007.06.20 ryoji int nGroup = CAppNodeManager::getInstance()->GetEditNode( GetHwnd() )->GetGroup(); @@ -1587,7 +1587,6 @@ LRESULT CEditWnd::DispatchEvent( true ); } - } } ::DestroyWindow( hwnd ); } From f37af1664b54214c520bb40ec3e977ba23ac989b Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 16:50:12 +0900 Subject: [PATCH 6/9] =?UTF-8?q?SonarQube=E6=8C=87=E6=91=98=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20Make=20the=20type=20of=20this=20variable=20a=20poin?= =?UTF-8?q?ter-to-const.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/env/CShareData.cpp | 2 +- sakura_core/window/CEditWnd.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sakura_core/env/CShareData.cpp b/sakura_core/env/CShareData.cpp index e5dea37f5a..a77ca6e39b 100644 --- a/sakura_core/env/CShareData.cpp +++ b/sakura_core/env/CShareData.cpp @@ -1137,7 +1137,7 @@ int CShareData::GetMacroFilename( int idx, WCHAR *pszPath, int nBufLen ) // 相対パス→絶対パス const auto nFolderSep = AddLastChar( m_pShareData->m_Common.m_sMacro.m_szMACROFOLDER, std::size(m_pShareData->m_Common.m_sMacro.m_szMACROFOLDER), L'\\' ); int nAllLen; - WCHAR *pszDir; + LPCWSTR pszDir = nullptr; WCHAR szDir[_MAX_PATH + SFilePath::size()]; // 2003.06.24 Moca フォルダーも相対パスなら実行ファイルからのパス diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index a9c24d1193..4e5113e7c8 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -805,8 +805,9 @@ void CEditWnd::LayoutMainMenu() { WCHAR szLabel[300]; WCHAR szKey[10]; - CommonSetting_MainMenu* pcMenu = &m_pShareData->m_Common.m_sMainMenu; - CMainMenu* cMainMenu; + + const auto pcMenu = &m_pShareData->m_Common.m_sMainMenu; + HWND hWnd = GetHwnd(); HMENU hMenu; int i; @@ -818,7 +819,7 @@ void CEditWnd::LayoutMainMenu() for (i = 0; i < MAX_MAINMENU_TOP && pcMenu->m_nMenuTopIdx[i] >= 0; i++) { nCount = ( i >= MAX_MAINMENU_TOP || pcMenu->m_nMenuTopIdx[i+1] < 0 ? pcMenu->m_nMainMenuNum : pcMenu->m_nMenuTopIdx[i+1] ) - pcMenu->m_nMenuTopIdx[i]; // メニュー項目数 - cMainMenu = &pcMenu->m_cMainMenuTbl[pcMenu->m_nMenuTopIdx[i]]; + const auto cMainMenu = &pcMenu->m_cMainMenuTbl[pcMenu->m_nMenuTopIdx[i]]; switch (cMainMenu->m_nType) { case T_NODE: // ラベル未設定かつFunctionコードがありならストリングテーブルから取得 2012/10/18 syat 各国語対応 @@ -1262,9 +1263,8 @@ LRESULT CEditWnd::DispatchEvent( // ・WM_SHOWWINDOWはすべての表示切替で呼ばれるわけではないのでWM_WINDOWPOSCHANGEDで処理 // (タブグループ解除などの設定変更時はWM_SHOWWINDOWは呼ばれない) // ・即時切替だとタブ切替に干渉して元のタブに戻ってしまうことがあるので後で切り替える - WINDOWPOS* pwp; - pwp = (WINDOWPOS*)lParam; - if( pwp->flags & SWP_SHOWWINDOW ) + if (const auto pwp = (WINDOWPOS*)lParam; + pwp->flags & SWP_SHOWWINDOW) ::PostMessage( hwnd, MYWM_SHOWOWNEDPOPUPS, TRUE, 0 ); else if( pwp->flags & SWP_HIDEWINDOW ) ::PostMessage( hwnd, MYWM_SHOWOWNEDPOPUPS, FALSE, 0 ); From 6de11da8bdf90bc7b84364fdb00d1eace1143421 Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 21:38:02 +0900 Subject: [PATCH 7/9] =?UTF-8?q?SonarQube=E6=8C=87=E6=91=98=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20Use=20the=20init-statement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/window/CEditWnd.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index 4e5113e7c8..df00136f59 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -1015,8 +1015,7 @@ void CEditWnd::LayoutMiniMap( void ) void CEditWnd::EndLayoutBars( BOOL bAdjust/* = TRUE*/ ) { int nCmdShow = m_pPrintPreview? SW_HIDE: SW_SHOW; - HWND hwndToolBar = (nullptr != m_cToolbar.GetRebarHwnd())? m_cToolbar.GetRebarHwnd(): m_cToolbar.GetToolbarHwnd(); - if( nullptr != hwndToolBar ) + if (const auto hwndToolBar = (nullptr != m_cToolbar.GetRebarHwnd()) ? m_cToolbar.GetRebarHwnd() : m_cToolbar.GetToolbarHwnd()) ::ShowWindow( hwndToolBar, nCmdShow ); if( m_cStatusBar.GetStatusHwnd() ) ::ShowWindow( m_cStatusBar.GetStatusHwnd(), nCmdShow ); @@ -4593,8 +4592,7 @@ CLogicPointEx* CEditWnd::SavePhysPosOfAllView() for( int i = 0; i < NUM_OF_VIEW; ++i ){ CLayoutPoint tmp = CLayoutPoint(CLayoutInt(0), GetView(i).m_pcTextArea->GetViewTopLine()); - const CLayout* layoutLine = GetDocument()->m_cLayoutMgr.SearchLineByLayoutY(tmp.GetY2()); - if( layoutLine ){ + if (const auto layoutLine = GetDocument()->m_cLayoutMgr.SearchLineByLayoutY(tmp.GetY2())) { CLogicInt nLineCenter = layoutLine->GetLogicOffset() + layoutLine->GetLengthWithoutEOL() / 2; pptPosArray[i * NUM_OF_POS + 0].x = nLineCenter; pptPosArray[i * NUM_OF_POS + 0].y = layoutLine->GetLogicLineNo(); @@ -4781,8 +4779,7 @@ const LOGFONT& CEditWnd::GetLogfont(bool bTempSetting) if( bTempSetting && GetDocument()->m_blfCurTemp ){ return GetDocument()->m_lfCur; } - bool bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont; - if( bUseTypeFont ){ + if (const auto bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont) { return GetDocument()->m_cDocType.GetDocumentAttribute().m_lf; } return m_pShareData->m_Common.m_sView.m_lf; @@ -4793,8 +4790,7 @@ int CEditWnd::GetFontPointSize(bool bTempSetting) if( bTempSetting && GetDocument()->m_blfCurTemp ){ return GetDocument()->m_nPointSizeCur; } - bool bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont; - if( bUseTypeFont ){ + if (const auto bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont) { return GetDocument()->m_cDocType.GetDocumentAttribute().m_nPointSize; } return m_pShareData->m_Common.m_sView.m_nPointSize; @@ -4804,8 +4800,7 @@ ECharWidthCacheMode CEditWnd::GetLogfontCacheMode() if( GetDocument()->m_blfCurTemp ){ return CWM_CACHE_LOCAL; } - bool bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont; - if( bUseTypeFont ){ + if (const auto bUseTypeFont = GetDocument()->m_cDocType.GetDocumentAttribute().m_bUseTypeFont) { return CWM_CACHE_LOCAL; } return CWM_CACHE_SHARE; From aa2b2222205f5231ed968c33f6b938f3a710d0d5 Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 21:13:37 +0900 Subject: [PATCH 8/9] =?UTF-8?q?SonarQube=E6=8C=87=E6=91=98=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20Declare=20the=20variable=20"i"=20inside=20the=20loo?= =?UTF-8?q?p.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/window/CEditWnd.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/sakura_core/window/CEditWnd.cpp b/sakura_core/window/CEditWnd.cpp index df00136f59..320ae57ff6 100644 --- a/sakura_core/window/CEditWnd.cpp +++ b/sakura_core/window/CEditWnd.cpp @@ -809,14 +809,13 @@ void CEditWnd::LayoutMainMenu() const auto pcMenu = &m_pShareData->m_Common.m_sMainMenu; HWND hWnd = GetHwnd(); - HMENU hMenu; - int i; int j; int nCount; LPCWSTR pszName; - hMenu = ::CreateMenu(); - for (i = 0; i < MAX_MAINMENU_TOP && pcMenu->m_nMenuTopIdx[i] >= 0; i++) { + const auto hMenu = ::CreateMenu(); + + for (int i = 0; i < MAX_MAINMENU_TOP && pcMenu->m_nMenuTopIdx[i] >= 0; i++) { nCount = ( i >= MAX_MAINMENU_TOP || pcMenu->m_nMenuTopIdx[i+1] < 0 ? pcMenu->m_nMainMenuNum : pcMenu->m_nMenuTopIdx[i+1] ) - pcMenu->m_nMenuTopIdx[i]; // メニュー項目数 const auto cMainMenu = &pcMenu->m_cMainMenuTbl[pcMenu->m_nMenuTopIdx[i]]; @@ -3104,7 +3103,7 @@ LRESULT CEditWnd::OnSize2( WPARAM wParam, LPARAM lParam, bool bUpdateStatus ) int nBdrWidth = ::GetSystemMetrics(SM_CXSIZEFRAME) + ::GetSystemMetrics(SM_CXEDGE) * 2; // 境界の幅 SIZE sz; HDC hdc; - int i; + // 2004-02-28 yasu // 正確な幅を計算するために、表示フォントを取得してhdcに選択させる。 hdc = ::GetDC( m_cStatusBar.GetStatusHwnd() ); @@ -3117,7 +3116,7 @@ LRESULT CEditWnd::OnSize2( WPARAM wParam, LPARAM lParam, bool bUpdateStatus ) if( wParam != SIZE_MAXIMIZED ){ nStArr[nStArrNum - 1] -= nSbxWidth; } - for( i = nStArrNum - 1; i > 0; i-- ){ + for (int i = nStArrNum - 1; i > 0; --i) { ::GetTextExtentPoint32W(hdc, PSZ_ARGS(pszLabel[i]), &sz); nStArr[i - 1] = nStArr[i] - ( sz.cx + nBdrWidth ); } @@ -4400,10 +4399,9 @@ void CEditWnd::SetActivePane( int nIndex ) */ bool CEditWnd::SetDrawSwitchOfAllViews( bool bDraw ) { - int i; bool bDrawSwitchOld = GetActiveView().GetDrawSwitch(); - for( i = 0; i < GetAllViewCount(); i++ ){ + for (int i = 0; i < GetAllViewCount(); ++i) { GetView(i).SetDrawSwitch( bDraw ); } m_cMiniMapView.SetDrawSwitch( bDraw ); @@ -4420,11 +4418,8 @@ bool CEditWnd::SetDrawSwitchOfAllViews( bool bDraw ) */ void CEditWnd::RedrawAllViews( CEditView* pcViewExclude ) { - int i; - CEditView* pcView; - - for( i = 0; i < GetAllViewCount(); i++ ){ - pcView = &GetView(i); + for (int i = 0; i < GetAllViewCount(); ++i) { + const auto pcView = &GetView(i); if( pcView == pcViewExclude ) continue; if( i == m_nActivePaneIndex ){ From 5423dee50f4293b8180820ac7ab6e6eac6ac7fbb Mon Sep 17 00:00:00 2001 From: berryzplus Date: Wed, 22 Jul 2026 21:14:27 +0900 Subject: [PATCH 9/9] =?UTF-8?q?SonarQube=E6=8C=87=E6=91=98=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=20Make=20sure=20use=20of=20"wcscpy"=20is=20safe=20her?= =?UTF-8?q?e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sakura_core/env/CShareData.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sakura_core/env/CShareData.cpp b/sakura_core/env/CShareData.cpp index a77ca6e39b..b391b92cbf 100644 --- a/sakura_core/env/CShareData.cpp +++ b/sakura_core/env/CShareData.cpp @@ -1130,7 +1130,7 @@ int CShareData::GetMacroFilename( int idx, WCHAR *pszPath, int nBufLen ) if( pszPath == nullptr || nBufLen <= nLen ){ return -nLen; } - wcscpy( pszPath, pszFile ); + ::wcscpy_s(pszPath, nBufLen, pszFile); return nLen; } else { // フォルダー指定あり @@ -1155,12 +1155,14 @@ int CShareData::GetMacroFilename( int idx, WCHAR *pszPath, int nBufLen ) return -nAllLen; } - wcscpy( pszPath, pszDir ); - WCHAR *ptr2 = pszPath + nDirLen; + ::wcsncpy_s(pszPath, nBufLen, pszDir, nDirLen); + if( -1 == nFolderSep ){ - *ptr2++ = L'\\'; + ::wcscat_s(pszPath, nBufLen, L"\\"); } - wcscpy( ptr2, pszFile ); + + ::wcscat_s(pszPath, nBufLen, pszFile); + return nAllLen; } }