yaakaito.org

CoffeeLintの設定をやってみるなど

CoffeeScript

こんにちは!うきょーです! CoffeeLintの設定をしてプロジェクトに幸せをもたらそう(コーディング規約にそってないプルリクはリジェクト)としてちょっと調べてみたのでメモ。

コンフィグファイルを作る

公式サイトいわく

1
$ coffeelint --makeconfig

すると設定ファイルのテンプレが作れるらしい!やってみよう!

1
2
3
4
5
6
7
8
9
10
11
12
13
$ coffeelint --makeconfig
Usage: coffeelint [options] source [...]

Options:
  -f, --file     Specify a custom configuration file.             
  -h, --help     Print help information.                          
  -v, --version  Print current version number.                    
  -r             Recursively lint .coffee files in subdirectories.  [boolean]
  --csv          Use the csv reporter.                              [boolean]
  --jslint       Use the JSLint XML reporter.                       [boolean]
  --nocolor      Don't colorize the output                          [boolean]
  -s, --stdin    Lint the source from stdin                         [boolean]
  -q, --quiet    Only print errors.                                 [boolean]

やったーそんなコマンドないよーーーーーー^ー^ 5.5(2013.03.02~)かららしいです

1
2
3
$ npm search coffeelint
// ...
coffeelint  Lint your CoffeeScript  =clutchski =thomas.frossman 2012-11-30 ...

やったーアップデートされてないよーーーーー^ー^

しょうがないのでlinkします

1
2
3
$ git clone git://github.com/clutchski/coffeelint.git .coffeelint
$ cd .coffeelint
$ npm link
1
2
$ coffeelint -v
0.5.4

やったー5.4だよーーーーー^ー^

1
2
3
4
5
6
7
8
9
10
11
12
13
$ coffeelint --makeconfig
{
    "no_tabs": {
        "level": "error"
    },
    "no_trailing_whitespace": {
        "level": "error"
    },
    "max_line_length": {
        "value": 80,
        "level": "error"
    },
    // ....

でもでたよやったーーーーーー^ー^ バージョンあげてーーーー^ー^

書いてみた

どうやら差分だけ書けば良さげなので、こんな感じで

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "max_line_length" : {
    "value": 79,
    "level" : "error"
  },
 
  "indentation" : {
    "value" : 4,
    "level" : "error"
  },
 
  "no_implicit_parens" : {
    "level" : "error"
  },
 
  "no_plusplus" : {
    "level" : "error"
  },
 
  "no_stand_alone_at" : {
    "level" : "error"
  }
 
}

設定項目は公式サイトに書いてあるのでそちらを参考にしていただきたく。 けど、何個か動いてないのとおかしい気がするよ!!!

軽く書いておくと

  • max_line_length : 一行の文字数で、デフォルトは80だけど、79にしました。まあこれは好みの問題ですね。

  • indentation : 2だと見難い場面が多いので僕は最近4にしてます。

  • no_implicit_parens : 関数呼び出すときとかに()を省略できなくする。0個のときはどうせ必要だし、僕はある方にそろえるのが好きですかね。 BDD系のフレームワーク使うときはこれが邪魔なので、テストだけ別にしてますというかテストは別にlint通してないですね。

  • no_plusplus : ++-- を無効にする。あんまり好きではない。

  • no_stand_alone_at : 関数とかに f @ みたいに渡せないようにする。暗黙のリターンも同じ

とりあえずこんな感じ。

実行

1
$ coffeelint -f config.json hoge.coffee

暗黙のりたーん

なんで暗黙のreturnを無効にするオプションがないのかよくわからないですね。 暗黙のreturn使いたくない人なので、これ設定できるようにしてほしいとお願いしてみる。

あとno-try-catchとかもほしいですね。 なにやらCoffeeScriptのtryは、tryだけ書くと

1
2
try
    hoge()

これが

1
2
3
try {
    hoge()
} catch() {}

となるようです。ナイスキャッチ! (- o ^)b