SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



CoffeeScriptのコードを静的解析器のCoffeeLintにレビューしてもらおう

素の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を使ってコードレビューを実施してください。複数人での開発であれば特にコードレビューを行うことによるメリットは強く感じてもらえるはずです。

SideCI - 綺麗なコードと文化を作るコードレビューのためのCI