yu-tarrrrの日記

完全に個人の趣味でその時々書きたいことを書く

Elixirでテストファイルとの行き来を楽にする

はじめに

  • 今回はtips的な記事です

背景

  • Elixirを書いているときにテストファイルと実行ファイルの行き来に困っていました
  • JavaとかKotlinを書いていたときはIntelliJ IDEAがいい感じにやってくれていた分、Elixirはエディタがなんでも良い分そこら辺を拡張で頑張る必要があるなと思い探していました

これと出会う

marketplace.visualstudio.com

  • 求めていた感じの拡張
  • READMEを見ただけでこれだと思い早速使ってみます

使ってみる

  • VSCodeのPluginからインストールする
  • 検索窓からalternate fileで検索すると引っかかるので、それをインストールすれば終了(必要に応じてVSCodeの再起動をしてください)
  • その後、プロジェクトのルートディレクトリに .projections.jsonを作成します(下記な感じで検索→作成とすれば雛形は作ってくれます) f:id:yu-tarrrr:20200909084415p:plain

-中身はこんな感じ

{
  "apps/**/lib/**/*.ex": {
    "alternate": "apps/{dirname}/test/{dirname}/{basename}_test.exs"
  },
  "apps/**/lib/*.ex": {
    "alternate": "apps/{dirname}/test/{basename}_test.exs"
  }
}
  • ここでアプリケーションコードとテストコードの対応性を書いておけば、拡張側で対応してると認識してくれるので、移動が可能になります。
  • ここのディレクトリ構造は一定自由に設定できるのですが、一定ルールを決めておいた方が管理は楽になると思います。 (例えば、テストコード側は/test以下を全部フラットにしてるのに、アプリケーション側はlib以下にディレクトリを切ると、ここのjsonで対応性を頑張らないといけなくなります。そんなことをするくらいならディレクトリ構造を見直してしまって、test以下とlib以下のディレクトリ構造は一致させるようにするのがいいのかなと思いました)

拡張でできること

  • 以下READMEから抜粋ですが、非常にシンプルでファイルの切り替えと作成。それを画面分割して開くか開かないか。それだけです。
Alternate File - Switch to the alternate file (if found) in the current pane
Alternate File in Split - Switch to the alternate file (if found) in a split pane
Create Alternate File - Switch to the alternate file (if found) in the current pane. If not found, create the file.
Create Alternate File in Split - Switch to the alternate file (if found) in a split pane. If not found, create the file.
  • 上記のアクションは拡張がインストールされれば、下記の感じでサジェストされるようになります

f:id:yu-tarrrr:20200909085457p:plain

  • あとは、ショートカットの設定しておけば、シームレスに移動ができるようになります。
  • 個人的には、Alternatte fileとCreate Alternate Fileを同じショートカットに設定しておくと、ファイルがあれば移動できるしなければ作成するというような挙動をしてくれるので非常におすすめです。