このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
未変更の変数に const 修飾子が付いていません
const
修飾されていない変数の値が存続期間中に変更されない
説明
この欠陥は、ローカル変数または関数パラメーターが const
修飾されておらず、変数またはパラメーターの存続期間中に以下のいずれかの状況が当てはまる場合に発生します。
初期化後に変数に対する書き込みを行なっておらず、また、関数本体内のどこでもパラメーターへの書き込みを行っていない。
書き込み操作を行った場合は、同じ定数値を変数またはパラメーターに再代入している。
チェッカーは、変数のアドレスが、ポインターまたは参照に割り当てられたり (それが変数 const
へのポインターまたは参照ではない場合)、他の関数に渡されたり、それ以外に使用されたりした場合に、その変数を変更されたものと見なします。このような状況では、チェッカーが const
修飾子の追加を提案しません。
チェッカーは、初期化後に配列要素に対する書き込み操作がまったく行われなかった場合にのみ、const
修飾の候補として配列にフラグを設定します。
リスク
変数を const
修飾することによって、後のコード保守期間での意図しない変数の変更が回避されます。const
修飾子は、残りのコードでも変数の初期値が保持されることを開発者に示すことにもなります。
修正方法
存続期間を通して変数値の変更を想定しない場合は、const
修飾子を変数宣言に追加し、宣言時に変数を初期化します。
変数の変更を想定する場合は、変更が行われなかった場合に実行されなかったプログラミングがないかを確認し、問題があれば修正します。
例
結果情報
グループ: 適切な手法 |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: UNMODIFIED_VAR_NOT_CONST |
影響度: Low |