Tíquete #39229

Win版 コード分析対応

: 2019-05-08 00:06 Última Atualização: 2019-05-12 11:08

Relator:
Dono:
Tipo:
Estado:
Fechado
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
Nenhum

Details

Visual Studio 2017のコード分析で抽出された問題を修正する。

Ticket History (3/6 Histories)

2019-05-08 00:06 Updated by: yknk
  • New Ticket "Win版 コード分析対応" created
2019-05-08 00:07 Updated by: yknk
Comentário

対策 1:ローカル変数初期化漏れ

ローカル変数の初期化漏れが多数検出された。初期化漏れの事例は以下の通り。

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*=

2019-05-08 00:09 Updated by: yknk
Comentário

対策 1:ローカル変数初期化漏れ(続き)

grep結果は以下の通り。変数単位で初期化するように修正した。

DXColorUtil.cpp(36): 	float cr, cg, cb, alpha = 0.0f;
DXColorUtil.cpp(72): 	long cr, cg, cb = 0;
MTDashboard.cpp(249): 	unsigned long cw, ch = 0;
MTDashboard.cpp(250): 	unsigned long tw, th = 0;
MTDashboard.cpp(251): 	unsigned long charHeight, charWidth = 0;
MTDashboardLive.cpp(160): 	unsigned long cw, ch = 0;
MTDashboardLive.cpp(161): 	unsigned long tw, th = 0;
MTDashboardLive.cpp(162): 	unsigned long charHeight, charWidth = 0;
MTFirstPersonCam.cpp(204): 	int dX, dY, dW = 0;
MTFirstPersonCam.cpp(570): 	int wh, ww = 0;
MTFirstPersonCam.cpp(571): 	int ch, cw = 0;
MTFontTexture.cpp(83): 	DWORD x, y = 0;
MTGridBox.cpp(397): 	unsigned long i, j = 0;
MTNoteDesign.cpp(206): 	float bh, bw = 0.0f;
MTNoteDesign.cpp(237): 	float bh, bw = 0.0f;
MTNoteDesign.cpp(272): 	float bh, bw = 0.0f;
MTNoteDesign.cpp(301): 	float x, bh, bw = 0.0f;
MTNoteDesign.cpp(336): 	float x, bh, bw = 0.0f;
MTNoteDesign.cpp(565): 	float r,g,b,a = 0.0f;
MTNoteRipple.cpp(403): 	float rh, rw = 0.0f;
MTPianoKeyboard.cpp(1718): 	float centerY, centerZ = 0.0f;
MTPianoKeyboardDesign.cpp(639): 	float r,g,b,a = 0.0f;
MTPianoKeyboardDesign.cpp(895): 	float ox, oy, oz = 0.0f;

2019-05-08 00:09 Updated by: yknk
Comentário

対策 1:ローカル変数初期化漏れ(続き)

grep結果の続き。

MTScenePianoRoll3D.cpp(494): 	float phi, theta = 0.0f;
MTScenePianoRoll3D.cpp(534): 	float phi, theta = 0.0f;
MTScenePianoRoll3D.cpp(571): 	float phi, theta = 0.0f;
MTScenePianoRoll3D.cpp(797): 	float x, y, z = 0.0f;
MTScenePianoRoll3D.cpp(798): 	float phi, theta = 0.0f;
MTScenePianoRoll3DLive.cpp(474): 	float phi, theta = 0.0f;
MTScenePianoRoll3DLive.cpp(514): 	float phi, theta = 0.0f;
MTScenePianoRoll3DLive.cpp(551): 	float phi, theta = 0.0f;
MTScenePianoRoll3DLive.cpp(732): 	float x, y, z = 0.0f;
MTScenePianoRoll3DLive.cpp(733): 	float phi, theta = 0.0f;
MTScenePianoRollRain.cpp(460): 	float phi, theta = 0.0f;
MTScenePianoRollRain.cpp(489): 	float phi, theta = 0.0f;
MTScenePianoRollRain.cpp(527): 	float phi, theta = 0.0f;
MTScenePianoRollRain.cpp(755): 	float x, y, z = 0.0f;
MTScenePianoRollRain.cpp(756): 	float phi, theta = 0.0f;
MTScenePianoRollRain2D.cpp(66): 	float phi, theta = 0.0f;
MTScenePianoRollRain2DLive.cpp(66): 	float phi, theta = 0.0f;
MTScenePianoRollRainLive.cpp(442): 	float phi, theta = 0.0f;
MTScenePianoRollRainLive.cpp(471): 	float phi, theta = 0.0f;
MTScenePianoRollRainLive.cpp(509): 	float phi, theta = 0.0f;
MTScenePianoRollRainLive.cpp(692): 	float x, y, z = 0.0f;
MTScenePianoRollRainLive.cpp(693): 	float phi, theta = 0.0f;
MTStars.cpp(158): 	float x, y, z = 0.0f;
MTStars.cpp(159): 	float cr, cg, cb = 0.0f;

2019-05-08 00:10 Updated by: yknk
Comentário

対策 2:判定文の記述ミス

いずれも動作不良を引き起こすものではないが、修正する。

DXRenderer::_RecoverDevice

修正前:else if (D3DERR_DRIVERINTERNALERROR) {
修正後:else if (hresult == D3DERR_DRIVERINTERNALERROR) {

MTWindowSizeCfgDlg::_GetConfWindowSize

修正前:if ((pHeight == NULL) || (pHeight == NULL)) {
修正後:if ((pWidth == NULL) || (pHeight == NULL)) {
2019-05-12 11:08 Updated by: yknk
  • Resolução Update from Nenhum to Fixed
  • Estado Update from Aberto to Fechado

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Login