Vimのsyntastic はVim内でコードチェッカーを走らせて 引っかかった部分を表示してくれるプラグインです。
ちょっとシェルスクリプトを書いている時に 無視したいwarningが頻発していたので これを無視できる様にチェッカーに引数を渡す設定をしました。
syntastic
syntasticを入れておくと 書いてあるファイルタイプに応じて シンタックスチェッカーを走らせて エラーなどを表示してくれます。
チェッカーは一つの言語についていくつか設定することも出来て、 もしそのチェッカーがない場合には無視されます。
ここを見るとどの言語でどのチェッカーが指定されているか分かります。
\ 'sh': ['sh', 'shellcheck'],
という指定で、sh
は使用中のshell(bash, zsh, etc…)に応じて
そのシェルを使った簡単なチェックで、
もう一つshellcheck
が指定されています。
チェッカーを変えたい場合には.vimrcで
let g:syntastic_sh_checkers = ['checkbashisms']
の様にg:syntastic_<filetype>_checkers
と言う値にチェッカーを
配列で指定してあげればOK。
以下にはC++/Java用に行ったsyntasticの設定があります。
shellcheck on syntastic
shellcheck
については
下に詳しく説明があります。
これを導入していればshellcheck
も走ります。
このチェックで良く出るけど無視したいのが
- Can’t follow non-constant source. Use a directive to specify location. [SC1090]
source $file
みたいにファイルを変数にしてsource
しようとすると出る。普通に使う。
- Don’t use variables in the printf format string. Use printf “..%s..” “$foo”. [SC2059]
printf $val
みたいに一つの変数だけをprintf
したい時にも出る。これで%s
を使うのは冗長。(ならecho
を使うべき?)
- Declare and assign separately to avoid masking return values. [SC2155]
export xxx=$(comamnd)
みたいにすると出る。2行に分けてxxx=$(command);export xxx
しろということだがチェックが必要なものだけにしたい。
-
Use ‘cd … exit’ or ‘cd … return’ in case cd fails. [SC2164] - すべての
cd
の所で出る。冗長かな、と。
- すべての
辺り。
いずれもエラーではなくウォーニングなのでエラーだけ出すような設定にする事も可能ですが、 他のウォーニングは結構役に立つのでこれらの必要ないものだけを消したいと思います。
必要の無いチェックを入れていると必要なチェックがあっても気づきづらくなるので 無視することも重要。
shellcheck
では-e
に続いて上のメッセージの最後に出てくる
番号を与えるとそれを無視してくれます。(複数の場合は,
でつなげる)
これをsyntasticに渡すには
let g:syntastic_sh_shellcheck_args = "-e SC1090,SC2059,SC2155,SC2164"
の様にg:syntastic_<filetype>_<checker>_args
と言う値に引数を渡してあげます。
これで上記のウォーニングは無視されるので 必要なメッセージだけが表示される様になります。