Closure Linterのチェックを通るようなコードを維持しているとJavaScriptコードの品質を上げることができます。JSDocの記述について厳しくチェックしてくれるのでClosure Compilerとの相性もばっちりです。
しかし、Closure Linterはなぜかコードの一行が最大80文字になるルールを解除することができません。ネームスペース+クラス名+prototype+メソッド名で80文字超えちゃうこともよくあるため途方に暮れることがよくあります。何で80文字という制限をClosure Linterの中にハードコーディングしちゃったんですかね…。
下記の記事によると80文字ルールを無視するようなClosure Linterのラッパーを作れば良いらしいです。
というわけでWindows環境上でのClosure Linterの80文字制限ルールを無視するラッパーをつくてみます。
WindowsにClosure LinterをインストールするとC:\Python27\Scriptsフォルダは以下のような感じのファイル構成になっていると思います。
最初にC:\Python27\Scriptsにmyerrorrules.pyファイルを作成して以下のようなコードを記述します。
from closure_linter import errors from closure_linter import errorrules OriginalShouldReportError = None def InjectErrorReporter(): global OriginalShouldReportError OriginalShouldReportError = errorrules.ShouldReportError errorrules.ShouldReportError = MyShouldReportError def MyShouldReportError(error): global OriginalShouldReportError return error not in ( errors.LINE_TOO_LONG, ) and OriginalShouldReportError(error)
次にgjslint-script.pyファイルが既に存在しているはずなので、gjslint-script.pyを以下のように書き換えます。
#!C:\Python27\python.exe # EASY-INSTALL-ENTRY-SCRIPT: 'closure-linter==2.3.9','console_scripts','gjslint' __requires__ = 'closure-linter==2.3.9' import sys from pkg_resources import load_entry_point # comment out #sys.exit( # load_entry_point('closure-linter==2.3.9', 'console_scripts', 'gjslint')() #) # add code from closure_linter import gjslint import myerrorrules if __name__ == '__main__': myerrorrules.InjectErrorReporter() gjslint.main()
これで作業は完了です。
普通にコマンドラインから
gjslint -r path/to/my/directory
のように使用してもいいですし、WebStormなどのIDEと連携しても良いかと思います。
ちなみに私のgjslint.confは
--strict --jsdoc
こんな感じです。strictモードも慣れると苦にならなくなりますね。