iOS版 コード分析対応
ローカル変数の初期化漏れが多数検出された。初期化漏れの事例は以下の通り。
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結果は以下の通り。変数単位で初期化するように修正した。
MIDITrail/MTDashboard.mm(301)[_GetCounterPos]: unsigned int cw, ch = 0; MIDITrail/MTDashboard.mm(302)[_GetCounterPos]: unsigned int tw, th = 0; MIDITrail/MTDashboard.mm(355)[_GetCounterFPSPos]: unsigned int cw, ch = 0; MIDITrail/MTDashboard.mm(356)[_GetCounterFPSPos]: unsigned int tw, th = 0; MIDITrail/MTDashboardLive.mm(205)[_GetCounterPos]: unsigned int cw, ch = 0; MIDITrail/MTDashboardLive.mm(206)[_GetCounterPos]: unsigned int tw, th = 0; MIDITrail/MTDashboardLive.mm(259)[_GetCounterFPSPos]: unsigned int cw, ch = 0; MIDITrail/MTDashboardLive.mm(260)[_GetCounterFPSPos]: unsigned int tw, th = 0; MIDITrail/MTGridBox.mm(390)[_CreateVertexOfPortSplitLine]: unsigned int i, j = 0; MIDITrail/MTNoteDesign.mm(211)[GetNoteBoxVirtexPos]: float bh, bw = 0.0f; MIDITrail/MTNoteDesign.mm(242)[GetActiveNoteBoxVirtexPos]: float bh, bw = 0.0f; MIDITrail/MTNoteDesign.mm(277)[GetNoteBoxVirtexPosLive]: float bh, bw = 0.0f; MIDITrail/MTNoteDesign.mm(306)[GetGridBoxVirtexPos]: float x, bh, bw = 0.0f; MIDITrail/MTNoteDesign.mm(341)[GetGridBoxVirtexPosLive]: float x, bh, bw = 0.0f; MIDITrail/MTNoteDesign.mm(566)[GetActiveNoteBoxColor]: float r,g,b,a = 0.0f; MIDITrail/MTNoteRipple.mm(372)[_SetVertexPosition]: float rh, rw = 0.0f; MIDITrail/MTPianoKeyboard.mm(1678)[_RotateKey]: float centerY, centerZ = 0.0f; MIDITrail/MTPianoKeyboardDesign.mm(612)[GetActiveKeyColor]: float r,g,b,a = 0.0f; MIDITrail/MTPianoKeyboardDesign.mm(871)[GetKeyboardBasePos]: float ox, oy, oz = 0.0f;
grep結果の続き。
MIDITrail/MTScenePianoRoll3D.mm(550)[GetDefaultViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRoll3D.mm(590)[GetViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRoll3D.mm(904)[_LoadConfViewpoint]: float x, y, z = 0.0f; MIDITrail/MTScenePianoRoll3D.mm(905)[_LoadConfViewpoint]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRoll3DLive.mm(528)[GetDefaultViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRoll3DLive.mm(568)[GetViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRoll3DLive.mm(872)[_LoadConfViewpoint]: float x, y, z = 0.0f; MIDITrail/MTScenePianoRoll3DLive.mm(873)[_LoadConfViewpoint]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRain.mm(515)[GetDefaultViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRain.mm(544)[GetViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRain.mm(861)[_LoadConfViewpoint]: float x, y, z = 0.0f; MIDITrail/MTScenePianoRollRain.mm(862)[_LoadConfViewpoint]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRain2D.mm(65)[GetDefaultViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRain2DLive.mm(65)[GetDefaultViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRainLive.mm(491)[GetDefaultViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRainLive.mm(520)[GetViewParam]: float phi, theta = 0.0f; MIDITrail/MTScenePianoRollRainLive.mm(827)[_LoadConfViewpoint]: float x, y, z = 0.0f; MIDITrail/MTScenePianoRollRainLive.mm(828)[_LoadConfViewpoint]: float phi, theta = 0.0f; MIDITrail/MTStars.mm(159)[_CreateVertexOfStars]: float x, y, z = 0.0f; MIDITrail/MTStars.mm(160)[_CreateVertexOfStars]: float cr, cg, cb = 0.0f;
Windows版のコード分析で抽出された問題を修正する。
参考チケット