2010/09/06

Closure Linter で日本語読点を認識させる

プログラムを書く際に lint は非常に役立つツールです。

今まで JavaScript を書く際には JSLintを使っていましたが、開発の都合でClosure Linterへ乗り換えてみました。

Closure Linterは機能豊富なツールで、例えば JSDoc の行末が読点で終わっていない場合などに警告を出してくれます。ただ、残念ながら日本語の読点(「。」)を読点として認識してくれません。

他の方の対応を探してみましたが、うまく見つけられなかった為、既に多くの方々が作られているであろうことを承知で、インチキ1行パッチを置いておきます。Python Script の文字コードと、JSファイルの文字コードが UTF-8 であることを仮定しています。public domainです。

本当はスクリプトファイルの言語情報を認識するなどすれば素敵なのでしょうが、私はPythonが苦手なので当面これで凌ごうと思います。

--- closure_linter-2.2.4-ORIG/closure_linter/ecmalintrules.py
+++ closure_linter-2.2.4-ja/closure_linter/ecmalintrules.py
@@ -535,7 +535,7 @@
               end_string = htmlutil.StripTags(end_token.string).rstrip()
 
           if not (end_string.endswith('.') or end_string.endswith('?') or
-              end_string.endswith('!')):
+              end_string.endswith('!') or end_string.endswith('。')):
             # Find the position for the missing punctuation, inside of any html
             # tags.
             end_position = None

2 件のコメント:

  1. 遅ればせながら、私はこちらで逃げました。
    # --nojsdocの意味合いが変わるので、駄目なんですけど。(^^;

    --- ecmalintrules.py.orig 2010-12-15 17:07:43.000000000 +0900
    +++ ecmalintrules.py 2010-12-16 09:35:38.000000000 +0900
    @@ -539,7 +539,7 @@
    end_string = htmlutil.StripTags(end_token.string).rstrip()

    if not (end_string.endswith('.') or end_string.endswith('?') or
    - end_string.endswith('!')):
    + end_string.endswith('!')) and FLAGS.jsdoc:
    # Find the position for the missing punctuation, inside of any html
    # tags.
    desc_str = end_token.string.rstrip()

    返信削除
  2. @nori0428 さん、コメントありがとうございます。
    日本語の場合、特に箇条書きなどは句点を付けないことも多いので、
    いっその事、この割り切りも良いかもしれませんね。
    どうもありがとうございました。

    返信削除