概要
みなさんは Lint ツールをつかてソースコードをチェックしていますでしょうか?
おそらく大多数の方が、ソースコードについては Lint ツールを使っていると思いますが、SQL 文においても同様に Lint ツールを使用していますでしょうか?
私は SQL 文については Lint をかけるということはしていませんでしたし、Lint ツールがあることも知りませんでした。。
そもそも Lint ツールとはソースコードの記述をさまざまなルールに照らし合わせながら検証できる静的チェックツールのことで、セキュリティ上の欠陥に繋がりかねない些細な処理パターンを検出したり事前にバグにつながりそうな箇所を示してくれるものです。
参考:コーディングが完了、それからするべき10のこと(前)- COMUTERWORLD
自分としては、アプリとしてソースを書いている場合は予期せぬバグなどが起こりうるため Lint を積極的に活用していましたが、SQL に関しては動けば良し、としていたためあまり Lint を当てるということはしていませんでした。
しかし今回 GitHub を漁っていたところ OSS で SQL を Lint してくれるツールがあったので、今回はこちらをご紹介したいと思います。
今回紹介する OSS は、SQL を Lint してくれるツール「SQLFluff」になります。
SQLFLuff とは Fishtown Analytics 社が作成した SQL Lint ツールで、多人数での SQL メンテナンスを実行してく際にとても役立つツールの一つです。
それでは早速使い方などについてみていきましょう!
利用手順
SQLFluff は Python 3系で以下のコマンドよりインストールします。
pip install sqlfluff
使用感
それでは実際に SQLFluff を使ってみましょう。
以下のように SQL コードを test.sql
に記述して Lint をしてみましょう。
$ pip install sqlfluff $ echo " SELECT a + b FROM tbl; " > test.sql $ sqlfluff lint test.sql --dialect ansi == [test.sql] FAIL L: 1 | P: 1 | L050 | Files must not begin with newlines or whitespace. L: 1 | P: 3 | L003 | First line has unexpected indent L: 1 | P: 11 | L039 | Unnecessary whitespace found. L: 1 | P: 14 | L039 | Unnecessary whitespace found. L: 1 | P: 27 | L001 | Unnecessary trailing whitespace.
L:
は行数、P:
は何文字目かを示しています。
また、LXXX
はルール番号を示しており、どのようなルール違反をしているのかを示しています(SQLFluff ルール)。
ここでは README.md で紹介されている SQL について Lint してみた結果を紹介しましたが、より詳細について知りたい場合は以下のドキュメントを参照していただければと思います。
まとめ
SQL を Lint するツール「SQLFluff」を紹介しました。
SQL 文を Lint する方は自分含めあまり多くはないとは思いますが、今後大多数のメンバーで SQL 文を使って開発する際は必要になってくると思います。
SQL 文を使って開発をされている方はぜひ一度、こちらの OSS「SQLFluff」を参考にしてみてはいかがでしょうか。