GitHubでこのページを編集

Home / 5 / ucmitz / regulation / マイグレーションルール

マイグレーションルール

既存コードの移植について

基本的には、テストも含めてbaserCMS4の既存コードを配置し、動作するように改修を加えていきます。

移行時に動作に影響があるファイルの対処

一旦、baserCMS4のコードをそのままこのプロジェクトに配置しています。動作に支障をきたすファイルについて、一時的に次のような対処を行っています。

未移行ディレクトリ(_NotYetMigrated)へ移動

名前空間などへの移行が完了していないクラスについて、各配置フォルダ直下に _NotYetMigrated ディレクトリを作成し、その中に移動しています。
_NotYetMigrated 内のクラスを移行する際は、差分がわかるように、一度、あるべき位置に配置して一度コミットしてから修正作業を行ってください。

予備ファイル

baserCM4 から ucmitz にファイルを移行する際、そのままのファイル名で上書きすると ucmitz の動作に影響しそうなものは、ファイル名の末尾に「-4」を追加しています。
このファイルは移行対象との差分を確認し、マージを行った後に削除が必要です。

bootstrap.php → bootstrap-4.php

未チェッククラス

クラスで未チェックのものは、ファイルの冒頭に次のコードを記述し動作に影響がないようにしています。チェックをする際には、該当行を削除してください。

// TODO コード確認要
return;

TODO の記録

チェック時、参照しているクラスメソッドが未実装である場合など、完全な動作確認ができない場合があります。その際は、TODOコメントを必ず記載してください。
その際、ucmitz への移行においての残タスクとして、 TODO ucmitz 記載します。
また、コメントについては他の人が見てもわかるようにしてください。

なお、既存のコードをコメントアウトする場合は、範囲を指定するようにしてください。

部分的に動作しないのでコメントアウトしたい場合

// TODO ucmitz 未実装のためコメントアウト
/* >>>
$hoge = 1;
$hoge = 2;
<<< */
メソッドの冒頭部で代替措置を記述する場合

// TODO ucmitz 未実装のため代替措置
// >>>
$request = $this->_View->getRequest();
if ($request->getParam('action') === 'login') {
    return 'AdminUsersLogin';
} else {
    return 'Admin';
}
// <<<

$options = array_merge([    // 本来であればここからスタートだが代替措置で return されているため実行されない
    'home' => 'Home',
    'default' => 'Default',
    'error' => 'Error',
    'underscore' => false
], $options);

コード移行時のマーキング

クラスメソッドやビューファイルの移行実装時、および新規ファイル追加時には、ヘッダーコメントにアノテーションでマーキングをします。

@checked : コードの精査が完了している
@noTodo : Todo が発生しない
@unitTest : unitTest が実装済である

これにより進捗管理表に自動反映し、進捗状況をわかるようにしています。

なお、クラスの冒頭にアノテーションのインポートが必要となりますので忘れないようにしてください。

use BaserCore\Annotation\UnitTest;
use BaserCore\Annotation\NoTodo;
use BaserCore\Annotation\Checked;

 
マーキングの例

// 例)
use BaserCore\Annotation\UnitTest;
use BaserCore\Annotation\NoTodo;
use BaserCore\Annotation\Checked;

class BcBaserHelper extends Cake\View\Helper 
{
    /**
     * コンテンツを特定する文字列を出力する
     *
     * URL を元に、第一階層までの文字列をキャメルケースで取得する
     * ※ 利用例、出力例については BcBaserHelper::getContentsName() を参照
     *
     * @param bool $detail 詳細モード true にした場合は、ページごとに一意となる文字列をキャメルケースで出力する(初期値 : false)
     * @param array $options オプション(初期値 : array())
     *    ※ オプションの詳細については、BcBaserHelper::getContentsName() を参照
     * @return void
     * @checked
     * @noTodo
     */

なお、 ucmitz 進行管理に、メモを反映したい場合には、 Note アノテーションが利用できます。

// 例
use BaserCore\Annotation\Note;

class BcBaserHelper extends Cake\View\Helper 
{
    /**
     * Contents Before Move
     *
     * @note(value="固定ページを実装するまではTODO消化できない")
     */

  

ユニットテストについて

移植のタイミングで存在しないテストは必ず追加します。また、新しいメソッドについても必ずテストを追加してください。
その際、テストの実装が間に合わない場合は、 markTestIncomplete() を記載しておいてください。その際、アノテーションで、@unitTest を付けてはいけません。

$this->markTestIncomplete('Not implemented yet.');