Skip to content

移植の精度: VB 版と C# をコードの手続き単位で突き合わせる #1498

Open
7 of 7 issues completed

Description

@7474

目的

VB 版(SRC/SRC_20121125)の手続き(Function・Sub・Property)を、対応する C# のメソッドと 1 つずつ突き合わせます。分岐の漏れ・条件の誤り・コメントアウトのまま残った処理を見つけて直します。

VB 版を実行して期待値にするのは難しいので、コードを正とします。

規模と対象

  • VB 版は、*.bas・*.cls・*.frm の 68 本に 1,333 の手続き、約 129,000 行があります。すべての手続きを対象にしていて、選んで外した手続きはありません。
  • 大きいのは Unit.cls(276)、CmdData.cls(195)、GUI.bas(71)、Pilot.cls(67)、Command.bas(52)です。
  • 手続きの外にあるもの(変数の宣言・Const・Type・Enum・.frm の画面の定義)は表に載りません。下の「進め方」の 5 と、チェックリストの最後の 2 項目で扱います。

進め方

手順と状態の書き方は 対応表の説明 にあります。

  1. 対応表(docs/history/porting/vb-map/)
    • python3 tools/vb_port_map.py で作ります。
    • VB の手続きごとに、C# の候補・状態・メモを書きます。
    • CI(port-map-check)で、すべての手続きが表にあることと状態の書き方を確かめます。
  2. 手続きごとに突き合わせる
    • 分岐ごとに同じかを確かめます。
    • 違いは、VB の動作を期待値にしたテストにして直します(docs/decisions/2026-10-15-vb-behavior-as-test-oracle.md)。
    • 表の「状態」と「メモ」を書きます。
  3. TODO とコメントアウトの判断: その手続きに当たる SRCCore の TODO・XXX・コメントアウトされたコード(todo.md)を判断します。
  4. 規則を足す: 機械で見つけられる型の誤りなら、SRCPortingAnalyzers に規則を足します。
  5. 表に載っていないもの: 手続きの外の変数の宣言(型)・Const・Type・Enum・.frm の画面の定義は表に載りません。そのモジュールを突き合わせるときに一緒に見ます(対応表の説明の「表に載っていないもの」)。
  6. 元の SRC のコンパイルの設定: SRC.VBP は BoundsCheck=-1・OverflowCheck=-1・FlPointCheck=-1 で、配列の範囲チェック・整数のオーバーフローチェック・浮動小数点のエラーのチェックをしない設定と読めます。

Issue を増やしすぎないために

  • 突き合わせの単位は、下のチェックリストの 1 項目を 1 つの PR にします。
  • サブ Issue は、リスクの高い先頭の 7 つだけにしました。残りは、着手するときにサブ Issue にするか、このチェックリストのまま PR で閉じます。
  • 見つかった違いは、同じ PR で直すなら Issue にしません。表の「メモ」に PR の番号を書きます。
  • 同じ PR で直せないものだけを Issue にします。
  • あとの単位で扱う手がかりは、その手続きの行の「メモ」に書きます(状態は「未確認」のまま)。

突き合わせの単位(リスクの高い順。docs/decisions/2026-10-31-regression-first-qa-plan.md のカバレッジと変更の多さから)

進み具合(#1537 の時点)

完了の条件

  • 対応表のすべての手続きの「状態」が「未確認」でない(確かめた・C# に無い理由・SRC# で不要な理由)
  • チェックリストの最後の 2 項目(画面の定義・モジュールの宣言)を見終えている
  • 見つかった違いが直っているか、Issue になっている

Activity

  1. 19 remaining items

  2. added 15 commits that reference this issue on Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions