travis-ci.orgからtravis-ci.comへの移行

2021年6月15日以降、travis-ci.org でのビルドが停止したようですので、 travis-ci.org でビルドしていた公開リポジトリを travis-ci.com へ移行しました。

travis-ci.com へGitHubでサインインします。

右上のアイコンから「Settings」へ移動します。

「Merge」タブへ移動します。 「Activate all repositores using GitHub Apps」ボタンをクリックします。

移行するリポジトリを選択します。 「Approve & Install」ボタンをクリックします。

完了後、移動しようとすると何故かログアウトされたので、再度、GitHubでサインインしました。

「Settings」→「Merge」タブを見ると、ベータにサインアップする必要があると表示されています。 「Sign up for the beta」ボタンをクリックします。

確認のウインドウが表示されます。 「Join the beta」ボタンをクリックします。

「Settings」→「Merge」タブに戻り、移行するリポジトリを選択します。 「Migrate selected repositories to travis-ci.com」ボタンをクリックします。

確認のウインドウが表示されます。 「Migrate」ボタンをクリックします。

これで、リポジトリが travis-ci.com に移行されました。

参考

Tags: continuous-integration

最近のPHPDocでの型の書き方

最近のPHPDocでの型の書き方が覚えられないので、まとめておきます。

配列

キーと値の型

キーがTKey、値がTValue

/**
 * @param array<TKey, TValue> $array
 */

キーがint、値がstring

/**
 * @param array<int, string> $array
 */

オブジェクトっぽい配列

以下の配列の場合、

$array = ["hello", "world", "foo" => new stdClass, 28 => false];

以下のように書きます。

/**
 * @param array{0: string, 1: string, foo: stdClass, 28: false} $array
 */

オプションのキーには?を最後に付けます。

/**
 * @param array{optional?: string, bar: int} $array
 */

スカラー

配列のキー

array-keyintstringのスーパータイプです。

/**
 * @param array-key $key
 */

正の整数

/**
 * @param positive-int $positiveInt
 */

クラス文字列

/**
 * @param class-string $classname
 */

型を指定することもできます。

/**
 * @param class-string<A> $classname
 */

callable文字列

/**
 * @param callable-string $callable
 */

参考

Tags: php

PHP静的解析でのエラーの抑制

静的解析でのエラーの抑制方法をすぐに忘れてしまうので、まとめておきます。

PHP_CodeSniffer

複数行

// phpcs:disable Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed
...
...
// phpcs:enable

1行

// phpcs:ignore Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed
$foo = [1,2,3];
$foo = [1,2,3]; // phpcs:ignore Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed

PHPMD

/**
 * @SuppressWarnings(PHPMD.UnusedLocalVariable)
 */

PHPStan

1行

// @phpstan-ignore-next-line
echo $foo;
echo $foo; // @phpstan-ignore-line

Psalm

/**
 * @psalm-suppress InvalidReturnType
 */

PHPUnit

静的解析ではありませんが、カバレッジ対象から除外する場合。

ブロック

/**
 * @codeCoverageIgnore
 */

複数行

// @codeCoverageIgnoreStart
print '*';
// @codeCoverageIgnoreEnd

1行

exit; // @codeCoverageIgnore

Tags: php