shokaimochaでtestを書く時にitという関数を使うのだが、ifと書き間違えている事に気づかず30分ぐらいハマった。前にも同じ事があったのに30分かかったので、この調子だと何度でもハマる自信がある。itがifでも文法エラーが起こらないし、そのテストコードの部分が実行されないだけなので気づかない。シンタックスハイライトされてても文字の色で判別なんて人間には不可能。間違え探しみたいなデバッグをしたくないからテスト書くのに、そのテスト自体が間違え探しなのはどうなのと思う。細かく考えるとif文に定数を渡せるのがおかしいカンマ演算子の存在自体が悪いitって関数名どうなのそもそもtestの中でif文なんて必要ないというのがある。eslint-if-in-test作ったテストコードの中でif文を使う理由が思いつかないので、ESLintでなんとかする事にした。ESLintはプラグインを簡単に自作できるのですぐできた。https://www.npmjs.com/package/eslint-plugin-if-in-testdescribe()の中でif文を使っていたら警告してくれる他のソリューションeslint-if-in-test作っている時にESLint自体のテストがうまく書けなくてtwitterで愚痴っていたら色々教えてもらえた。ESLintには既に色々プラグインがある。no-constant-conditionはif文に定数渡したら警告してくれるので良いなと思った。いうかこっちで十分だと思う。ESLintのruleを作るESLintのruleの作り方を調べたのでメモしておく。ドキュメントを読んでいくとruleの作り方というのがあるんだけど、ESLintのソースコードの中のlibの下にファイル作ってねとか言われる。pluginの作り方の方を見たほうが良さそう。ESLintのpluginを作るpluginの中にruleをまとめて、npmとして公開できる。yeomanにテンプレートがある。iテンプレができる最終的にこうなった。test_if.js罠もあった。作られたテンプレのpackage.jsonで指定されているESLintが1.2.0と古い物なので最新(1.10)に直した。npmの呼び出し方が間違ってて動かないので自分でrequireした。この辺は後でプルリクしたい。pluginにRuleを書くESLintはJavaScriptを解析してAST(抽象構文木)を作って、それを解析して警告などを出す。ASTのnodeのtypeをruleで指定しておくとそれを受け取れるので、適当に解析してエラーがあったらreportを返せばいい。explorerでもみれる。対象ファイルがtestディレクトリの中にあるかをcontextで確認して、if文があったらcontext.reportするようにした。}];ESLintが出すnodeの種類はestree/spec.mdにリストがある。実装サイズの小さそうなpluginをnpmjs.comで探して参考にもした。lodashをrequireする時にlodash全体を読み込んでいたら警告するのとかhttps://github.com/eslint-plugins/eslint-plugin-lodash/blob/master/src/rules/import.jsconsole.logを使っていたら警告とかhttps://github.com/joeybaker/eslint-plugin-no-console-log/blob/master/lib/rules/no-console-log.jspluginを動かす作ったpluginが動くかどうかは、mochaでテスト書いてる適当なアプリの中にインストールすればいい。開発中のnpmを読み込む場合はnode_modules/内にシンボリックリンク貼るといい。linkを使っても良さそうだけどやったことない。module.exports.schemaで指定したオプションで、test/をdirectoryとして渡す。}}if-in-testのルールを読み込んでlintできる。test/*.jsdescribeの中のif文のみ警告するもっとまともに書く。itはdescribeの中でしか使わない。walkして出る時に拾える事を知った。nodeへの出入りをカウントする事でとても簡単にifがdescribeの中にあるかどうか判定できた。}];最初はnode.parentを辿って確認してたんだけど、カウントする方が楽だったのでやめた。Ruleのtestを書くルールのテストも書ける。tests/lib/rules/test_*.jsTesterにfilenameを渡せる事を教えてもらえてテストが実現できた。ファイル名を渡すことができます。shokai新横浜は新幹線が止まるしイベント施設が複数あるので、土日はなんらかの目的をもって訪れる人が多いみたいでニコニコ笑顔の人が多くて良い。そのかわりイベントの入場前・退場後の時間帯は強烈に混雑して駅に入れなくなる事がまれによくある。botにイベント情報を喋らせることにした。毎朝ツイートするので危険を察知できる。そのうち混雑度を算出する機能も追加したい。