JPCERT コーディネーションセンター

安全・安心なIT社会のための、国内・国際連携を支援する

お問い合わせ サイトマップ English

Home > ラーニング > セキュアコーディング > CERT セキュアコーディングスタンダード > 02. 宣言と初期化 (DCL)

  1. HTTPS

02. 宣言と初期化 (DCL)

最終更新: 2009-09-29

DCL02-C. 視覚的に区別できる識別子を使う

視覚的に区別できる識別子を使い、開発中やコードレビューの際に識別子の綴りを見間違えることによって引き起こされるエラーを無くすこと。識別子は、オブジェクト、関数、構造体、共用体、列挙体のタグまたはメンバ、typedef 名、ラベル名、マクロ名、マクロ引数、などを示す。

使用されるフォントによっては、ある種の文字は視覚的によく似ていたり、全く同じ場合さえある。

  • 1 (数字の1) と l (英小文字の l)
  • 0 (数字のゼロ) と O (英大文字の O)
  • 2 (数字の2) と Z (英大文字の Z)
  • 5 (数字の5) と S (英大文字の S)
  • 8 (数字の8) と B (英大文字の B)

ひとつかそこいらの視覚的によく似た文字だけ異なるような識別子を複数定義しないこと。

長い識別子の最初の部分を一意かつ見分けやすいようにしてやること。こうすることで、一意でない識別子が引き起こす問題を回避することにもつながる。(「DCL32-C. 相互に可視である識別子が一意であることを保証する」を参照。)

リスク評価

視覚的に区別できる識別子を使用しないと、間違った変数が使用されたり、予期せぬプログラムの動作を引き起こす可能性がある。

レコメンデーション 深刻度 可能性 修正コスト 優先度 レベル
DCL02-C P2 L3
自動検出

Compass/ROSE はこのレコメンデーションの違反を検出できる。

参考情報
  • [ISO/IEC 9899:1999] Section 5.2.4.1, "Translation limits"
  • [ISO/IEC PDTR 24772] "AJN Choice of Filenames and other External Identifiers," "BRS Leveraging human experience," and "NAI Choice of Clear Names"
  • [MISRA 04] Rule 5.6
翻訳元

DCL02-C. Use visually distinct identifiers

Top へ