VimでJavaScriptのシンタックスチェックをしたい
プラグイン導入
_vimrcを修正
NeoBundle 'scrooloose/syntastic'
Syntasticの設定
_vimrcを修正
let g:syntastic_check_on_open = 0 "ファイルオープン時にはチェックをしない
let g:syntastic_check_on_save = 1 "ファイル保存時にはチェックを実施
" jshint 設定ファイルの場所を指定
let g:syntastic_javascript_jshint_conf = $HOME . '/.jshintrc'
4行目のjshint設定ファイルの場所を指定しなかったがために、エラーにあって困った。。
ここでちゃんと指定してれば、以下は起きないハズなので読まなくてOKです。。
発生したこと
適当に書いたJavaScriptファイルで動作確認しようとしたら、こんなエラー
Checker javascript/jshint returned abnormal status
なんか動いてないっぽい。。
jshintのインストール確認
npm install jshint --global
jshint 設定ファイル
ホームディレクトリ以下に、.jshintrcを作る。
{
"indent" : 2, // インデント
"camelcase":true, // キャメルケース
"maxlen" : 80, // 一行の最大文字数
"unused" : true, // 宣言のみで使用していない変数を検出
"eqeqeq":true, // ==、!=の使用禁止
"undef" : true, // グローバル変数へのアクセスを禁止
"devel" : true, // console、alertを許可
"globals": {
"$": false,
"jQuery": false
}
}
以前作っていたファイルが、地味にJSONの文法エラーで更にハマる。。
.jshintrcの文法確認
コンソールからちゃんと動くかやってみる。
jshint --config %HOME%\.jshintrc test.js
↓こんなんでで来る場合は、JSON文法エラー
ERROR: Can't parse config your_config_file_path_here
↓ちゃんとチェックしてくれたらOK
test.js: line 3, col 8, Creating global 'for' variable. Should be 'for (var key ...'.
test.js: line 3, col 15, 'options' is not defined.
test.js: line 4, col 17, 'options' is not defined.
test.js: line 4, col 25, 'key' is not defined.
4 errors
errorsって言われてもなんか嬉しいww
Syntasticをデバッグモードにしてもっと情報をもらう
再びvimにて。。
ノーマルモードから、syntasticの設定をセット。
テストしたいJSファイルを保存するとチェックが走る。
<ESC>
let g:syntastic_debug=3
:w
ここで設定ファイルが読み込めてない的なエラーを発見。
参考URL:Checker javascript/jshint returned abnormal status · Issue #1029 · scrooloose/syntastic
唯一これしかヒットしなくて、英語だし、長いし・・ひぇ~と思ってたんだけど、
下の方でキレ気味に
「いいからlet g:syntastic_javascript_jshint_conf = $HOME . '/.jshintrc'
やれよ。」
って記述がビンゴでした。
ありがとう。