素のJavaScriptが書きづらいと感じる方は少なくありません。波括弧や普通の括弧が多く、読みづらいと感じてしまいます。そんな中作られたのが代替言語のCoffeeScriptです。CoffeeScriptは変換用のコマンドを介して素のJavaScriptになります。CoffeeScript自体はRubyやPythonから学び取った点の多い、可読性の高いシンプルな構文となっています。
CoffeeLintはそんなCoffeeScriptの静的解析ツールです。CoffeeScriptは書きやすくなったとは言え、やはり解析器を使うと多数の指摘が上がってくるはずです。
CoffeeLintのインストール
CoffeeLintのインストールはnpmコマンドで行います。
$ npm install coffeelint -g
CoffeeLintの使い方
使い方は簡単で、 coffeelint
コマンドに続けてCoffeeScriptプロジェクトのパス(ディレクトリ、ファイルどちらも可)を指定します。実行すると下記のように指摘事項が出力されます。
$ coffeelint /path/to/coffeescript/project ✓ calc-test.coffee ✗ calc.coffee ✗ #10: Throwing strings is forbidden. ✗ chartController.coffee ✗ #16: Line ends with trailing whitespace. ✗ controller/own_controller.coffee ✗ #2: Line contains inconsistent indentation. Expected 2 got 1. ✗ #2: Line contains tab indentation. ✗ #2: Line ends with trailing whitespace. ✗ #15: Line contains tab indentation. ✗ #28: Line contains tab indentation.
後はこの指摘事項に沿って修正していくだけです。CoffeeLintでは問題のないファイルに✓マークが付くので、作業している感があります。
$ coffeelint . ✓ calc-test.coffee ✓ calc.coffee ✓ chartController.coffee ✓ controller/own_controller.coffee ✓ db.coffee
設定ファイルを作成する
設定ファイルは coffeelint.json
というファイルになります。ここにJSONで設定を記述していくのですが、イチから作るのは大変です。そこで --makeconfig
を使ってベースを生成できます。
$ coffeelint --makeconfig > coffeelint.json
設定ファイルの内容、指摘事項などは CoffeeLint – Lint your CoffeeScript を参考にしてください。
カスタムルールの適用
CoffeeLintでは自分でルールを追加できます。 coffeelintrule – npm search で見ると、執筆時点で50以上のルールが作られています。これらのルールは coffeelint.json
の中でmoduleとして指定できます(なおSideCIではmoduleには未対応です)。
例えば下記は最初に改行がない場合は警告とする newline_at_eof
というルールを追加し、その際のモジュールとして coffeelint-newline-at-eof
を追加する場合の設定方法です。
{ "newline_at_eof": { "module": "coffeelint-newline-at-eof", "level": "warn" } }
オプションについて
主なオプションについて紹介します。 出力フォーマットを変える時には --reporter
オプションを使います。例えば checkstyle
とすると結果を CheckStyle 形式で出力します。
$ coffeelint --reporter=checkstyle . <?xml version="1.0" encoding="utf-8"?> <checkstyle version="4.3"> <file name="descriptor.coffee"> <error line="2" severity="error" message="Line contains a trailing semicolon; context: " source="coffeelint"/> </file> </checkstyle>
csv
を指定するとCSVで出力されます。
$ coffeelint --reporter csv . path,lineNumber,lineNumberEnd,level,message descriptor.coffee,2,,error,Line contains a trailing semicolon hello.coffee,2,,error,Line ends with trailing whitespace
--quiet
オプションを指定すると問題のないファイルについては何も出力せず、エラーのみ表示されるようになります。
CoffeeScriptはシンプルな構文ですが、一行が長かったり、空白の使い方など他のプログラミング言語と変わらない記述ミスがあるものです。そういった指摘事項を修正することでコードの品質を上げられるようになります。
SideCIはCoffeeScriptに対応しています。CoffeeScriptを使ったプロジェクトに対してぜひCoffeeLintを使ってコードレビューを実施してください。複数人での開発であれば特にコードレビューを行うことによるメリットは強く感じてもらえるはずです。