カテゴリーアーカイブ PhpStorm

著者:杉浦

【PhpStorm】PhpStormで重複コードを抽出する

 とりあえずざっと書いて後からリファクタするというコーディング方法があります。このコーディング方法においてリファクタの際には見通しをよくするほか、コピペした部分などの重複したコードをまとめる作業もよくやります。PhpStormにはこの重複コードをまとめる作業の精度を上げる機能があります。
 次の画像にある重複の分析を選ぶとPhpStormはコードを解析しコードの重複を見つけ出します。

 見つけられた重複は次の様にコードが表示されます。この画面から直すべき重複が分かります。コストは複雑さと量によって計算されています。余り軽いとまとめる程でもないことがしばしば現れます。閾値は個々の調整に依りそうです。
重複の分析 – 公式ヘルプ | PhpStorm

 対象の重複範囲を選択し図の様にリファクタリング→メソッドの抽出を選びます。すると関数のオプションを決める画面が現れます。
メソッドの抽出 – 公式ヘルプ | PhpStorm


 この関数オプションを決定した後にリファクタリングを実行すると、次の画像らの様に関数にまとめられます。


 このまとめられた関数の配置をそのままなり、traitなり、他クラスなり、親クラスにして他の重複部分から呼び出すことによって重複コードのリファクタリングが成ります。重複が同ファイル内にあるならばPhpStormがよしなにまとめてくれます。

  • この記事いいね! (0)
著者:杉浦

【PhpStorm】PhpStormでpre-commitのGitフック

 Gitには元よりGitのある動作をした時に自動で動作するスクリプトを埋め込むことができます。このスクリプト機能をGitフックと呼びます。
Git – Git フック
 これだけでも便利なのですが権限であったり、環境変数がまっさらな状態で呼び出されたり、スクリプトをGitに含められなかったり、スクリプトを書く時にプロジェクトにしていたソースコードのルートとGitのルートが違っていたりで少々面倒が起きたりします。PhpStormにはコミット前Gitフックの機能が入っています。これを使うとプロジェクトに属したGitフックを作ることが出来ます。
 ここからGitフックの入れ方、使い方の説明です。
 まず次の画像の様に設定->プラグインからPre Commit Hook Pluginをインストールします。これはPhpStormを作っている会社であるJetBrains製で気が付いたら既に入っているタイプのプラグインです。

Pre Commit Hook Plugin – Plugins | JetBrains
 インストールが完了したら再び設定からツール->Pre Commit Hookを選び、対象のスクリプトパスを設定します。Gitフックと違ってパスも環境変数も自由です。もちろんスクリプトがエラーを吐けばコミットに待ったをかけてくれます。

 せっかくプロジェクトに含められるのですからスクリプトもなるべく楽をしようと思います。自分が使っているスクリプトが次です。

npm run pre-commit

 npmに全任せです。package.jsonには次の4行が含まれており、php-cs-fixerによるPHPの自動修正、ESLintのfixオプションによるJavaScriptの自動修正、duskによる自動ブラウザテストが走る様になっています。

    "php-cs-fix": "vendor\\bin\\php-cs-fixer fix -v",
    "eslint": "./node_modules/.bin/eslint resources/**/*.{js,vue} --fix",
    "browser-test": "php artisan dusk",
    "pre-commit": "npm-run-all eslint php-cs-fix browser-test"

 思いつきですがGitフックもスクリプトからpythonとかのインタプリタ言語を動かせば結構自由そうです。ググればありそう。

  • この記事いいね! (0)
著者:杉浦

PhpStormで提案された検査の修正をまとめて適用する

 PhpStormにはファイルの中を検査して動作しないと思われる記述や非推奨の記述をエラーや警告といった形で伝えてくれる機能があります。この機能は便利な拡張も出回っています。
Php Inspections (EA Extended) – Plugins | JetBrains
 この検査結果は新たなルールを導入すると大量に現れがちです。しかも直し方が画一的なものも多く、まともにこつこつ一つずつ直していくととても面倒です。次図は全く警告のなかったコードに上の拡張を入れた直後のものです。

 この画像の中で特に面倒なのはメソッド名についている波線の警告の”返り値の型を宣言するべき”です。今までPHPDocに書いてあれば十分としてなっていましたが、上の拡張ではより安全にできるのにしていないのは十分警告の対象とのことです。各メソッドにつきいちいち記述していく手間はかけられません。PhpStormの機能でまとめて修正します。
 まずコード→コードのインスペクションないしAlt+Shift+Iでインスペクションをまとめて下のボックスに表示させます。

 次いで一種類のインスペクション内容になるまで展開して、赤丸の電球ボタンを押すだけで自動で修正がかかります。

 あっという間によりきれいで安全なコードになりました。あとはテストにかけて問題が出ていないことを確認か問題の修正をすればきれいで安全で十分な機能を持ったコードになります。

  • この記事いいね! (0)
著者:杉浦

PhpStormのダイアグラム機能によるクラス図自動生成

 コードを読む時、しばしばクラス間の関係が記述されたクラス図が欲しくなる時があります。あると大変助かるのですが、大体そういったドキュメントはありません。PhpStormにはダイアグラム機能がついており、これはクラス図を始めとしたいくつかの図を自動生成する機能です。
ダイアグラムの操作 – 公式ヘルプ | PhpStorm
例えば、Laravelのソースコードの一部であるHTTPフォルダ以下のクラス図は次の様になります。

 図の矢印の意味は、矢印元は矢印先を参照して作られています、というもので、互いの依存関係を表しています。青の濃い矢印は直接の継承、緑の破線矢印はインタフェースの実装、白の破線ひし形矢印はトレイトの包含です。ただファイルを見るだけでは結構な量があり全貌をつかむまで時間がかかりがちですが、これならばすぐわかります。次の図はクラス図にしたHTTPフォルダ以下のフォルダ構造の木です。気持ち程度しか関係性が読み取れません。

 クラス図の例はPHPでしたが次の様にデータベース、JavaScriptなどにも対応しており、レイアウトのテンプレートも様々です。

  • この記事いいね! (0)
著者:杉浦

PhpStormの何でも屋コマンドAlt+Enter

インテンション・アクション – 公式ヘルプ | PhpStorm
 自分が使っているIDEのPhpStormにはAlt+Enterというとりあえず使おうという意味合いのショートカットキーがあります。Alt+Enterコマンドはカーソルを合わせた場所に合わせた何でも屋の様なコマンドです。操作名はインテンション・アクション、公式の説明はPhpStormの提案を実行する、ととてもふんわりしています。インテンション・アクションはふんわりとした分様々なことを行ってくれます。
 Alt+Enterから実際よく使う動作としてスペルミス、インポート、PHPDoc補完があります。波線が現れたらとりあえずAlt+Enterしてみるぐらいでちょうどいい塩梅で、PhpStormがかくあるべしというコードを教えてくれます。



 PhpStormという名前ですが縁があるくらいの他言語、例えばSQLのコマンドでも同じように有効です。識別子で修飾はスキーマ名やテーブル名を修飾してくれます。

 

  • この記事いいね! (0)