Laravelの細かい設定

この記事はphpStormでLaravel開発を行う上で気が付いたトラブル対応等の小ネタ等を記事とする内容です。

phpStrormでLaravelを用いたphpの開発を色々と勉強していますが、最初にプロジェクトを作成してGitを導入して初回コミットしようとするとエラーと警告が大量に発生します。ただ単にプロジェクトを作成しただけなのにこの状態はなんだかLaravelフレームワークの信頼を損ねる様に思います。

私の試した環境は、

  • phpStorm 2019.3
  • Laravel 5.5LTS

です。phpStorm でcomposerを用いて新しいプロジェクトを作成しています。他の環境や別のプロジェクトの作成方法では発生するパターンも違うかも知れません。

コミット時には文法チェックをしてくれる

phpStormのLaravelプロジェクトを作成しGitを導入するとコミット時とか自動で文法チェックなどが行われる様です。この機能はエラーの無いコードを管理するという意味では大きいのですが、開発途中でエラーのある状態で保存するとかには向かないかなと思います。この機能で最初のコミット時にエラーが検出されます。空のプロジェクトを作成し何も考えずに全ファイルを選択するとこんなダイアログが表示されます。

コミット時のエラー

なんと25個のファイルに36のエラーと91個の警告があると書いてあります。ただプロジェクトを作成しコミットしようとしただけなのに。

ざっと見ていくと、

  • \resources\assets\sass\app.scss
  • \public\css\app.css

に結構な数のエラーと警告が発生しています。この2個のファイルは特にユーザー側で修正する必要はありませんのでコミット対象から外して問題ないと思います。コミット時にこの2個のファイルを対象外とする事でエラーと警告が減ります。まずは上記ダイアログで「Cancel」を押してコミットを中止します。プロジェクトの一番上にある、

.gitignore

ファイルにこの2個を除外する様に追記してみます。そうすると除外されるはずなんですが….除外されません。どうもキャッシュが効いているみたいでキャッシュクリアする必要があるそうです。色々と調べたのですが、

git rm -r –cached .

phpStormのTerminal(コマンドライン)から実行すればキャッシュがクリアされる様です。キャッシュがクリアされてもphpStormの表示までは変わりませんので一度再起動する必要があります。こうするとエラーの数1個と警告だけになります。

除外ファイルを設定後

こうしてもその後のコミット時に除外ファイルがコミット対象になったりする現象が発生します。これはちょっと理由が不明なので再度調べてまとめたいと思います。しかし本当にややこしいです。

残ったエラーの対応

残った1個のエラーはこんな感じです。

\database\factories\UserFactory.php
Error:(16, 1) Undefined variable '$factory'

エラー表示の通り$factoryという変数がないというエラーです。どう考えてもまずいですよね。でもこのプログラムはLaravel内部でなにか処理をゴニョニョしているのでそのままでも問題ないみたいです。でも気持ち悪いですしこれだけの事でもLaravelの信頼性というか大丈夫なのと思ってしまいます。

このエラーの回避は、UserFactory.phpファイルに1行、

/** @var Factory $factory */

を追加する事で解決できます。これで解決できるんですが、なぜとかはまだ理解していません。これでエラーが無くなり、残りは警告だけです。出力されるログもこれでだいぶすっきりしました。

エラーが無くなった!

ひとまずこれで良しとしようかと思います。警告を調べるとHTML5の規格に合っていないとか小さな内容が主です。

文法チェックをしなければ良い!

そもそもなんですが最初からコミット時の文法チェックをしない様にすれば見なかった事にして先に進めます。コミット時にこの設定をすればいいだけです。下の図の赤枠のチェックを外せばもう大丈夫です。

文法チェックをしない

この様に深く突っ込んでいくと色々とややこしいです。どんなパターンで発生しているかとか再現性を確認するのも一苦労です。

2019年12月20日補足:

その後も色々と試したのですが100%大丈夫と言う方法は見つかりませんでした。ウェブのブログとかを調べて何度かプロジェクトを作成して進めたのですが。ここら辺は汎用的な統合環境の問題なのかなと思います。まあ、一度コミットしてしまえば次回からは同じエラーで警告が出ることがありません。コミット時に警告が出る→クラスが見えていない→補完である程度解決という感じです。

以下参考にしたサイトのURLを上げます。