VSCode拡張でsqlfluffを使ってfixできるようにする


はじめに

SQL Linterの「sqlfluff」というものがあります。
プログラムのLintは、極力システムに任せるようにしてしまいたい。
sqlfluff自体はpythonのライブラリですが、VSCodeの拡張もあって、VSCode上で
動作させることが可能です。ただ、この拡張がいまいちかゆいところに手が届かない感じでして、
Lintはできるがfixができない。なのでfixできるようにしてみました。

sqlfluffのVSCode拡張について

まず、sqlfluffのVSCode拡張はMarketPlaceにあります。

ですが、ここからインストールしてはいけません!
Marketplaceで配布されているバージョンは古くて、fixする設定が入っていません。
Githubのvscode-sqlfluffにはfixする処理が入っているのでこちらを使います。

導入手順

  1. githubからfix対応バージョンをclone
  2. ローカルでvscode用パッケージ作成
  3. VSCodeにインストール
  4. VSCode設定
  5. 実行

githubからfix対応バージョンをclone

前述したvscode-sqlfluffは最新のsqlfluffに対応できていなかったので、
私のほうでforkして修正したものを使ってください。こちらで動作します。

ローカルでvscode用パッケージ作成

cloneしたソースコードを使ってVSCode用のパッケージを作成します。
パッケージ作成にはnode.jsの下記ライブラリが必要です。

  • tsc
  • vsce
bash
npm i tsc -g
npm i vsce -g

上記完了したらcloneしたフォルダのルートで下記にてパッケージ作成します。

bash
# install from package.json
npm i

# create vscode package
vsce package

成功すると、vscode-sqlfluff-0.0.4.vsix というファイルが作成されます。

VSCodeにインストール

VSCodeからコマンドパレットを開いて、Extensions:Install from VSIX を実行。
VSIXファイルを選択するダイアログが開くので、前ステップで作成したファイルを選びます。
インストール成功のダイアログが表示されれば完了です。

VSCode設定

VSCodeからコマンドパレットを開いて、「setting」と入力して設定ファイルを開きます。
検索で「sqlfluff」と入力すると、sqlfluff拡張の設定画面が表示されるので、
そこで Whether the document formatter is enabled or notという項目があるので、
チェックをいれておきます。これでfix処理が可能になります。

実行

VSCodeにsqlfluffを入れた時点でlintは効くようになっています。
右クリックで「ドキュメントのフォーマット」を実行すると、今開いているファイルのfixが行われます。

さいごに

Githubに上がっているソースコードが少し古いので、調整が必要でした。
READMEにもありますが、VSCode拡張でのfix処理は内部で下記コマンドが実行されています。

sqlfluff fix --force <path>

というコマンドが行われています。
sqlfluff自体の使い方については公式ドキュメントに詳しいのでそちら参考ください。

それでは!
enjoy!