適当にフォークして変更、プルリクエストしてください。
- 変更部分はローカルマシンでざっと動作確認お願いします。
- 可能なら @7474 が分かりやすい単位でお願いします。
- 作業が被ると哀しいので、IssueやTwitterでこの辺やりますと事前に声掛けしていただけるとよいと思います。
- プルリクエストは CI(必須チェック
ci-passed)が通るとマージできます。どのテストを足せばよいかは テストと CI の設計 を参照してください。
フロントエンドには階層があります(判断の記録)。新しい機能は推奨の SRC#Web・SRC#Avalonia(SRCRender)を先に対応してください。SRC#Form に対応していなくても受け付けます。
SRCSharpForm(SRC#Form)は維持の階層で、SRC2.2の機能を動作させることを目標としています。 重大な不具合と、元の SRC との互換性に関わる不具合の修正は歓迎します。 2.3以降(特に新GUI)の機能や、新規の機能はリジェクトするかもしれません。 その辺りは特に事前に声掛けしていただけるとよいと思います。
docs/の各ドキュメントには現状だけを書きます。経緯や判断の理由は 判断の記録 に、過去の計画・調査は 履歴 に分けます。- 一覧は docs/README.md にあります。
本ドキュメント内容は予告なく変更される場合があります。
SRC# は元の SRC(VB5。SRC/SRC_20121125)を C# に移植したものです(移植は完了しています。移植の記録)。コードには移植の名残があり、次の規約で書いています。
- 元の SRC の動作を仕様とする。動作を確かめるときは
SRC/SRC_20121125の該当するコードと照らし合わせる - VB のモジュール(static な空間)は、C# ではインスタンスにする
- 実行環境に依存する処理(画面・入力・音声・ファイルの選択など)は
SRCCoreに入れず、GUI のプロジェクト(SRCRender・SRCSharpFormなど)に実装する。SRCCoreからはIGUIなどのインタフェースを通して呼ぶ - VB の
Integer(16 ビット)はintにする - 座標は 15 Twip = 1 ピクセルで換算する
- VB で Double を Integer・Long に代入する箇所は銀行丸め(偶数丸め)になる。C# の
(int)キャスト(切り捨て)ではなく、SRCCore/VB/VBMath.cs・SRCCore/VB/Conversions.csの関数(VBMath.CLngなど)を使う。VB のInt関数はVBMath.Int、Fix関数はVBMath.Fix、実数の\はVBMath.IntDivを使う - SRCCore には、移植で起きやすい誤りを見つけるアナライザー(SRCPortingAnalyzers)を付けている。実数から整数への
(int)・(long)(SRCP001)と、括弧の無い&&・||の混在(SRCP002)はビルドのエラーになる
元の SRC と動作が違う箇所を見つけたら、元の SRC の動作を期待値にしたテストを SRC.Sharp/SRCCoreTests に書いて直します。すぐに直せない場合は、そのテストに [Ignore("移植の不具合: <概要>")] を付けて残します(grep -rn 'Ignore("移植の不具合' SRC.Sharp/SRCCoreTests で一覧できます)。