CoffeeScriptやJavascriptで、console.logをminify時に消し去る&消し忘れテストコードに気付く方法


半分ネタです

シェルスクリプトかまして消すと良いよ、がまあかなり良好な解ですが、それだとconsole.logの前後にテストコードがあった時、そして、それをif DEBUG?とかで囲むのを忘れていた時、気付くチャンスを逃してしまいます。

たぶん世の中で良く行われているものとしては、if DEBUG?節でテストコードを囲んで、minify時に --define DEBUG=null を付けるというのがあるかと思いますが、落とし穴があるよということです。

DEBUG=nullで消えるのは、あくまで「if DEBUG?節を付け忘れなかった場合」です。

そこで併用をお勧めしたいのがconsole=nullをやってしまうことです。

uglifyjs test.js -m -c -d console=null,DEBUG=null

こんな感じ。DEBUGの影響下に無いテストコードが残ってしまっていたら、そこにはたいていconsoleのメソッドが使われているはずですので、これでエラーが引き起こせます。minify後に、エラーのみを指摘してくれるquietモードのあるlintを通すとかすれば、null.log を指摘してくれるでしょう。実行時エラーではあるけど、スクリプトのパーズ時にもうエラーが発生するから、拾いようはいくらだってありますよね。

誰かがwindow.console使ってたら? すみません、それはもう一工夫要りますね。

誰かがwindow['console']使ってたら? それ、悪意あるだろ! しばくといいですよ。