rcmdnk's blog

Syntax: An Introduction

Vimのsyntastic はVim内でコードチェッカーを走らせて 引っかかった部分を表示してくれるプラグインです。

ちょっとシェルスクリプトを書いている時に 無視したいwarningが頻発していたので これを無視できる様にチェッカーに引数を渡す設定をしました。

syntastic

syntasticを入れておくと 書いてあるファイルタイプに応じて シンタックスチェッカーを走らせて エラーなどを表示してくれます。

チェッカーは一つの言語についていくつか設定することも出来て、 もしそのチェッカーがない場合には無視されます。

syntastic/registry.vim at master · vim-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と言う値に引数を渡してあげます。

これで上記のウォーニングは無視されるので 必要なメッセージだけが表示される様になります。

Sponsored Links
Sponsored Links

« Gmailで最初からラベルを全て展開して表示する設定 Homebrew 1.2.0リリース »

}