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と言う値に引数を渡してあげます。
これで上記のウォーニングは無視されるので 必要なメッセージだけが表示される様になります。
