9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Php Inspections EA Extended 3.0.9/Ultimate 2.0.11の新機能

Posted at

Php Inspections (EA Extended)Php Inspections (EA Ultimate)はPhpStormのInspection(コード検査)機能をさらに強力なものに拡張してくれるプラグインです。無償で使えるのがEA Extendedで、それに更に検査ルールを加えたハイエンドの有償版がEA Ultimateです。

本稿では、そのEA Extended 3.0.9(11月30日リリース)、EA Ultimate 2.0.10(12月3日リリース)に追加された新たなチェックツールを紹介します。

EA Extended/EA Ultimate共通の新機能

重複した配列のキー(Duplicate array keys)

配列定義で重複したキーを報告します。配列宣言に同じキーを使用した複数の要素がある場合、最後のものだけが使用され、他のすべての要素は上書きされてしまうからです。

php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

疑わしいバイナリオペレーション(Suspicious binary operations)

この検査は様々なケースについて報告します。例えば、traitに対するinstanceof演算子の使用。これは常にfalseが返ります。

php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

代入するつもりなのに、比較演算子==が使われている場合。

php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

誤って同じ変数同士を比較している場合。常にtrueになるバグです。

php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

演算子の評価順の関係上、常にtrueになってしまう式。

php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

EA Ultimate限定の新機能

不要な空のチェック(Unnecessary emptiness check)

isset(...)empty(...)の問題点とより単純な書き方を報告します。

Banners_and_Alerts_and_php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

コンストラクタはインターフェイスに依存しよう(Interfaces as constructor dependencies)

コンストラクタに注入されるオブジェクトの型がインターフェイスでない場合に報告します。次の例は、Connectionインターフェイスがあるのに、具象クラスのMySqlConnectionを注入しています。テスタビリティを考えると、具象よりもインターフェイスに依存したほうがいいはずです。

Banners_and_Alerts_and_php___Volumes_dev_php__-___Library_Preferences_PhpStorm2018_3_scratches_scratch_php.png

なお、インターフェイスを実装していない具象クラスの注入は無視するオプションもあります。

テストしずらいAPI(Testing unfriendly APIs)

設定したしきい値を超えてモックをたくさん持っているテストケースについて報告します。複雑なモッキングは、設計の筋の悪さや単体テストの学習コストの増加、テストの保守性の低下などの問題があることの現れです。モックがnewで暗黙的に作られる場合や、setConstructorArgs([...])で呼び出されるものはカウントされません。

Banners_and_Alerts_and_php___Volumes_dev_php__-_____packages_our-activity-qiita-org-stats_tests_FooTest_php__php_.png
9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?