macOS版 コード分析対応
ローカル変数の初期化漏れが多数検出された。初期化漏れの事例は以下の通り。
float x, y, z = 0.0f;この場合zは0.0fで初期化されるが、x,yは初期化されないままとなる。 以下のように、変数ごとに初期化しなければならない。
float x = 0.0f; float y = 0.0f; float z = 0.0f;メソッド内でローカル変数に必ず値を設定しているため、動作上問題は発生しないが、 修正しておく。
初期化漏れを洗い出すために、以下の正規表現でgrepした。
,\s*[a-zA_Z0-9]+\s*=
grep結果は以下の通り。変数単位で初期化するように修正した。
MTDashboard.mm(250)[_GetCounterPos]: unsigned int cw, ch = 0; MTDashboard.mm(251)[_GetCounterPos]: unsigned int tw, th = 0; MTDashboardLive.mm(168)[_GetCounterPos]: unsigned int cw, ch = 0; MTDashboardLive.mm(169)[_GetCounterPos]: unsigned int tw, th = 0; MTGridBox.mm(390)[_CreateVertexOfPortSplitLine]: unsigned int i, j = 0; MTNoteDesign.mm(206)[GetNoteBoxVirtexPos]: float bh, bw = 0.0f; MTNoteDesign.mm(237)[GetActiveNoteBoxVirtexPos]: float bh, bw = 0.0f; MTNoteDesign.mm(272)[GetNoteBoxVirtexPosLive]: float bh, bw = 0.0f; MTNoteDesign.mm(301)[GetGridBoxVirtexPos]: float x, bh, bw = 0.0f; MTNoteDesign.mm(336)[GetGridBoxVirtexPosLive]: float x, bh, bw = 0.0f; MTNoteDesign.mm(568)[GetActiveNoteBoxColor]: float r,g,b,a = 0.0f; MTNoteRipple.mm(372)[_SetVertexPosition]: float rh, rw = 0.0f; MTPianoKeyboard.mm(1705)[_RotateKey]: float centerY, centerZ = 0.0f; MTPianoKeyboardDesign.mm(653)[GetActiveKeyColor]: float r,g,b,a = 0.0f; MTPianoKeyboardDesign.mm(911)[GetKeyboardBasePos]: float ox, oy, oz = 0.0f;
grep結果の続き。
MTScenePianoRoll3D.mm(496)[GetDefaultViewParam]: float phi, theta = 0.0f; MTScenePianoRoll3D.mm(536)[GetViewParam]: float phi, theta = 0.0f; MTScenePianoRoll3D.mm(767)[_LoadConfViewpoint]: float x, y, z = 0.0f; MTScenePianoRoll3D.mm(768)[_LoadConfViewpoint]: float phi, theta = 0.0f; MTScenePianoRoll3DLive.mm(474)[GetDefaultViewParam]: float phi, theta = 0.0f; MTScenePianoRoll3DLive.mm(514)[GetViewParam]: float phi, theta = 0.0f; MTScenePianoRoll3DLive.mm(732)[_LoadConfViewpoint]: float x, y, z = 0.0f; MTScenePianoRoll3DLive.mm(733)[_LoadConfViewpoint]: float phi, theta = 0.0f; MTScenePianoRollRain.mm(472)[GetDefaultViewParam]: float phi, theta = 0.0f; MTScenePianoRollRain.mm(501)[GetViewParam]: float phi, theta = 0.0f; MTScenePianoRollRain.mm(735)[_LoadConfViewpoint]: float x, y, z = 0.0f; MTScenePianoRollRain.mm(736)[_LoadConfViewpoint]: float phi, theta = 0.0f; MTScenePianoRollRain2D.mm(65)[GetDefaultViewParam]: float phi, theta = 0.0f; MTScenePianoRollRain2DLive.mm(65)[GetDefaultViewParam]: float phi, theta = 0.0f; MTScenePianoRollRainLive.mm(447)[GetDefaultViewParam]: float phi, theta = 0.0f; MTScenePianoRollRainLive.mm(476)[GetViewParam]: float phi, theta = 0.0f; MTScenePianoRollRainLive.mm(697)[_LoadConfViewpoint]: float x, y, z = 0.0f; MTScenePianoRollRainLive.mm(698)[_LoadConfViewpoint]: float phi, theta = 0.0f; MTStars.mm(152)[_CreateVertexOfStars]: float x, y, z = 0.0f; MTStars.mm(153)[_CreateVertexOfStars]: float cr, cg, cb = 0.0f;
Windows版のコード分析で抽出された問題を修正する。
参考チケット