はじめに
SQL Linterの「sqlfluff」というものがあります。
プログラムのLintは、極力システムに任せるようにしてしまいたい。
sqlfluff自体はpythonのライブラリですが、VSCodeの拡張もあって、VSCode上で
動作させることが可能です。ただ、この拡張がいまいちかゆいところに手が届かない感じでして、
Lintはできるがfixができない。なのでfixできるようにしてみました。
sqlfluffのVSCode拡張について
まず、sqlfluffのVSCode拡張はMarketPlaceにあります。
ですが、ここからインストールしてはいけません!
Marketplaceで配布されているバージョンは古くて、fixする設定が入っていません。
Githubのvscode-sqlfluffにはfixする処理が入っているのでこちらを使います。
導入手順
- githubからfix対応バージョンをclone
- ローカルでvscode用パッケージ作成
- VSCodeにインストール
- VSCode設定
- 実行
githubからfix対応バージョンをclone
前述したvscode-sqlfluffは最新のsqlfluffに対応できていなかったので、
私のほうでforkして修正したものを使ってください。こちらで動作します。
ローカルでvscode用パッケージ作成
cloneしたソースコードを使ってVSCode用のパッケージを作成します。
パッケージ作成にはnode.jsの下記ライブラリが必要です。
- tsc
- vsce
npm i tsc -g
npm i vsce -g
上記完了したらcloneしたフォルダのルートで下記にてパッケージ作成します。
# 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!